{"id":43676161,"url":"https://github.com/barbacane-dev/barbacane","last_synced_at":"2026-03-13T10:05:24.045Z","repository":{"id":336276832,"uuid":"1144492164","full_name":"barbacane-dev/barbacane","owner":"barbacane-dev","description":"Barbacane mono repo","archived":false,"fork":false,"pushed_at":"2026-03-11T20:42:59.000Z","size":4064,"stargazers_count":22,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-03-11T21:54:25.630Z","etag":null,"topics":["api","asyncapi","gateway","openapi3","rust","wasm"],"latest_commit_sha":null,"homepage":"https://barbacane.dev/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/barbacane-dev.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":".github/SECURITY.md","support":null,"governance":null,"roadmap":"ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-28T18:28:20.000Z","updated_at":"2026-03-11T16:31:31.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/barbacane-dev/barbacane","commit_stats":null,"previous_names":["barbacane-dev/barbacane"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/barbacane-dev/barbacane","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/barbacane-dev%2Fbarbacane","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/barbacane-dev%2Fbarbacane/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/barbacane-dev%2Fbarbacane/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/barbacane-dev%2Fbarbacane/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/barbacane-dev","download_url":"https://codeload.github.com/barbacane-dev/barbacane/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/barbacane-dev%2Fbarbacane/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30464988,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-13T06:34:02.089Z","status":"ssl_error","status_checked_at":"2026-03-13T06:33:49.182Z","response_time":60,"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":["api","asyncapi","gateway","openapi3","rust","wasm"],"created_at":"2026-02-05T01:02:29.060Z","updated_at":"2026-03-13T10:05:24.036Z","avatar_url":"https://github.com/barbacane-dev.png","language":"Rust","funding_links":[],"categories":["Quick Comparison"],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/img/barbacane_logo_transparent_bg.png\" alt=\"Barbacane\" width=\"200\"\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eBarbacane\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\u003ci\u003eYour spec is your gateway.\u003c/i\u003e\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/barbacane-dev/barbacane/actions/workflows/ci.yml\"\u003e\u003cimg src=\"https://github.com/barbacane-dev/barbacane/actions/workflows/ci.yml/badge.svg\" alt=\"CI\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://docs.barbacane.dev\"\u003e\u003cimg src=\"https://img.shields.io/badge/docs-docs.barbacane.dev-blue\" alt=\"Documentation\"\u003e\u003c/a\u003e\n  \u003cimg src=\"https://img.shields.io/badge/unit%20tests-399%20passing-brightgreen\" alt=\"Unit Tests\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/plugin%20tests-649%20passing-brightgreen\" alt=\"Plugin Tests\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/integration%20tests-192%20passing-brightgreen\" alt=\"Integration Tests\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/cli%20tests-16%20passing-brightgreen\" alt=\"CLI Tests\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/ui%20tests-44%20passing-brightgreen\" alt=\"UI Tests\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/e2e%20tests-11%20passing-brightgreen\" alt=\"E2E Tests\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/rust-1.75%2B-orange\" alt=\"Rust Version\"\u003e\n  \u003ca href=\"LICENSING.md\"\u003e\u003cimg src=\"https://img.shields.io/badge/license-AGPLv3-blue\" alt=\"License\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n---\n\nBarbacane is a spec-driven API gateway built in Rust. Point it at an OpenAPI or AsyncAPI spec and it becomes your gateway — routing, validation, authentication, and all. No proprietary config language, no drift between your spec and your infrastructure.\n\n- **Spec as config** — Your OpenAPI 3.x or AsyncAPI 3.x specification is the single source of truth. No separate gateway DSL to maintain.\n- **Fast and predictable** — Built on Rust, Tokio, and Hyper. No garbage collector, no latency surprises.\n- **Secure by default** — Memory-safe runtime, TLS via Rustls, sandboxed WASM plugins, secrets never baked into artifacts.\n- **Edge-ready** — Stateless data plane instances designed to run close to your users, with a separate control plane handling compilation and distribution.\n- **Extensible** — Write plugins in any language that compiles to WebAssembly. They run in a sandbox, so a buggy plugin can't take down the gateway.\n- **Observable** — Prometheus metrics, structured JSON logging, and distributed tracing with W3C Trace Context and OTLP export.\n\n## Quick Start\n\n```bash\n# Clone and build\ngit clone https://github.com/barbacane-dev/barbacane.git\ncd barbacane\ncargo build --release\n\n# Compile your OpenAPI spec\n./target/release/barbacane compile --spec api.yaml --manifest barbacane.yaml --output api.bca\n\n# Run the gateway\n./target/release/barbacane serve --artifact api.bca --listen 0.0.0.0:8080\n```\n\n## Documentation\n\nFull documentation is available at **[docs.barbacane.dev](https://docs.barbacane.dev)**.\n\n- [Getting Started](https://docs.barbacane.dev/guide/getting-started.html) — First steps with Barbacane\n- [Spec Configuration](https://docs.barbacane.dev/guide/spec-configuration.html) — Configure routing and middleware\n- [Middlewares](https://docs.barbacane.dev/guide/middlewares.html) — Authentication, rate limiting, caching\n- [Dispatchers](https://docs.barbacane.dev/guide/dispatchers.html) — Route requests to backends\n- [Control Plane](https://docs.barbacane.dev/guide/control-plane.html) — REST API for spec and artifact management\n- [Web UI](https://docs.barbacane.dev/guide/web-ui.html) — Web-based management interface\n- [Plugin Development](https://docs.barbacane.dev/contributing/plugins.html) — Build custom WASM plugins\n- [Development Guide](https://docs.barbacane.dev/contributing/development.html) — Setup and contribute\n\n## Playground\n\nTry Barbacane locally with the full-featured playground — now in its own repo:\n\n```bash\ngit clone https://github.com/barbacane-dev/playground\ncd playground\ndocker-compose up -d\n\n# Gateway: http://localhost:8080\n# Grafana: http://localhost:3000 (admin/admin)\n# Control Plane: http://localhost:3001\n```\n\nThe playground includes a Train Travel API demo with WireMock backend, full observability stack (Prometheus, Loki, Tempo, Grafana), and the control plane UI. See [barbacane-dev/playground](https://github.com/barbacane-dev/playground) for details.\n\n## Official Plugins\n\n| Plugin | Type | Description |\n|--------|------|-------------|\n| `http-upstream` | Dispatcher | Reverse proxy to HTTP/HTTPS backends |\n| `mock` | Dispatcher | Return static responses |\n| `lambda` | Dispatcher | Invoke AWS Lambda functions |\n| `kafka` | Dispatcher | Publish messages to Kafka |\n| `nats` | Dispatcher | Publish messages to NATS |\n| `s3` | Dispatcher | Proxy requests to AWS S3 / S3-compatible storage with SigV4 signing |\n| `ai-proxy` | Dispatcher | Unified LLM routing to OpenAI, Anthropic, and Ollama with provider fallback |\n| `ws-upstream` | Dispatcher | WebSocket transparent proxy with full middleware chain on upgrade |\n| `jwt-auth` | Middleware | JWT token validation |\n| `apikey-auth` | Middleware | API key authentication |\n| `basic-auth` | Middleware | HTTP Basic authentication (RFC 7617) |\n| `oauth2-auth` | Middleware | OAuth2 token introspection |\n| `oidc-auth` | Middleware | OpenID Connect (OIDC) authentication |\n| `acl` | Middleware | Consumer-based access control lists |\n| `opa-authz` | Middleware | Open Policy Agent authorization |\n| `cel` | Middleware | Inline CEL expression policy evaluation |\n| `rate-limit` | Middleware | Sliding window rate limiting |\n| `cache` | Middleware | Response caching |\n| `cors` | Middleware | CORS header management |\n| `correlation-id` | Middleware | Request correlation ID propagation |\n| `request-size-limit` | Middleware | Request body size limits |\n| `ip-restriction` | Middleware | IP allowlist/blocklist |\n| `bot-detection` | Middleware | Block bots by User-Agent pattern |\n| `request-transformer` | Middleware | Modify headers, query params, path, and body before upstream |\n| `response-transformer` | Middleware | Modify status code, headers, and body before client |\n| `observability` | Middleware | SLO monitoring and detailed logging |\n| `http-log` | Middleware | Send request/response logs to HTTP endpoint |\n\n## Performance\n\nBenchmark results on Apple M4 (MacBook Air 16GB):\n\n**Routing \u0026 Validation**\n\n| Operation | Latency |\n|-----------|---------|\n| Route lookup (1000 routes) | ~83 ns |\n| Request validation (full) | ~1.2 µs |\n| Body validation (JSON) | ~458 ns |\n| Router build (500 routes) | ~130 µs |\n\n**WASM Plugin Runtime**\n\n| Operation | Latency |\n|-----------|---------|\n| Module compilation | ~210 µs |\n| Instance creation | ~17 µs |\n| Middleware chain (1 plugin) | ~261 µs |\n| Middleware chain (3 plugins) | ~941 µs |\n| Middleware chain (5 plugins) | ~1.32 ms |\n| Memory write (1 KB) | ~14 ns |\n| Memory write (100 KB) | ~1.4 µs |\n\n**Serialization**\n\n| Operation | Latency |\n|-----------|---------|\n| Request (minimal) | ~118 ns |\n| Request (full, 1 KB body) | ~921 ns |\n| Response (1 KB body) | ~417 ns |\n\n**Spec Compilation**\n\n| Operation | Latency |\n|-----------|---------|\n| Compile 10 operations | ~550 µs |\n| Compile 50 operations | ~2.17 ms |\n| Compile 100 operations | ~3.72 ms |\n\nRun your own benchmarks:\n\n```bash\ncargo bench --workspace\n```\n\n## Project Status\n\nBarbacane is under active development. See [ROADMAP.md](ROADMAP.md) for the roadmap and [CHANGELOG.md](CHANGELOG.md) for release history.\n\n## Contributing\n\nContributions are welcome! Please read [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.\n\n## License\n\nDual-licensed under AGPLv3 and a commercial license. See [LICENSING.md](LICENSING.md) for details.\n\n## Trademark\n\nBarbacane is a trademark. The software is open source; the brand is not. See [TRADEMARKS.md](TRADEMARKS.md) for usage guidelines.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbarbacane-dev%2Fbarbacane","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbarbacane-dev%2Fbarbacane","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbarbacane-dev%2Fbarbacane/lists"}