elixir-plug/plug

Compose web applications with functions

View on GitHub ↗Jump to charts ↓Open shareable report →

elixir-plug/plug has 3k+ stars and 600+ forks on GitHub, is written in Elixir, and was last pushed on Oct 15, 2026. Data as of . Signed-in members get hourly updates — create a free account.

Summary Information

Updated 24 minutes ago
Added to GitGenius on September 23rd, 2026
Created on November 15th, 2013
Open Issues & Pull Requests: 5 (+0)
GitHub issues: Enabled
Number of forks: 607
Total Stargazers: 3,019 (+0)
Total Subscribers: 85 (+0)

Repository Insights (GitGenius)

Median issue/PR response: 0.7 hours
Mean response time: 13.7 hours
90th percentile: 24.0 hours
Tracked items: 22

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 2
New in 7 days: 2
Closed in 7 days: 2
Avg open age: 102 days
Stale 30+ days: 1
Stale 90+ days: 1

Recent activity

Opened in 7 days: 2
Closed in 7 days: 2
Comments in 7 days: 3
Events in 7 days: 11

Top labels

No label distribution available yet.

Most active issues this week

Sign in to see which issues are moving.
Sign in

Detailed Description

Plug is a specification and set of connection adapters for composing web applications with functions in the Erlang VM.

Plug solves the problem of building modular web applications by providing a standard interface for handling HTTP requests and responses. It works by defining plugs—either module plugs with `init/1` and `call/2` functions or function plugs that take a connection and options—that transform a `Plug.Conn` struct representing the request-response cycle. These plugs can be composed together into pipelines, allowing developers to build web applications from small, reusable pieces. Plug also abstracts away differences between web servers by providing connection adapters for different Erlang VM-based servers, so the same application code can run on multiple backends.

Plug is suited for developers building web applications in Elixir who want a lightweight, composable foundation. It is particularly valuable if you need flexibility in choosing your web server, as it supports both Cowboy (Erlang-based) and Bandit (Elixir-based) through separate packages. The tool is widely used by higher-level frameworks like Phoenix to manage requests, responses, and WebSockets, making it a good choice if you want either a minimal foundation for custom applications or compatibility with the broader Elixir web ecosystem. Plug includes built-in features such as a router for defining routes and a connection upgrade API for WebSocket support, reducing the need for external dependencies in many cases.

The project maintains active development with regular updates to core functionality. The codebase shows ongoing refinement of the plug composition model and connection handling. Work continues on expanding adapter support and ensuring compatibility across different web server implementations. The project demonstrates sustained attention to both the specification layer and practical server integration concerns.