{"id":38971641,"url":"https://github.com/fast-gateway-protocol/daemon","last_synced_at":"2026-01-17T16:39:22.229Z","repository":{"id":332280199,"uuid":"1133254938","full_name":"fast-gateway-protocol/daemon","owner":"fast-gateway-protocol","description":"Rust SDK for building FGP-compliant daemons","archived":false,"fork":false,"pushed_at":"2026-01-15T05:59:57.000Z","size":55,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-01-15T07:56:54.676Z","etag":null,"topics":["ai-agents","daemon","fast-gateway-protocol","fgp","mcp-alternative","rust","sdk","unix-socket"],"latest_commit_sha":null,"homepage":null,"language":"Rust","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/fast-gateway-protocol.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":"2026-01-13T05:09:24.000Z","updated_at":"2026-01-15T06:00:01.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/fast-gateway-protocol/daemon","commit_stats":null,"previous_names":["wolfiesch/fgp-daemon","fast-gateway-protocol/daemon"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/fast-gateway-protocol/daemon","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fast-gateway-protocol%2Fdaemon","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fast-gateway-protocol%2Fdaemon/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fast-gateway-protocol%2Fdaemon/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fast-gateway-protocol%2Fdaemon/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fast-gateway-protocol","download_url":"https://codeload.github.com/fast-gateway-protocol/daemon/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fast-gateway-protocol%2Fdaemon/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28511868,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T13:38:16.342Z","status":"ssl_error","status_checked_at":"2026-01-17T13:37:44.060Z","response_time":85,"last_error":"SSL_read: 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":["ai-agents","daemon","fast-gateway-protocol","fgp","mcp-alternative","rust","sdk","unix-socket"],"created_at":"2026-01-17T16:39:22.108Z","updated_at":"2026-01-17T16:39:22.207Z","avatar_url":"https://github.com/fast-gateway-protocol.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# FGP - Fast Gateway Protocol\n\n**Daemon-based architecture for AI agent tools. 19x faster than MCP stdio.**\n\nFGP replaces slow MCP stdio servers with persistent UNIX socket daemons. Instead of spawning a new process for each tool call (~2.3s overhead), FGP keeps daemons warm and ready (~10-50ms latency).\n\n## Performance\n\n### Browser Automation (vs Playwright MCP)\n\n| Operation | FGP Browser | Playwright MCP | Speedup |\n|-----------|-------------|----------------|---------|\n| Navigate  | **8ms**     | 2,328ms        | **292x** |\n| Snapshot  | **9ms**     | 2,484ms        | **276x** |\n| Screenshot| **30ms**    | 1,635ms        | **54x** |\n\n### Multi-Step Workflow Benchmark\n\n4-step workflow: Navigate → Snapshot → Click → Snapshot\n\n| Tool | Total Time | vs MCP |\n|------|------------|--------|\n| **FGP Browser** | **585ms** | **19x faster** |\n| Vercel agent-browser | 733ms | 15x faster |\n| Playwright MCP | 11,211ms | baseline |\n\n### API Daemons\n\nAll methods tested at **100% success rate** (3 iterations each):\n\n#### Gmail Daemon (PyO3 + Google API)\n\n| Method | Mean | Min | Max | Payload |\n|--------|------|-----|-----|---------|\n| inbox | 881ms | 743ms | 1092ms | 2.4KB |\n| search | 748ms | 680ms | 874ms | 2.4KB |\n| thread | **116ms** | 105ms | 126ms | 795B |\n| unread | 985ms | 916ms | 1047ms | 1.7KB |\n\n#### Calendar Daemon (PyO3 + Google API)\n\n| Method | Mean | Min | Max | Payload |\n|--------|------|-----|-----|---------|\n| today | 315ms | 145ms | 612ms | 48B |\n| upcoming | 241ms | 223ms | 272ms | 444B |\n| search | **177ms** | 136ms | 206ms | 46B |\n| free_slots | 198ms | 145ms | 258ms | 65B |\n\n#### GitHub Daemon (Native Rust + gh CLI)\n\n| Method | Mean | Min | Max | Payload |\n|--------|------|-----|-----|---------|\n| user | 418ms | 307ms | 575ms | 199B |\n| repos | 569ms | 476ms | 665ms | 2.8KB |\n| notifications | 521ms | 512ms | 535ms | 9.8KB |\n| issues | **390ms** | 343ms | 460ms | 75B |\n\n#### Vercel Daemon (Native Rust + REST API)\n\n| Method | Mean | Min | Max | Payload |\n|--------|------|-----|-----|---------|\n| user | 72ms | 54ms | 94ms | 480B |\n| projects | 119ms | 107ms | 138ms | 1.2KB |\n| deployments | **55ms** | 48ms | 65ms | 890B |\n\n#### Neon Daemon (Native Rust + HTTP API)\n\n| Method | Mean | Min | Max | Payload |\n|--------|------|-----|-----|---------|\n| user | **86ms** | 72ms | 105ms | 320B |\n| projects | 154ms | 138ms | 175ms | 1.8KB |\n\n#### Fly.io Daemon (Native Rust + GraphQL)\n\n| Method | Mean | Min | Max | Payload |\n|--------|------|-----|-----|---------|\n| user | **140ms** | 125ms | 162ms | 450B |\n| apps | 251ms | 218ms | 295ms | 2.1KB |\n\n### Summary by Daemon\n\n| Daemon | Avg Latency | Architecture |\n|--------|-------------|--------------|\n| **Vercel** | **82ms** | Native Rust + REST API |\n| **Neon** | **120ms** | Native Rust + HTTP API |\n| **Calendar** | **175ms** | PyO3 + Google API |\n| **Fly** | **191ms** | Native Rust + GraphQL |\n| **GitHub** | **411ms** | Native Rust + gh CLI |\n| **Gmail** | **623ms** | PyO3 + Google API |\n\n**Key insight:** Latency is dominated by external API calls, not FGP overhead (~5-10ms). For MCP, add ~2.3s cold-start to every call.\n\n## Why FGP?\n\nLLM agents make many sequential tool calls. Cold-start overhead compounds:\n\n| Agent Workflow | Tool Calls | MCP Overhead | FGP Overhead | Time Saved |\n|----------------|------------|--------------|--------------|------------|\n| Check email | 2 | 4.6s | 0.02s | **4.6s** |\n| Browse + fill form | 5 | 11.5s | 0.05s | **11.4s** |\n| Full productivity check | 10 | 23s | 0.1s | **22.9s** |\n| Complex agent task | 20 | 46s | 0.2s | **45.8s** |\n\n## Architecture\n\n```\n┌───────────────────────────────────────────────────────────────────────────┐\n│                           AI Agent / Claude                                │\n├───────────────────────────────────────────────────────────────────────────┤\n│                          FGP UNIX Sockets                                  │\n│     ~/.fgp/services/{browser,gmail,calendar,github,fly,neon,vercel}/      │\n├─────────┬─────────┬──────────┬─────────┬───────┬───────┬─────────────────┤\n│ Browser │  Gmail  │ Calendar │ GitHub  │  Fly  │ Neon  │     Vercel      │\n│ Daemon  │ Daemon  │  Daemon  │ Daemon  │Daemon │Daemon │     Daemon      │\n│ (Rust)  │ (PyO3)  │  (PyO3)  │ (Rust)  │(Rust) │(Rust) │     (Rust)      │\n├─────────┴─────────┴──────────┴─────────┴───────┴───────┴─────────────────┤\n│  Chrome  │  Google APIs  │  gh CLI  │  GraphQL  │  HTTP  │  REST API      │\n└───────────────────────────────────────────────────────────────────────────┘\n```\n\n**Key design decisions:**\n- **UNIX sockets** - Zero network overhead, file-based permissions\n- **NDJSON protocol** - Human-readable, streaming-friendly\n- **Per-service daemons** - Independent scaling, fault isolation\n- **Rust core** - Sub-millisecond latency, low memory (~10MB)\n\n## Quick Start\n\n### Browser Daemon\n\n```bash\ncd browser \u0026\u0026 cargo build --release\n\n# Start daemon\n./target/release/browser-gateway start\n\n# Use it\nbrowser-gateway open \"https://example.com\"\nbrowser-gateway snapshot\nbrowser-gateway click \"button#submit\"\nbrowser-gateway screenshot /tmp/page.png\n```\n\n### Gmail Daemon\n\n```bash\ncd gmail \u0026\u0026 cargo build --release\n\n# Start daemon (requires OAuth setup)\n./target/release/fgp-gmail start\n\n# Use it\nfgp call gmail.inbox '{\"limit\": 5}'\nfgp call gmail.search '{\"query\": \"from:important\"}'\n```\n\n### Calendar Daemon\n\n```bash\ncd calendar \u0026\u0026 cargo build --release\n\n# Start daemon\n./target/release/fgp-calendar start\n\n# Use it\nfgp call calendar.today\nfgp call calendar.upcoming '{\"days\": 7}'\nfgp call calendar.free_slots '{\"duration_minutes\": 30}'\n```\n\n### GitHub Daemon\n\n```bash\ncd github \u0026\u0026 cargo build --release\n\n# Start daemon (uses gh CLI auth)\n./target/release/fgp-github start\n\n# Use it\nfgp call github.repos '{\"limit\": 10}'\nfgp call github.issues '{\"repo\": \"owner/repo\"}'\nfgp call github.notifications\n```\n\n### Fly.io Daemon\n\n```bash\ncd fly \u0026\u0026 cargo build --release\n\n# Set your Fly.io token\nexport FLY_ACCESS_TOKEN=\"xxxxx\"\n\n# Start daemon\n./target/release/fgp-fly start\n\n# Use it\nfgp call fly.user\nfgp call fly.apps '{\"limit\": 10}'\nfgp call fly.app_status '{\"app_name\": \"my-app\"}'\n```\n\n### Neon Daemon\n\n```bash\ncd neon \u0026\u0026 cargo build --release\n\n# Set your Neon credentials\nexport NEON_API_KEY=\"neon_api_xxxxx\"\nexport NEON_ORG_ID=\"org-xxxxx\"\n\n# Start daemon\n./target/release/fgp-neon start\n\n# Use it\nfgp call neon.user\nfgp call neon.projects '{\"limit\": 10}'\nfgp call neon.branches '{\"project_id\": \"proj-xxxxx\"}'\n```\n\n### Vercel Daemon\n\n```bash\ncd vercel \u0026\u0026 cargo build --release\n\n# Set your Vercel token\nexport VERCEL_TOKEN=\"xxxxx\"\n\n# Start daemon\n./target/release/fgp-vercel start\n\n# Use it\nfgp call vercel.user\nfgp call vercel.projects '{\"limit\": 10}'\nfgp call vercel.deployments '{\"project_id\": \"my-project\"}'\n```\n\n## FGP Protocol\n\nAll daemons use the same NDJSON-over-UNIX-socket protocol.\n\n**Request:**\n```json\n{\"id\": \"uuid\", \"v\": 1, \"method\": \"service.action\", \"params\": {...}}\n```\n\n**Response:**\n```json\n{\"id\": \"uuid\", \"ok\": true, \"result\": {...}, \"meta\": {\"server_ms\": 12.5}}\n```\n\n**Built-in methods (all daemons):**\n- `health` - Check daemon health\n- `methods` - List available methods\n- `stop` - Graceful shutdown\n\n## Repository Structure\n\n```\nfgp/\n├── daemon/          # Core SDK (Rust) - Build your own FGP daemons\n├── daemon-py/       # Python SDK - For Python-based daemons\n├── protocol/        # FGP protocol specification\n├── cli/             # `fgp` CLI for daemon management\n│\n├── browser/         # Browser automation (Chrome DevTools Protocol)\n├── gmail/           # Gmail daemon (Google API)\n├── calendar/        # Google Calendar daemon\n├── github/          # GitHub daemon (GraphQL + REST)\n├── fly/             # Fly.io daemon (GraphQL API)\n├── neon/            # Neon Postgres daemon (HTTP API)\n└── vercel/          # Vercel daemon (REST API)\n```\n\n## Status\n\n| Component | Status | Performance |\n|-----------|--------|-------------|\n| browser | **Production** | 8ms navigate, 9ms snapshot |\n| vercel | **Production** | 55ms deployments, 82ms avg |\n| neon | **Production** | 86ms user, 120ms avg |\n| fly | **Production** | 140ms user, 191ms avg |\n| calendar | Beta | 177ms search, 175ms avg |\n| github | Beta | 390ms issues, 411ms avg |\n| gmail | Beta | 116ms thread read, 623ms avg |\n| daemon SDK | Stable | Core library |\n| cli | WIP | Daemon management |\n\n## Building a New Daemon\n\n```rust\nuse fgp_daemon::{FgpServer, FgpService};\n\nstruct MyService { /* state */ }\n\nimpl FgpService for MyService {\n    fn name(\u0026self) -\u003e \u0026str { \"my-service\" }\n    fn version(\u0026self) -\u003e \u0026str { \"1.0.0\" }\n\n    fn dispatch(\u0026self, method: \u0026str, params: HashMap\u003cString, Value\u003e) -\u003e Result\u003cValue\u003e {\n        match method {\n            \"my-service.hello\" =\u003e Ok(json!({\"message\": \"Hello!\"})),\n            _ =\u003e bail!(\"Unknown method\"),\n        }\n    }\n}\n\nfn main() {\n    let server = FgpServer::new(MyService::new(), \"~/.fgp/services/my-service/daemon.sock\")?;\n    server.serve()?;\n}\n```\n\n## License\n\nMIT\n\n## Related\n\n- [daemon](https://github.com/fast-gateway-protocol/daemon) - Core SDK\n- [browser](https://github.com/fast-gateway-protocol/browser) - Browser daemon\n- [fly](https://github.com/fast-gateway-protocol/fly) - Fly.io daemon\n- [neon](https://github.com/fast-gateway-protocol/neon) - Neon Postgres daemon\n- [vercel](https://github.com/fast-gateway-protocol/vercel) - Vercel daemon\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffast-gateway-protocol%2Fdaemon","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffast-gateway-protocol%2Fdaemon","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffast-gateway-protocol%2Fdaemon/lists"}