multi-agent runtime · your machine, your keys

Bazilion

An MIT-licensed runtime
for agent teams,
living on your machine.

Baziu — a Neva Masquerade cat, portrait used as the Bazilion mark
Baziu, 2007 — 2025

A runtime I built because I wanted agents that stayed home.

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.

The pieces that make agent collaboration concrete.

  1. 01

    Profiles become agents

    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.

  2. 02

    Profile groups spawn teams

    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.

  3. 03

    A mailbox between them

    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.

  4. 04

    Shared memory, indexed by qmd

    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.

  5. 05

    The user context is explicit

    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.

  6. 06

    State is mostly files

    Agent homes, group roots, templates, sessions, skills, and memory live under ~/.bazilion. The daemon owns SQLite; the useful material stays inspectable on disk.

  7. 07

    Tools live in the workspace

    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.

  8. 08

    Heartbeats and crons

    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.

  9. 09

    MIT, local-first, provider-flexible

    Bazilion is a personal open source project published under the MIT license. Use hosted providers, ChatGPT OAuth, Ollama, LM Studio, or other supported backends.

Profiles describe agents. Profile groups describe teams.

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.

team template cli
$ 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
agent messaging 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.

USER.md, memory, and messages make the group coherent.

USER.md is shared

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.

Memory is searchable markdown

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.

Messages are first-class

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.

Daemon from npm. Web UI from the source checkout.

daemon + CLI npm
# 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
web UI today source
# 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.

in memoriam · Baziu · the original local agent