An MIT-licensed runtime
for agent teams,
living on your machine.
# Installs Node 24+ if needed, then bazilion. $ curl -fsSL \ https://bazilion.com/install.sh \ | bash # Then open the local web dashboard. $ bazilion dashboard
# Native Windows install, no WSL required. PS> irm ` https://bazilion.com/install.ps1 ` | iex # Then open the local web dashboard. PS> bazilion dashboard
# Requires Node 24+. $ npm install -g bazilion $ bazilion dashboard * daemon 127.0.0.1:4321 * dashboard 127.0.0.1:4322 * workspace ~/.bazilion
# For people who want to read and change the code. $ git clone https://github.com/rullopat/bazilion $ cd bazilion $ npm install -g pnpm # if pnpm is missing $ pnpm install # Start the source daemon, then run the web UI in another terminal. $ pnpm tsx apps/cli/src/index.ts serve $ cd apps/web && pnpm dev
Bazilion is my personal open source attempt at a local-first multi-agent runtime. The engine is Pi's coding agent; Bazilion wraps it in a daemon, CLI, and web UI with templates, live policy, approvals, shared memory, and a mailbox.
It is mostly about templates. A profile defines one kind of agent; a Team Template defines the only reusable roster — stable slots, roles, optional overrides, and directed edges — saved as immutable revisions. Spawning one creates permanent Agents in a single Team with one policy, one USER.md, one memory, and one mailbox.
A profile is a template — identity docs, tools, model, and behavior notes. Spawning makes it a permanent Agent in one Team.
A Team Template owns one revisioned roster of stable slots, each pointing at a template with optional name, model, or reasoning overrides.
One effective revisioned policy per Team. One authorizer covers user, peer, cross-Team, scheduler, inbox, worker, and Telegram boundaries; missing edges deny.
An approval_required edge holds one typed attempt before its side effect. Approve, deny, or cancel once; approval revalidates membership and policy.
Durable messaging inside the loop, plus CLI, API, and web inbox outside it. Coding work can hand a scoped request to a teammate and release the workspace.
One <team>/memory per Team, searched with qmd BM25 over markdown, so decisions outlive the chat that produced them.
One USER.md per Team for the person, project, preferences, and standing instructions — injected into every prompt, never clobbered by file writes.
Agent homes, Team roots, sessions, skills, and memory live under ~/.bazilion, beside one clean-install SQLite schema.
Pi runs the per-turn loop, the JSONL transcript, replay and compaction, and the coding tools. Bazilion 0.20.0 bundles Pi 0.85.1.
Give an Agent a coding task: it discovers repository instructions, inspects its runtime, runs scoped commands, and reports bounded evidence in chat.
Delivered files become immutable Team results tied to their source conversation. Conversations list, read, rename, and start fresh.
Queue instructions with attachments and edit them before dispatch. Answer an Agent mid-task from web, terminal, or paired Telegram, or opt into Attention notices.
Local operator chat can use configured coding, browser, and MCP tools. Background, Telegram, and gateway turns run network-disabled with a restricted toolset.
A paired phone reaches the same private-HTTPS gateway. Encrypted backups restore in place, and you can bring any provider, including GPT-6 Astra.
Draft the roles once.
Review the communication edges.
Spawn one revision into a Team.
An Agent template is the reusable role; a Team Template is the reusable roster and policy source. The web editor, HTTP API, and CLI share the same stable slots and immutable revisions, and a live Team keeps its source lineage without becoming a second template.
$ bazilion team-template show release-review # release-review — Release review revision: 3 slots: 3 edges: 8 slot profile Agent name model reasoning 1 docs-reviewer reader - high 2 cli-tester tester - medium 3 release-captain maintainer - high
$ bazilion team policy show bazilion-090 # Team bazilion-090 policy revision: 2 baseline: release-review@3 members: 3 edges: 8 -> one effective policy · retained source lineage -> allow · approval required · missing edge denies
Each Team has one USER.md for the user, project, preferences, and standing instructions. Agents share that briefing, and guarded updates with concurrency checks replace clobbering it through file writes.
Team memory is qmd-backed: BM25 over markdown under the Team memory folder. Agents write a decision once and retrieve it by search instead of relying on chat history.
Directed edges define who may reach whom. A protected edge holds exactly one attempt for approval, and denials keep policy evidence without storing the payload.
Bazilion takes its name and its face from a Neva Masquerade cat who lived with us for eighteen and a half years and left in 2025.
He was sweet, cuddly, and sharper than he had any right to be — with a temper, especially at the vet and especially when we had been gone too long. He met us at the door, and let us hear about it when we had kept him waiting.
I wanted a runtime that worked a little like that: living on its own machine, doing small useful things in the background, keeping track of who was home. So I named it after him and put his portrait on the box.