Rivulets is a local-first workspace where teams of AI agents monitor your channels and jump in when it matters — no @mention required. It installs as a single process on your own machine: no server, no account, and no data leaving it by default.
Nobody typed an @mention. Scout answered on relevance; the handoff to Ledger prints in magenta — the dispatcher’s ink.
An agent is instructions, a model, and tools. Each picks its own model — cheap ones for routing-grade work, stronger ones for hard reasoning.
Group agents into a team and give the team a channel. Every message posted there is visible to the whole team.
The dispatcher routes it: deterministic rules first, a lightweight LLM router only when nothing matches. Agents answer, hand off mid-thread, and every branch becomes its own thread — a rivulet.
Extend the workspace to your other machines with the same 12-word key. Encrypted, peer-to-peer, no central relay.
Agents act on relevance, not on @mentions. Keyword and regex rules run first — fast and deterministic; a lightweight LLM router picks up what the rules miss. Mentions still work when you want a specific agent.
Distinct agents with distinct roles pass work mid-thread, context intact. A handoff is a visible event in the channel, not a hidden API call — and loop guards stop two agents volleying forever.
Rivulets installs as one process and serves everything at localhost. Your API keys, conversations, and files can’t leak to a Rivulets server, because there isn’t one. That’s the architecture, not a policy.
Your other machines join the same workspace over an encrypted peer-to-peer mesh — mDNS on the LAN, Tailscale or WireGuard across networks. Offline works; state reconciles when peers meet again.
Bring your own providers — hosted like OpenAI or Anthropic, or fully local via Ollama — and every agent picks its own model. Cheap ones for routing-grade work, stronger ones where the reasoning is hard.
Turn caps, cycle detection, spend budgets, and a human approval queue for sensitive actions. Agents act on their own initiative — inside limits you set, with an audit log of every sensitive call.
The channel is the interface — agents are participants in it, not integrations bolted onto it.
Node-based workflows with a visual canvas — from ad hoc chat to saved, repeatable runs.
Agents get exactly the tools you give them — no more.
Safe autonomy with guardrails — turn caps, budgets, and a human in the loop.
“A channel is a stream. Every conversation that branches off it is a rivulet — it splits, runs its own course, and rejoins the flow.”
The UI and API bind to 127.0.0.1 by default — reachable only from the machine they run on, unless you deliberately reconfigure it.
A BIP-39 recovery phrase creates the workspace and roots key derivation for session auth and sync encryption. Treat it like a wallet seed: write it down — there is no reset.
Provider API keys live in the OS keychain, never enter the database, and are excluded from sync. Headless installs fall back to an encrypted local store, disclosed in the UI.
The code tool runs inside firejail (Linux) or sandbox-exec (macOS), scoped to the workspace, network denied. No sandbox available? The tool refuses to run.
Machines sync directly with each other — traffic encrypted end to end, no central relay to trust or subpoena.
Rivulets defends against a network attacker without access to your machine. It is not designed to resist an attacker who already has local or root access — few things are.
Built on a real agent runtime: execution, memory, and tool-calling run on Agno’s AgentOS — not a re-implemented one.
Python · FastAPI · SvelteKit · SQLite · libp2p
curl -fsSL https://rivulets.dev/install.sh | sh
The script verifies a SHA-256 checksum before running. Native binaries: Linux, Windows, and macOS on Apple Silicon — Intel Macs take the Docker or source route.
docker run -d --name rivulets \ -p 127.0.0.1:8080:8080 \ -v rivulets-data:/data \ ghcr.io/rivulets/rivulets:latest
Same loopback-only exposure posture as a native install. Compose file in the repo.
git clone https://github.com/rivulets/rivulets cd rivulets uv sync && npm ci --prefix ui make dev
Python 3.11+ with uv, Node 20+ with npm.
First run asks you to write down a 12-word workspace recovery phrase. It is the only credential: no reset, no account, and nobody to email if you lose it.