{"id":43263873,"url":"https://github.com/omalloc/tavern","last_synced_at":"2026-02-01T15:03:09.396Z","repository":{"id":327215175,"uuid":"1100358690","full_name":"omalloc/tavern","owner":"omalloc","description":"🚀 A high-performance CDN caching engine written in Go, designed for ultra-low latency content delivery and multi-level cache eviction strategies.","archived":false,"fork":false,"pushed_at":"2026-01-30T12:11:59.000Z","size":5786,"stargazers_count":12,"open_issues_count":1,"forks_count":3,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-31T05:17:56.882Z","etag":null,"topics":["caching","cdn","go","http","http-cache","http-proxy"],"latest_commit_sha":null,"homepage":"https://tavern.omalloc.com","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/omalloc.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-11-20T07:13:58.000Z","updated_at":"2026-01-30T12:12:03.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/omalloc/tavern","commit_stats":null,"previous_names":["omalloc/tavern"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/omalloc/tavern","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/omalloc%2Ftavern","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/omalloc%2Ftavern/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/omalloc%2Ftavern/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/omalloc%2Ftavern/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/omalloc","download_url":"https://codeload.github.com/omalloc/tavern/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/omalloc%2Ftavern/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28980855,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-01T13:38:33.235Z","status":"ssl_error","status_checked_at":"2026-02-01T13:38:32.912Z","response_time":56,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["caching","cdn","go","http","http-cache","http-proxy"],"created_at":"2026-02-01T15:02:34.807Z","updated_at":"2026-02-01T15:03:09.390Z","avatar_url":"https://github.com/omalloc.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003eTavern\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\u003ca href=\"https://tavern.omalloc.com/\" target=\"_blank\"\u003e\u003cimg src=\"https://www.omalloc.com/app_banner.webp?raw=true\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n\u003ca href=\"https://github.com/omalloc/tavern/actions\"\u003e\u003cimg src=\"https://github.com/omalloc/tavern/actions/workflows/go.yml/badge.svg?branch=main\" alt=\"Build Status\"\u003e\u003c/a\u003e\n\u003ca href=\"https://pkg.go.dev/github.com/omalloc/tavern\"\u003e\u003cimg src=\"https://pkg.go.dev/badge/github.com/omalloc/tavern\" alt=\"GoDoc\"\u003e\u003c/a\u003e\n\u003ca href=\"https://codecov.io/gh/omalloc/tavern\"\u003e\u003cimg src=\"https://codecov.io/gh/omalloc/tavern/master/graph/badge.svg\" alt=\"codeCov\"\u003e\u003c/a\u003e\n\u003ca href=\"https://goreportcard.com/report/github.com/omalloc/tavern\"\u003e\u003cimg src=\"https://goreportcard.com/badge/github.com/omalloc/tavern\" alt=\"Report Card\"\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/omalloc/tavern/blob/main/LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/github/license/omalloc/tavern\" alt=\"License\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\" x-desc=\"Sponsor\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\" x-desc=\"desc\"\u003e\nTavern is a high-performance HTTP caching proxy server implemented in Go. It leverages a modern service framework to deliver a flexible architecture, strong extensibility, and excellent performance.\n\u003c/p\u003e\n\nOther languages: [简体中文](README.zh-CN.md)\n\n## ✨ Features\n\n- **Core Caching Capabilities**:\n  - [x] Prefetch\n  - [x] Cache Push (URL/DIR Push)\n    - [x] URL mark expired\n    - [x] URL cache file delete\n    - [x] DIR mark expired\n    - [x] DIR cache file delete\n  - [x] Fuzzy refresh (Fuzzing fetch)\n  - [x] Auto refresh\n  - [x] Cache validation\n  - [ ] Hot migration\n  - [ ] Warm/cold split\n  - [x] Upstream collapse request (request coalescing)\n  - [ ] ~~Image compression adaptation (WebP support)~~\n  - [x] Vary-based versioned cache (Vary cache)\n  - [x] Headers rewrite\n  - [x] Multiple Range requests support\n  - [x] CacheFile verification (CRC checksum / EdgeMode)\n- **Modern Architecture**:\n  - Built on the **Kratos** framework for high extensibility and module reuse\n  - **Plugin System**: Extend core business logic via plugins\n  - **Storage Layer**: Decoupled storage backend with memory, disk, and custom implementations\n- **Reliability \u0026 Operations**:\n  - **Graceful Upgrade**: Zero-downtime config reload and binary upgrade\n  - **Failure Recovery**: Built-in panic recovery and error handling\n  - **Observability**: Native Prometheus metrics and PProf profiling\n- **Traffic Control**:\n  - Header rewrite (Rewrite)\n  - Upstream load balancing (via custom Selector)\n\n## Ecosystem\n\n- Cache CRC verification service: [CRC-Center](https://github.com/omalloc/trust-receive)\n\n\n## 🚀 Quick Start\n\n### Requirements\n\n- Go 1.24+\n- Linux/macOS (Graceful restart may be limited on Windows)\n\n### 1. Fetch \u0026 Configure\n\nClone the repository and prepare the configuration file:\n\n```bash\ngit clone https://github.com/omalloc/tavern.git\ncd tavern\n\n# Initialize with example configuration\ncp config.example.yaml config.yaml\n```\n\n### 2. Run the Service\n\n**Development mode:**\n\n```bash\n# Loads config.yaml from the current directory by default\ngo run main.go\n```\n\n**Build and run:**\n\n```bash\nmake build\n./bin/tavern -c config.yaml\n```\n\n### 3. Debugging \u0026 Monitoring\n\nOnce started, you can monitor and debug using the following (ports depend on `config.yaml`):\n\n- **Metrics**: Access `/metrics` for Prometheus metrics (default prefix `tr_tavern_`)\n- **PProf**: When debug mode is enabled, visit `/debug/pprof/` for profiling\n\n## 🧩 Project Structure\n\n- `api/`: Protocol and interface definitions\n- `conf/`: Configuration definitions and parsing\n- `plugin/`: Plugin interfaces and implementations\n- `proxy/`: Core proxy and forwarding logic\n- `server/`: HTTP server implementation and middleware\n- `storage/`: Storage engine abstractions and implementations\n\n## 📚 Documentation\n\n- PURGE design and operations: [docs/purge.md](docs/purge.md)\n\n## 📝 License\n\n[MIT License](LICENSE)\n\n## 🙏 Acknowledgments\n\nThis project integrates and is inspired by the following excellent open-source projects. Many thanks:\n\n- **[Kratos](https://github.com/go-kratos/kratos)**: A powerful microservice framework that inspired Tavern's modern architecture.\n- **[Pebble](https://github.com/cockroachdb/pebble)**: A high-performance key-value store by CockroachDB, powering efficient persistent caching.\n- **[tableflip](https://github.com/cloudflare/tableflip)**: Cloudflare's graceful upgrade solution enabling zero-downtime restarts.\n- **[Prometheus Go Client](https://github.com/prometheus/client_golang)**: Strong observability support for metrics.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fomalloc%2Ftavern","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fomalloc%2Ftavern","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fomalloc%2Ftavern/lists"}