{"id":50317639,"url":"https://github.com/everyapi-ai/everyapi-edge","last_synced_at":"2026-05-29T01:03:21.745Z","repository":{"id":359301083,"uuid":"1245412849","full_name":"everyapi-ai/everyapi-edge","owner":"everyapi-ai","description":"EveryAPI BYO-GPU supplier agent. Source-mirrored from clients/edge/ in everyapi-ai/everyapi. Apache 2.0.","archived":false,"fork":false,"pushed_at":"2026-05-21T10:54:15.000Z","size":39,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-21T15:39:33.988Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://everyapi.ai","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/everyapi-ai.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-05-21T07:42:45.000Z","updated_at":"2026-05-21T10:54:18.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/everyapi-ai/everyapi-edge","commit_stats":null,"previous_names":["everyapi-ai/everyapi-edge"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/everyapi-ai/everyapi-edge","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/everyapi-ai%2Feveryapi-edge","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/everyapi-ai%2Feveryapi-edge/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/everyapi-ai%2Feveryapi-edge/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/everyapi-ai%2Feveryapi-edge/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/everyapi-ai","download_url":"https://codeload.github.com/everyapi-ai/everyapi-edge/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/everyapi-ai%2Feveryapi-edge/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33632272,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-28T02:00:06.440Z","response_time":99,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2026-05-29T01:03:20.977Z","updated_at":"2026-05-29T01:03:21.740Z","avatar_url":"https://github.com/everyapi-ai.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# EveryAPI Edge Agent\n\nThe supplier-side daemon for the EveryAPI BYO-GPU marketplace. Runs\non your GPU machine, connects out to the EveryAPI gateway over a\nreverse WebSocket, and serves inference requests by forwarding them\nto a local Ollama. No port forwarding, no public IP, no domain\nneeded — your machine just needs outbound HTTPS to api.everyapi.ai.\n\n## Five-minute onboarding\n\n1. **Get an account.** Sign up at https://everyapi.ai and turn on\n   marketplace selling in `/profile`.\n\n2. **Register a node.** From the dashboard go to\n   **My channels → New edge node**. Give it a memorable name and\n   click create. You'll see a one-time **registration token** —\n   copy it (we never show it again).\n\n3. **Run the bundle.** On the machine with the GPU:\n\n   ```bash\n   git clone https://github.com/everyapi-ai/everyapi-edge\n   cd everyapi-edge\n   cp .env.example .env\n   # fill in EVERYAPI_NODE_ID + EVERYAPI_REGISTRATION_TOKEN (from step 2)\n   docker compose up -d\n   ```\n\n4. **Watch the dashboard.** Within ~30 seconds the node row flips\n   to `online`. From this point, any buyer routing through your\n   channel sends traffic to your GPU.\n\n5. **Pull the models you want to serve.** Inside the running\n   container:\n\n   ```bash\n   docker compose exec ollama ollama pull llama3.1:8b\n   docker compose exec ollama ollama pull qwen2.5:14b\n   # ...whatever fits your VRAM\n   ```\n\n   The agent reports the model list to the gateway on every\n   reconnect, so the dashboard learns about new models the next\n   time the agent reconnects (or immediately on `docker compose\n   restart agent`).\n\n## Hardware\n\nThe default `docker-compose.yml` ships an NVIDIA configuration\n(needs a recent driver + `nvidia-container-toolkit` on the host).\nTwo GPU variants are provided alongside it:\n\n| File                          | When to use                         |\n|-------------------------------|-------------------------------------|\n| `docker-compose.yml`          | NVIDIA — most common case           |\n| `docker-compose.rocm.yml`     | AMD Radeon Instinct / RX 7000/6000 with ROCm 5.7+ installed |\n| `docker-compose.macos.yml`    | Apple Silicon (M1/M2/M3/M4) — runs ollama natively for Metal |\n\nPick by filename:\n\n```bash\ndocker compose -f docker-compose.rocm.yml up -d     # AMD\ndocker compose -f docker-compose.macos.yml up -d    # macOS\n```\n\nThe macOS variant runs the agent in docker but expects ollama to\nbe installed natively (Metal acceleration isn't available through\nthe docker container). One-time setup on the Mac:\n\n```bash\nbrew install ollama\nbrew services start ollama\n```\n\nThe agent's `OLLAMA_URL` resolves to `host.docker.internal:11434`\nin that file, which Docker Desktop / OrbStack / Colima all expose\non macOS by default.\n\nCPU-only nodes WILL run — the agent connects fine and Ollama\nserves from CPU. Throughput will be too low to be commercially\nuseful for chat workloads, but embeddings can work.\n\n## Security model\n\n- The agent generates an Ed25519 keypair on first run and stores\n  it at `./data/agent/identity.json` (mode 0600). The private key\n  never leaves your machine. The gateway only ever sees your\n  public key and signatures.\n\n- The registration token is one-shot. After your first successful\n  connect, even the gateway can't reuse it. Subsequent reconnects\n  use a fresh server-issued challenge that you sign with the\n  identity from step 1.\n\n- No port is exposed publicly. All traffic is the agent's\n  outbound WebSocket to api.everyapi.ai.\n\n- The agent enforces a path whitelist on inbound requests. Even\n  if the gateway were compromised, it could not coerce your\n  machine into POST'ing to arbitrary local URLs — only the\n  OpenAI-compatible /v1/* paths Ollama exposes are accepted.\n\n## Troubleshooting\n\n**Node stays offline after `docker compose up`** — check\n`docker compose logs agent`. The most common failures are\n`EVERYAPI_NODE_ID` mismatch (copy-paste error from the dashboard)\nor an expired registration token (the dashboard's token field\nclears after ~24h; re-create the node row).\n\n**\"registration token not recognised\"** — you tried to reuse a\ntoken. Delete the node from the dashboard, create a new one, copy\nthe fresh token into `.env`, `docker compose restart agent`.\n\n**GPU not detected** — `docker run --rm --gpus all\nnvidia/cuda:12.0.0-base nvidia-smi` is the canonical check. If\nthat doesn't work, the bundle won't either; fix the host's\nnvidia-container-toolkit before debugging the agent.\n\n**Identity loss** — if `./data/agent/identity.json` gets deleted,\nthe gateway no longer recognises your machine's pubkey. Delete the\nnode from the dashboard, register a new one. (We don't support\n\"rebind to existing node id\" yet because the threat model treats\nidentity loss as equivalent to \"machine was compromised.\")\n\n## What does the agent NOT do?\n\n- It does not phone home with your IP, your username, or anything\n  beyond what's in `.env` (gateway URL, node id, supplier-declared\n  metadata) plus liveness heartbeats with GPU utilisation.\n\n- It does not auto-update. We don't push image updates without\n  your explicit `docker compose pull \u0026\u0026 docker compose up -d`.\n\n- It does not run arbitrary code. The path whitelist above is\n  enforced inside the agent binary, not inside ollama.\n\n## License + source\n\nApache 2.0. Full source at\nhttps://github.com/everyapi-ai/everyapi-edge. Issues + PRs welcome.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feveryapi-ai%2Feveryapi-edge","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feveryapi-ai%2Feveryapi-edge","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feveryapi-ai%2Feveryapi-edge/lists"}