An MIT-licensed runtime
for agent teams,
living on your machine.
Bazilion is my personal open source attempt at a local-first multi-agent runtime. It is not a company platform or hosted service. It is a small MIT-licensed daemon, CLI, and source-run web UI for people who want to experiment with agents that have files, memory, templates, and a way to talk to each other while remaining under their own control.
Bazilion is especially about templates. A profile defines one kind of agent. A profile group defines a whole team: several profile-backed agents, ordered, named, optionally model-overridden, and spawned transactionally into one collaboration group. Once there, they share a USER.md, a qmd-indexed markdown memory, and a durable mailbox.
A profile is an agent template: SOUL.md, IDENTITY.md, AGENTS.md, tools, skills mode, default model, and the notes that shape how that agent behaves when spawned.
Profile groups are reusable team templates. One spawn materializes an ordered set of agents into a target group, with per-member names, models, and reasoning levels.
Agents coordinate through a durable mailbox: send_message, read_inbox, and wait_for_reply in the loop, plus CLI, API, and web inbox surfaces outside it.
Every group has one memory rooted at <group>/memory. Bazilion uses qmd for BM25 over markdown, so project facts, decisions, and discoveries are searchable by every agent in the group.
A group has one USER.md for the person, project, preferences, and standing instructions. It is injected into prompts, and agents can update it through guarded user_md tools.
Agent homes, group roots, templates, sessions, skills, and memory live under ~/.bazilion. The daemon owns SQLite; the useful material stays inspectable on disk.
Agents get coding tools, web search, a hardened web fetch, a Playwright browser, mailbox and memory tools, and can deliver files back. Connect MCP servers and their tools join the loop too. They work in a linked project folder, not a toy sandbox.
Interval and cron triggers can wake an agent with a stored message, so an agent can check inboxes, review notes, or run a recurring research task without a chat window open.
Bazilion is a personal open source project published under the MIT license. Use hosted providers, ChatGPT OAuth, Ollama, LM Studio, or other supported backends.
Draft the roles once.
Spawn the whole working group.
Let them coordinate in the open.
A profile is the reusable agent shape. A profile group is the reusable collaboration shape. The CLI, HTTP API, and web UI can all create profile groups, edit their members, and spawn an entire team into a target group in one call.
$ bazilion profile-group spawn release-review \ --group bazilion-020 * group bazilion-020 created * spawned reader from profile docs-reviewer * spawned tester from profile cli-tester * spawned maintainer from profile release-captain -> one USER.md · one qmd memory · one mailbox
# reader leaves a note for maintainer to: maintainer re: changelog summary for the release body: profile groups are the headline. web, CLI, and API paths are in parity. wrote notes to memory/releases.md. please check install docs before publishing.
Each group has one USER.md for stable context about the user, project, preferences, and standing instructions. Agents share that briefing, and updates go through guarded tools with concurrency checks instead of ad hoc prompt drift.
Group memory is backed by qmd: BM25 over markdown under the group memory folder. Agents can write decisions once and later retrieve them by search instead of relying on chat history.
The mailbox is not just UI chat. It is a coordination primitive: agents can send, read, wait for replies, and pick up work left by another member of the group.
# Requires Node 24+. $ npx bazilion serve * daemon listening on 127.0.0.1:4321 * workspace ~/.bazilion * bootstrap token written to auth.json # Or install once: $ npm install -g bazilion $ bazilion serve
# The web UI is not bundled in npm yet. $ git clone https://github.com/rullopat/bazilion $ cd bazilion $ pnpm install # Terminal 1: source daemon. $ pnpm tsx apps/cli/src/index.ts serve # Terminal 2: web app on 4322. $ cd apps/web $ pnpm dev * open http://127.0.0.1:4322
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. He was cuddly. He was sharper than he had any right to be — and he had a temper, especially at the vet, and especially when we had been gone too long. He met us at the door when we came home, and he let us hear about it when we had kept him waiting. He had opinions, and he kept them.
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 and who was not. So I named it after him, and put his portrait on the box.