caddyserver/caddy

Fast and extensible multi-platform HTTP/1-2-3 web server with automatic HTTPS

View on GitHub ↗Jump to charts ↓Open shareable report

Summary Information

Updated 26 minutes ago
Added to GitGenius on June 21st, 2026
Created on January 13th, 2015
Open Issues & Pull Requests: 289 (+0)
GitHub issues: Enabled
Number of forks: 4,977
Total Stargazers: 75,874 (-1)
Total Subscribers: 865 (+0)

Repository Insights (GitGenius)

Median issue/PR response: 1.7 hours
Mean response time: 7.4 days
90th percentile: 3.2 days
Tracked items: 894

How this project is maintained

Practically every issue opened in the past year has drawn a reply. 90% of open issues come from outside the core team, so the backlog reflects real-world use rather than internal planning. 47% of tracked open issues have had no activity in three months. 82% of issues opened in the past year have been closed, leaving a working backlog. Three people close 78% of everything that gets resolved.

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 167
New in 7 days: 5
Closed in 7 days: 6
Avg open age: 546 days
Stale 30+ days: 136
Stale 90+ days: 122

Recent activity

Opened in 7 days: 4
Closed in 7 days: 4
Comments in 7 days: 15
Events in 7 days: 36

Top labels

  • bug :lady_beetle: (146)
  • question :grey_question: (127)
  • feature :gear: (99)
  • discussion :speech_balloon: (68)
  • needs info :mailbox_with_no_mail: (58)
  • help wanted :sos: (50)
  • invalid :question: (37)
  • upstream :arrow_up: (31)

Detailed Description

Caddy is a fast and extensible HTTP/1.1, HTTP/2, and HTTP/3 web server written in Go that prioritizes automatic HTTPS as a core feature. The project is classified as a web server, reverse proxy, and TLS automation platform with capabilities spanning static file serving, load balancing, and security-focused operations. It runs on multiple platforms with no external dependencies beyond the Go runtime itself.

The project's contributor base overlaps with major repositories including microsoft/vscode, rust-lang/rust, and microsoft/typescript, indicating its influence within the broader developer ecosystem.

Caddy's defining characteristic is its automatic HTTPS implementation, which uses TLS by default for all connections. The server integrates with ZeroSSL and Let's Encrypt for public domain names while maintaining a fully-managed local certificate authority for internal names and IP addresses. It supports multi-issuer fallback and encrypted ClientHello functionality, designed to remain operational when other servers fail due to TLS, OCSP, or certificate-related issues. The platform has proven production-ready after serving trillions of requests and managing millions of TLS certificates at scale, supporting hundreds of thousands of sites simultaneously.

Configuration flexibility distinguishes Caddy from traditional web servers. While JSON serves as the native configuration language, the system supports multiple formats through config adapters including Caddyfile, JSON5, YAML, TOML, and NGINX configuration syntax. The JSON API enables dynamic configuration changes without server restarts, and the command-line interface accommodates both file-based and API-driven approaches. Nearly all configuration consolidates into a single document rather than scattering across CLI flags, environment variables, and separate files as with competing servers.

The architecture emphasizes extensibility through a modular plugin system. Caddy apps are implemented as Go modules that automatically benefit from automated documentation generation, graceful online configuration updates via API, and integration with other Caddy apps. The two standard apps, tls and http, ship with the core distribution. This design exposes an unprecedented level of control compared to other web servers, allowing users to set actual values of initialized types powering HTTP handlers, TLS handshakes, and storage mechanisms.

The project requires Go 1.25.0 or newer for building from source. Development builds can be created directly, though proper version information embedding requires the xcaddy builder tool. The repository provides straightforward installation through GitHub Releases with cross-platform binary distribution. Documentation is comprehensive and available at caddyserver.com, including getting started guides, quick-start tutorials, and complete API reference material. The platform is described as production-ready and suitable for any long-running Go program, not merely HTTPS serving.