# ninenines/cowboy

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/ninenines-cowboy).**

7,510 stars · 1,169 forks · Erlang · ISC

## Links

- GitHub: https://github.com/ninenines/cowboy
- Homepage: https://ninenines.eu
- awesome-repositories: https://awesome-repositories.com/repository/ninenines-cowboy.md

## Description

Cowboy is a high-performance HTTP server for Erlang and OTP. It is designed to handle web traffic with low memory usage and can be used as a standalone server or as an embedded networking library integrated directly into an existing application.

The project implements modern transport protocols, including HTTP/3, QUIC, and WebTransport, to enable faster connections and bidirectional data streaming. It also functions as a real-time communication server supporting Server-Sent Events for pushing asynchronous updates to clients.

Broad capabilities include path and content-type based request routing, static asset hosting with directory listings, and multipart file upload handling. The server provides security and traffic management through SSL/TLS encryption, basic authentication, cookie management, response body compression, and chunked transfer encoding.

## Tags

### Programming Languages & Runtimes

- [Web Servers](https://awesome-repositories.com/f/programming-languages-runtimes/programming-language-varieties/programming-languages/functional-languages/erlang/web-servers.md) — Provides a high-performance HTTP server specifically designed for the Erlang and OTP ecosystem.

### Networking & Communication

- [Full-Duplex HTTP Communication](https://awesome-repositories.com/f/networking-communication/full-duplex-http-communication.md) — Supports simultaneous bidirectional data exchange over HTTP for real-time communication. ([source](https://github.com/ninenines/cowboy/tree/master/examples))
- [HTTP/3 Implementations](https://awesome-repositories.com/f/networking-communication/http-3-implementations.md) — Implements HTTP/3 and QUIC to enable faster connections and bidirectional data streaming.
- [QUIC Implementations](https://awesome-repositories.com/f/networking-communication/network-transport-protocols/quic-implementations.md) — Provides a full implementation of the QUIC transport protocol to support HTTP/3 and reduce connection latency.
- [Real-time Communication Servers](https://awesome-repositories.com/f/networking-communication/real-time-communication-servers.md) — Provides a high-performance server designed for live messaging and bidirectional data streams.
- [Embedded Network Stacks](https://awesome-repositories.com/f/networking-communication/virtual-private-networks/embedded-network-stacks.md) — Integrates HTTP server capabilities directly into Erlang applications to avoid managing separate processes.
- [Real-Time Data Streams](https://awesome-repositories.com/f/networking-communication/real-time-data-streams.md) — Supports real-time data streaming via Server-Sent Events and persistent network connections.
- [Server-Sent Events](https://awesome-repositories.com/f/networking-communication/server-sent-events.md) — Implements the Server-Sent Events protocol to push asynchronous real-time updates to clients. ([source](https://github.com/ninenines/cowboy/tree/master/examples))
- [Socket Networking](https://awesome-repositories.com/f/networking-communication/socket-networking.md) — Manages low-level network connections using the Erlang OTP socket interface for high-concurrency handling.

### Web Development

- [HTTP Request Handling](https://awesome-repositories.com/f/web-development/backend-development/request-response-handling/http-request-handling.md) — Processes incoming web traffic using a low-latency, memory-efficient HTTP stack. ([source](https://github.com/ninenines/cowboy#readme))
- [Embedded Web Servers](https://awesome-repositories.com/f/web-development/embedded-web-servers.md) — Can be integrated directly into an existing application process as an embedded networking library. ([source](https://github.com/ninenines/cowboy#readme))
- [High-Performance HTTP Servers](https://awesome-repositories.com/f/web-development/high-performance-http-servers.md) — Provides a high-performance HTTP server optimized for low memory usage and high throughput.
- [Request Routing](https://awesome-repositories.com/f/web-development/request-routing.md) — Implements request routing by matching paths and HTTP methods against defined rules. ([source](https://github.com/ninenines/cowboy/blob/master/README.asciidoc))
- [Route Handlers](https://awesome-repositories.com/f/web-development/route-handlers.md) — Provides a mechanism for mapping incoming HTTP requests to specific backend handler functions. ([source](https://github.com/ninenines/cowboy#readme))
- [Content-Type Based Routing](https://awesome-repositories.com/f/web-development/request-routing/intent-based-routing/content-type-based-routing.md) — Hono returns different data formats such as HTML or JSON by inspecting request headers to meet specific client requirements. ([source](https://github.com/ninenines/cowboy/tree/master/examples))
- [Static File Servers](https://awesome-repositories.com/f/web-development/static-file-servers.md) — Ships a built-in system for hosting static assets and generating directory listings over HTTP.
- [Web API Frameworks](https://awesome-repositories.com/f/web-development/web-api-frameworks.md) — Enables web API development with path and method-based routing for JSON and HTML responses.
- [Static Asset Serving](https://awesome-repositories.com/f/web-development/web-infrastructure-deployment/web-server-capabilities/static-asset-serving.md) — Delivers static files from the local filesystem and generates directory listings for client browsing. ([source](https://github.com/ninenines/cowboy/tree/master/examples))

### Security & Cryptography

- [SSL/TLS Connection Security](https://awesome-repositories.com/f/security-cryptography/ssl-tls-connection-security.md) — Encrypts traffic between the client and server using SSL/TLS to ensure data privacy and integrity. ([source](https://github.com/ninenines/cowboy/tree/master/examples))

### Software Engineering & Architecture

- [Process Models](https://awesome-repositories.com/f/software-engineering-architecture/process-models.md) — Employs a process-per-connection model using lightweight Erlang processes to ensure request isolation and fault tolerance.

### Part of an Awesome List

- [API Frameworks](https://awesome-repositories.com/f/awesome-lists/devtools/api-frameworks.md) — A small, fast, modular HTTP server for Erlang.
- [Language Toolkits](https://awesome-repositories.com/f/awesome-lists/devtools/language-toolkits.md) — Small, fast HTTP server for Erlang.
- [Web Frameworks](https://awesome-repositories.com/f/awesome-lists/devtools/web-frameworks.md) — High-performance, small, and modular HTTP server.
