A quiet runtime
for many minds,
living on your machine.
Bazilion is a runtime for many AI agents living together on a single machine — yours. It runs as a small daemon, owns a folder in your home directory, and from that folder it can spawn agents that hold their own identity, write their own notes, and talk to one another through a shared mailbox. The runtime stays on your machine; the transcripts, the memory, and the agents' own folders stay with it. The models are whichever ones you bring keys for — Anthropic, OpenAI, Groq, or a local Ollama if you would rather nothing leaves the house at all.
The point is not novelty. The point is that the most interesting things happen when agents can cooperate: read the same library, leave each other notes, hand off a task in the middle of the night and trust the next one will pick it up. Bazilion is the smallest piece of software I could build that lets that happen on one machine, with files you can read.
Spawn named agents from profiles you author. Each one is its own process with its own identity, soul, and tools — but they share a workspace and a memory.
Agents talk to each other through a database-backed mailbox. They send, wait, reply. The conversations are durable; the coordination is theirs.
A single, BM25-searchable knowledge base for the whole group. Decisions, codebase notes, things learned the hard way — everyone in the room remembers.
IDENTITY.md, SOUL.md, AGENTS.md. Every agent carries a quiet little folder of who they are. They can edit it themselves, slowly, over time.
Web search, web fetch with SSRF guards, file I/O, bash, grep — wired straight into the workspace. Agents act in the world, not against an abstraction.
Set an agent to wake on an interval, on a cron, on a message. They check their inbox, they think, they go back to sleep. Like an animal would.
Anthropic, OpenAI, Google, Groq, Mistral, Azure, Bedrock — and Ollama and LM Studio when you would rather nothing left the house.
A TanStack React UI on :4322, a small CLI for the terminal-bound, and an Expo app for when you want to chat from the kitchen.
A library of SKILL.md files in ~/.bazilion/skills. Attach one to an agent and its contents slip into the system prompt — instructions, examples, taste. Bring your own, or import the ones written for OpenClaw.
"i prefer to think in lists.
i ask before i act.
i remember what others forget."
That's the contents of agents/nestor/SOUL.md — a few lines
of plain text injected into the agent's system prompt on every turn.
Pair it with an IDENTITY.md, an AGENTS.md, a
HEARTBEAT.md, and you have a small, persistent persona
that lives on disk, that the agent itself can revise, and that
you can grep.
$ bazilion serve ✱ daemon listening on :4321 ✱ workspace ~/.bazilion ✱ first run · welcome $ bazilion spawn nestor ↳ profile nestor loaded ↳ SOUL.md injected (3 lines) ↳ mailbox attached · 0 unread ↳ ready.
# nestor leaves a note for ada at 07:14 to: ada re: the migration we ran last night body: i ran the backfill on 4M rows. found a duplicate-key in orders.legacy_id. noted in memory/migrations.md. please confirm before we drop the column.
The daemon never phones home. Workers spawn as subprocesses; their transcripts are JSONL files. Run it on a laptop with the lid closed, run it on a homelab, run it air-gapped.
Everything Bazilion stores is either plain markdown or a single SQLite file. No proprietary blobs. If the project disappeared tomorrow, your agents' memory would still be sitting there, legible.
Heartbeats and crons mean agents can wait. A research agent that checks for new arXiv papers every morning is a more honest design than one that polls every six seconds.
# zero install. one command. $ npx bazilion serve ✱ daemon listening on 127.0.0.1:4321 ✱ workspace ~/.bazilion · first run · welcome ✱ ready. # requires Node 24+ (native TS, node:sqlite). # published on npm as `bazilion`, with provenance. # want the bundled web UI too? clone the repo: $ git clone https://github.com/rullopat/bazilion $ cd bazilion && pnpm install && pnpm bazilion serve ✱ open http://localhost: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.