{"id":47612922,"url":"https://github.com/risingwavelabs/box0","last_synced_at":"2026-04-01T20:48:24.315Z","repository":{"id":343912529,"uuid":"1179622168","full_name":"risingwavelabs/box0","owner":"risingwavelabs","description":"Agent swarm platform. Run multiple AI agents on your laptop or across distributed systems. Works natively with Claude Code and Codex.","archived":false,"fork":false,"pushed_at":"2026-03-22T19:39:57.000Z","size":38688,"stargazers_count":56,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-22T19:42:32.032Z","etag":null,"topics":["ai-agents","claude-code","codex","cursor","llm","multi-agent","self-hosted"],"latest_commit_sha":null,"homepage":"","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/risingwavelabs.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-03-12T07:58:16.000Z","updated_at":"2026-03-22T19:40:00.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/risingwavelabs/box0","commit_stats":null,"previous_names":["risingwavelabs/agentbus","risingwavelabs/stream0","risingwavelabs/box0"],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/risingwavelabs/box0","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/risingwavelabs%2Fbox0","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/risingwavelabs%2Fbox0/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/risingwavelabs%2Fbox0/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/risingwavelabs%2Fbox0/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/risingwavelabs","download_url":"https://codeload.github.com/risingwavelabs/box0/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/risingwavelabs%2Fbox0/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31291804,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T13:12:26.723Z","status":"ssl_error","status_checked_at":"2026-04-01T13:12:25.102Z","response_time":53,"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","claude-code","codex","cursor","llm","multi-agent","self-hosted"],"created_at":"2026-04-01T20:48:21.392Z","updated_at":"2026-04-01T20:48:24.307Z","avatar_url":"https://github.com/risingwavelabs.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cpicture\u003e\n    \u003csource srcset=\".github/box0-logo-dark.svg\" width=\"400px\" media=\"(prefers-color-scheme: dark)\"\u003e\n    \u003cimg src=\".github/box0-logo-light.svg\" width=\"400px\"\u003e\n  \u003c/picture\u003e\n\u003c/p\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n__Open-Source Platform for Subagents and Agent Teams.__\n\n[![Slack](https://img.shields.io/badge/Slack-join-4A154B?logo=slack)](https://go.risingwave.com/slack)\n[![npm](https://img.shields.io/npm/v/@box0/cli)](https://www.npmjs.com/package/@box0/cli)\n[![license](https://img.shields.io/github/license/risingwavelabs/box0)](LICENSE)\n[![docs](https://img.shields.io/badge/docs-box0-blue)](https://github.com/risingwavelabs/box0/tree/main/docs)\n[![SKILL.md](https://img.shields.io/badge/SKILL.md-agent%20onboarding-black)](SKILL.md)\n\n\u003c/div\u003e\n\nBox0 runs multiple AI agents in parallel across your machines. You create agents with different roles, delegate tasks to them, and collect results. It works with Claude Code and Codex. Single Rust binary, no dependencies.\n\n  - **Long-running**: agents that persist across sessions and never disappear\n  - **Collaborative**: shared across machines and team members\n  - **Proactive**: cron jobs, webhooks, Slack notifications\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/hero.svg\" alt=\"Box0 Architecture\" width=\"800\"\u003e\n\u003c/p\u003e\n\n## Box0 vs Subagents\n\n\u003cdiv align=\"center\"\u003e\n\n|               | Box0                              | Subagents              |\n|:-------------:|:---------------------------------:|:----------------------:|\n| Setup         | `npm install`, one binary         | Built-in, zero config  |\n| Multi-machine | One laptop or a fleet of machines | Single machine only    |\n| Persistence   | Agents and conversations persist  | Session only           |\n| Scheduling    | Cron jobs                         | :x:                    |\n| Notifications | Webhooks, Slack, and more         | :x:                    |\n| Team sharing  | Workspaces, multi-user            | :x:                    |\n| Dashboard     | Web UI                            | :x:                    |\n| Runtime       | Any agent runtime                 | Claude Code only       |\n\n\u003c/div\u003e\n\n## How it works\n\nA **server** coordinates everything. It stores agent definitions, routes tasks, runs the scheduler, and serves a web dashboard. Start one with `b0 server`.\n\n**Machines** are computers that run agents. When the server starts, it registers itself as the `local` machine. Add more with `b0 machine join`. Each machine uses its own Claude Code or Codex credentials. Machines belong to the server and are shared across all workspaces.\n\n**Workspaces** organize agents by team. Each user gets a personal workspace. Create shared ones with `b0 workspace create` and invite members. Agents in a workspace are visible to all its members.\n\n**Agents** do the actual work. Each agent has a name, a set of instructions, and runs on a specific machine. There are three kinds:\n\n- **background** - persistent agents that stay around and handle tasks on demand. Created with `b0 agent add`.\n- **cron** - run on a schedule. Created with `b0 cron add --every 6h \"...\"`.\n- **temp** - one-off tasks that clean up after themselves. Created with `b0 agent temp \"...\"`.\n\nYour AI (Claude Code or Codex) delegates work with `b0 delegate`, waits for results with `b0 wait`, and can run multiple agents in parallel. You type one prompt. Your agent handles the rest.\n\n## Agent onboarding\n\n```bash\nnpx skills add risingwavelabs/skills --skill b0\n```\n\nOr read [SKILL.md](SKILL.md) directly.\n\nYour agent sends tasks to the Box0 server via `b0 delegate`. The server stores them in an inbox. A node daemon polls the inbox, spawns a separate Claude Code (or Codex) process for each worker, and writes the results back. Your agent calls `b0 wait` to collect the responses.\n\nEach worker runs in its own isolated directory. Workers can also run across multiple machines. See [Multi-machine](docs/multi-machine.md).\n\nAgent runs use a 30 minute default execution timeout. This prevents longer workflow steps from failing at the old 5 minute default on first run.\n## Getting started\n\nInstall:\n\n```bash\nnpm install -g @box0/cli@latest\n```\n\nStart the server:\n\n```bash\nb0 server\n```\n\nOn first start, Box0 creates an admin account and prints your API key.\n\nIf you want a fixed admin credential for other services, configure it before first start:\n\n```toml\n# server.toml\nadmin_name = \"service-admin\"\nadmin_key = \"b0_service_admin_key\"\n```\n\n```bash\nb0 server --config server.toml\n```\n\nYou can also use `B0_ADMIN_NAME` and `B0_ADMIN_KEY`. These settings are applied when Box0 bootstraps the initial admin for a new database.\n\nIf the server has already been started before, create or update a dedicated admin user explicitly:\n\n```bash\nb0 admin ensure --db ~/.b0/b0.db --name service-admin --key b0_service_admin_key\n```\n\nThis command runs locally against the Box0 database. It can create a separate admin user for integrations without replacing your existing admin account.\n\n### Frontend development\n\nThe server now prefers `frontend/dist` when it exists, and falls back to the legacy `web/` dashboard otherwise.\n\nFor day-to-day frontend development, run Vite separately:\n\n```bash\ncd frontend\npnpm install\npnpm dev\n```\n\nVite proxies `/workspaces`, `/machines`, and `/users` to `http://127.0.0.1:8080` by default. To point it at a different backend, set `B0_FRONTEND_BACKEND_URL`.\n\nTo let the Rust server serve the Vue app directly, build the frontend first:\n\n```bash\ncd frontend\npnpm build\n```\n\n### 3. Teach your agent to use Box0\n\nTeach your agent to use Box0 ([how skills work](docs/skills.md)):\n\n```bash\nnpx skills add risingwavelabs/skills --skill b0\n```\n\nThen open Claude Code or Codex and say:\n\n\u003e Create three agents: an optimist, a pessimist, and a realist. Ask them to debate whether AI will replace software engineers in 5 years. Give me your own conclusion.\n\n## Features\n\n**Parallel delegation.** Send tasks to multiple agents at once, collect results when they are done.\n\n```bash\nb0 delegate reviewer \"Review this PR for correctness.\"\nb0 delegate security \"Review this PR for vulnerabilities.\"\nb0 wait --all\n```\n\n**Cron jobs.** Schedule recurring tasks.\n\n```bash\nb0 cron add --every 6h \"Check production logs for errors and summarize.\"\n```\n\n**Webhooks and Slack.** Get notified when agents finish.\n\n```bash\nb0 agent add monitor --instructions \"Watch for regressions.\" --webhook https://example.com/hook\nb0 agent add alerter --instructions \"Triage alerts.\" --slack \"#ops\"\n```\n\nSee [Slack setup](docs/slack.md) for configuration.\n\n**Multi-turn conversations.** Continue where you left off.\n\n```bash\nTHREAD=$(b0 delegate researcher \"Compare Postgres and MySQL for our use case.\")\nb0 wait\nb0 delegate --thread $THREAD researcher \"Now factor in DynamoDB.\"\n```\n\n**Pipe content.** Pass files and diffs directly.\n\n```bash\ngit diff | b0 delegate reviewer \"Review this diff.\"\nb0 delegate analyst \"Summarize this codebase. @src/\"\n```\n\n**Temp agents.** One-off tasks, no setup.\n\n```bash\nb0 agent temp \"List the top 5 differences between Rust and Go.\"\n```\n\n**Multi-machine.** Distribute agents across machines. Each machine uses its own credentials.\n\n```bash\nb0 machine join http://server:8080 --name gpu-box --key \u003ckey\u003e\nb0 agent add ml-agent --instructions \"ML specialist.\" --machine gpu-box\n```\n\n**Web dashboard.** Manage agents, view tasks, and monitor machines at `http://localhost:8080`.\n\n## CLI reference\n\n```\nb0 server                                    Start server\nb0 login \u003curl\u003e --key \u003ckey\u003e                   Connect from another machine\nb0 status                                    Show connection info\nb0 invite \u003cname\u003e                             Create user (admin only)\nb0 admin ensure --name \u003cname\u003e --key \u003ckey\u003e    Create/update a local admin user\n```\n\n```\nb0 agent add \u003cname\u003e --instructions \"...\"     Create agent\nb0 agent ls                                  List agents\nb0 agent info \u003cname\u003e                         View agent details\nb0 agent logs \u003cname\u003e                         View recent task history\nb0 agent stop \u003cname\u003e                         Deactivate agent\nb0 agent start \u003cname\u003e                        Reactivate agent\nb0 agent remove \u003cname\u003e                       Delete agent\nb0 agent temp \"\u003ctask\u003e\"                       One-off task (auto-cleanup)\n```\n\n```\nb0 delegate \u003cagent\u003e \"\u003ctask\u003e\"                 Send task (non-blocking)\nb0 delegate --thread \u003cid\u003e \u003cagent\u003e \"\u003cmsg\u003e\"    Continue conversation\nb0 wait [--all] [--timeout \u003csec\u003e]            Collect results\nb0 reply \u003cthread-id\u003e \"\u003canswer\u003e\"              Answer agent question\nb0 threads                                   List recent conversations\n```\n\n```\nb0 cron add --every \u003cinterval\u003e \"\u003ctask\u003e\"      Schedule recurring task\nb0 cron ls                                   List scheduled tasks\nb0 cron remove \u003cid\u003e                          Delete scheduled task\n```\n\n```\nb0 machine join \u003curl\u003e --name \u003cid\u003e            Join as remote machine\nb0 machine ls                                List machines\n```\n\n```\nb0 workspace create \u003cname\u003e                   Create workspace\nb0 workspace add-member \u003cws\u003e \u003cuser-id\u003e       Add member\n```\n\n## Learn more\n\n- [Skills](docs/skills.md) - how skills teach your agent to use Box0\n- [Multi-machine setup](docs/multi-machine.md) - distribute agents across machines\n- [Cron jobs](docs/cron.md) - schedule recurring tasks\n- [Slack notifications](docs/slack.md) - get notified when agents finish\n- [Workspaces](docs/teams.md) - share a Box0 server with multiple users\n- [Architecture](docs/architecture.md) - task flow, data model, and diagrams\n- [CLI reference](docs/cli.md) - full command reference\n- [Workflows](docs/workflows.md) - agent-first DAG workflow design for Box0\n\n## Web dashboard\n\nOpen your browser to the server URL (default `http://localhost:8080`) and log in with your API key. Manage workers, view tasks, monitor nodes, and manage your team from the UI.\n\n## License\n\nMIT License. Copyright (c) 2026 RisingWave Labs.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frisingwavelabs%2Fbox0","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frisingwavelabs%2Fbox0","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frisingwavelabs%2Fbox0/lists"}