Warning
Paused — shared as-is. Development is on hold. Parts of HIVE may be incomplete, broken or out of date, and it is not actively maintained. You are free to use, fork or adapt it under the MIT licence, but review it carefully before relying on it, especially the sandbox and anything that runs commands.
HIVE is a local-first multi-agent project-execution platform. You give it a project brief; a coordinator agent (the "CEO") turns it into a spec document and a roadmap of sprints/tasks, spawns specialist sub-agents, and the agents work through the tasks — editing files in a per-project sandbox, running shell commands, searching the web, talking to each other, committing to git, writing shared notes — while you watch the agent graph, read the threads, and steer.
It runs entirely on your machine by default: SQLite, 127.0.0.1 only, no auth,
a local Ollama fallback when no cloud LLM key is set, a zero-config
DuckDuckGo HTML-scraper fallback for web search (with SearXNG and Tavily as
upgrades), and a path-jailed local-filesystem sandbox with three-layer escape
defense (.. reject → component normalisation → FS canonicalisation of the
deepest existing ancestor) plus O_NOFOLLOW on writes. Bring your own keys
(Anthropic / OpenAI / Gemini / DeepSeek / Tavily / a GitHub PAT) to use the
cloud variants; they're sealed with ChaCha20-Poly1305 at rest. A few features
are explicitly server-only and stay disabled with a tooltip until a
"Hive central server" exists (template gallery, marketplace, public agent
registry, the Cloud sovereignty tier) — that server is planned, not built.
- Backend: a Rust/Axum workspace (~38 k LOC across 11 crates) exposing an HTTP + SSE API on
:8787. - Frontend: a React + TypeScript SPA (~21 k LOC; Vite, TanStack Query, ReactFlow, Monaco, shadcn/ui, Tailwind) on
:8080.
The two halves never share a process; long work (chat turns, agent turns,
module synthesis) runs as background Tokio tasks that stream progress over a
single shared GET /v1/events SSE stream.
just setup # copy .env.example files into place; idempotent
just up # launch back-end (:8787) + front-end (:8080) in a tmux sessionNo just? The Makefile mirrors every target, or run the halves directly:
make setup
make dev-back # one terminal — cargo run -p hive-api -- serve
make dev-front # another — npm run dev (in front-end/)The first backend start:
- Creates
back-end/data/— SQLite database (hive.db), per-project sandbox workspaces atdata/workspaces/<project_id>/, and per-project chat-attachment storage atdata/attachments/<project_id>/. - Runs all 21 migrations.
- Generates a master encryption key at
~/.hive/master.key(0600on Unix) for ChaCha20-Poly1305 sealing of LLM / Tavily / GitHub credentials. - Probes Ollama at
localhost:11434soweb_searchand a local-model fallback work without keys. - Seeds three demo projects + agents (idempotently — a
settings(scope='system', key='seed.demo.completed')sentinel is claimed up-front viaON CONFLICT DO NOTHING, so two concurrent first-boots can't double-seed). - Heals any agent rows stuck on the legacy six-tool list via
seed::heal_enabled_tools.
Override the database URL in back-end/config/local.toml ([database] url = …).
To wipe state, delete back-end/data/ and ~/.hive/master.key and rerun.
| Path | Purpose |
|---|---|
back-end/ |
Cargo workspace: hive-api, hive-domain, hive-db (+ migration/), hive-runtime, hive-llm, hive-tools, hive-sandbox, hive-search, hive-git, hive-crypto, hive-seed. See back-end/README.md. |
front-end/ |
React + TypeScript SPA. See front-end/README.md. |
docs/ |
Start at the index — docs/README.md. Holds architecture.md (design reference), FEATURE_STATUS.md (the living feature matrix), ROADMAP.md (the forward plan), BACKLOG.md (the unified bug/debt/audit register), SECURITY.md, TESTING.md, and OPERATOR_NOTES.md (runtime tips). |
Each half reads env vars from its own .env (created by just setup from
.env.example):
- back-end: logging via
HIVE_LOG(same syntax asRUST_LOG) andHIVE_LOG_JSON; the database URL viaback-end/config/local.toml([database] url = …; copy fromconfig/local.example.toml— defaults to SQLite atback-end/data/hive.db); Ollama viaHIVE_OLLAMA_URL. Bind address is127.0.0.1:8787([server]inconfig/default.toml). Project-scoped settings (search provider, enabled tools, GitHub creds, etc.) live in the DB; LLM-provider keys are entered in Settings → LLM Providers and stored encrypted at rest. (back-end/.env.exampledocuments some additionalHIVE_*vars; the database/data-dir ones aren't currently honored — useconfig/local.toml.) - front-end (
front-end/.env):VITE_API_BASE_URL(defaulthttp://127.0.0.1:8787) — the backend's HTTP + SSE base URL.
just test # cargo test --workspace + npm test
just lint # cargo clippy --workspace --all-targets -D warnings + eslint + tsc --noEmit
just audit # cargo audit + npm audit
just build # release build of hive-api + production build of the frontendBackend CLI (in back-end/): cargo run -p hive-api -- serve (runs migrations
- seeds an empty DB, then serves),
… -- migrate,… -- seed.
docs/README.md— the documentation index (start here).docs/architecture.md— topology, crates, core concepts, the chat-turn flow, technical schema, and future design sketches.docs/FEATURE_STATUS.md— what'sdone/partial/mock/planned/removed, with dependency profile.docs/ROADMAP.md— the high-level forward plan (features).docs/BACKLOG.md— the unified, code-verified register of remaining bugs, debt, security holes, and test gaps.docs/SECURITY.md— security posture and known holes (read before exposing off-loopback).docs/TESTING.md— testing strategy and coverage gaps.docs/OPERATOR_NOTES.md— technical notes for running the chat runner and small-model tips.back-end/README.md·front-end/README.md— dev setup per half.