Releases: rullopat/bazilion
Release list
v0.9.0
Bazilion 0.9.0 is a breaking alpha cleanup that makes Teams, Team Templates, and Team Policy the only canonical production model.
Highlights:
- Removes Group, Profile Group, Harness prototype, compatibility API/URL, and incremental migration surfaces.
- Consolidates the clean-install database contract into 0001_init.sql; existing alpha data must be wiped and bootstrapped again.
- Updates the bundled Pi engine to 0.80.6 and refreshes provider catalogs, including GPT-5.6 Luna, Terra, and Sol.
Validation:
- pnpm typecheck
- pnpm test: 89 files, 672 tests
- pnpm --filter @bazilion/web typecheck
- pnpm --filter @bazilion/web build
- Fresh clean-install bootstrap and schema verification
Public packages: bazilion@0.9.0, @bazilion/client@0.9.0, @bazilion/api-types@0.9.0.
v0.8.0
Summary
- Add static skill content scanning for prompt-injection, credential access, exfiltration wording, and stealth Unicode.
- Risky skills now require explicit confirmation on import and per-agent attach.
- Scan findings are surfaced through CLI, API, and web UI.
Validation
- Local:
pnpm typecheckpassed. - Local:
pnpm testpassed (80 files, 637 tests). - Local:
pnpm buildpassed. - GitHub Actions Release workflow passed: https://github.com/rullopat/bazilion/actions/runs/28737186612
Published packages
bazilion@0.8.0@bazilion/client@0.8.0@bazilion/api-types@0.8.0
v0.7.0
Bazilion 0.7.0
- Updated pi agent packages to 0.79.10.
- Added Bazilion config support for new pi-ai providers.
- Refreshed provider/model catalog examples and first-run setup guidance.
- Updated npm dependencies across the workspace.
Validation:
pnpm typecheckpnpm test(79 files, 630 tests)
v0.6.0 — One-line install and dashboard
Minor release. Three packages bumped in lockstep and published to npm with provenance:
bazilion@0.6.0— CLI + bundled daemon and web UI@bazilion/client@0.6.0— hermetic HTTP client@bazilion/api-types@0.6.0— zero-dep wire types
What's new
This release makes Bazilion much easier to install and open locally, especially for non-technical users.
- One command opens the product.
bazilion dashboardstarts or reuses the local daemon, serves the bundled production web UI, and opens the browser. - Published CLI now includes the web UI. The
bazilionnpm package ships the built dashboard assets, so a global npm install is enough to run both the daemon and the UI. - OpenClaw-style install paths. The website now documents one-line macOS/Linux and Windows installers, npm install, and a hackable source checkout path.
- Backlog shipped. BAZ-007 is complete and moved out of planned work.
v0.5.1 — Telegram Markdown formatting
Patch release. Three packages bumped in lockstep and published to npm with provenance:
bazilion@0.5.1— CLI + bundled daemon@bazilion/client@0.5.1— hermetic HTTP client@bazilion/api-types@0.5.1— zero-dep wire types
What's new
Telegram output now reaches parity with the Web UI's Markdown rendering. Strictly additive — only the agent's own replies are affected.
- Markdown formatting on Telegram. Agent replies used to arrive as plain text, so
**bold**,# headings, and`code`rendered as literal syntax. They're now converted to Telegram HTML using the samemarkedparse the Web UI uses — bold, italic, strikethrough, inline code, code blocks, links, and blockquotes map 1:1. - Sensible approximations for what Telegram can't render. Telegram's formatting is a fixed entity set, not arbitrary HTML, so: headings → emoji-prefixed bold (
▎/▸/·by level, since Telegram has no font sizing); tables → an aligned monospace block; lists →•/1.bullets with indentation and☐/☑task items;---→ a horizontal rule. - Long replies are split, not truncated. A tag-aware splitter chunks replies over Telegram's 4096-char limit into multiple messages, closing and reopening any entity that straddles a boundary so every chunk is valid on its own.
- Never drops a reply. If Telegram rejects a chunk's entities, the mirror retries that chunk once as plain text. Error and verbose tool-trace lines continue to send as plain text.
v0.5.0 — Agent templates refresh
Minor release. Three packages bumped in lockstep and published to npm with provenance:
bazilion@0.5.0— CLI + bundled daemon@bazilion/client@0.5.0— hermetic HTTP client@bazilion/api-types@0.5.0— zero-dep wire types
What's new
An agent-templates refresh: the first-run ritual now learns about you, fresh installs ship a real starter USER.md, the default workspace docs are richer, and agents finally show a face in the UI. Strictly additive — existing profiles, groups, and agents keep working unchanged.
- Two-sided bootstrap. The first-run conversation is two-phase: it fills the agent's IDENTITY.md (name, creature, vibe, emoji, optional avatar), then asks about the human and writes USER.md before retiring itself.
- Seeded + backfilled USER.md. New groups are born with a starter USER.md instead of an empty string; a one-shot migration backfills existing groups whose USER.md was still empty.
- Richer default templates. SOUL.md, a fully-restructured AGENTS.md (workspace operating manual — memory discipline, red lines, channel etiquette), and TOOLS.md are expanded. IDENTITY.md gains Creature + Avatar.
- Default-on templates, HEARTBEAT opt-in. AGENTS.md and TOOLS.md now ship with every profile by default; HEARTBEAT.md stays opt-in. The managed
defaultprofile is kept in sync with the shipped templates on boot. - Agents show a face. The agent list and detail pages render an avatar (http(s):// or data: URIs) and creature parsed from IDENTITY.md, falling back to the emoji.
- Reworked profile create form. A tab per template with a "templates to include" checklist that enables/disables each tab.
v0.4.0 — Browser + MCP
Minor release. Three packages bumped in lockstep and published to npm with provenance:
bazilion@0.4.0— CLI + bundled daemon@bazilion/client@0.4.0— hermetic HTTP client@bazilion/api-types@0.4.0— zero-dep wire types
What's new
This release gives agents eyes, hands, and reach: a real browser, Model Context Protocol servers, and files flowing both directions across every client.
- Browser automation (Playwright). Agents get a
browser_*tool suite (navigate, snapshot, click, type, hover, select, fill_form, press_key, go_back, tabs, take_screenshot, console, network) backed by a persistent per-agent Chromium session that survives across turns. Perception is accessibility-tree-first —browser_snapshotreturns an aria tree with[ref=eN]element refs, so no vision model is needed; screenshots are a secondary multimodal escape hatch rendered inline in chat. A network-layer SSRF guard blocks loopback/private targets (override withBROWSER_ALLOW_PRIVATE_NETWORKfor local dev). Configure on/config(Browser Automation) or via env, then runpnpm exec playwright install chromiumonce. - MCP client. Connect the daemon to Model Context Protocol servers over stdio (local subprocess), Streamable-HTTP, or SSE (with optional bearer auth). Each enabled server's tools are discovered and injected into every agent turn, namespaced
mcp__<server>__<tool>. Manage withbazilion mcp add|list|show|rm|enable|disable|testor the/config/mcppage. - Bidirectional attachments across all clients. Send any file in and receive any file out, on web, Telegram, and CLI. Inbound files travel as one generic attachment; the daemon classifies each at turn assembly —
image/*goes to the model as vision, everything else is stored under the agent's home and referenced by path so the agent opens it with its tools. Attach via the web composer (📎 / paste / drag-and-drop), a Telegram photo/document, orbazilion agent chat <id> --image <path>/--file <path>. - Outbound deliverables. Tool-produced images (browser screenshots, MCP image results) surface as first-class deliverables — a standalone image block in the web chat and a photo on Telegram. Agents send arbitrary files back with the new
deliver_filetool — a download link on web, a document on Telegram, saved to disk on the CLI. 25 MB per file.
Both the browser and MCP run as long-lived daemon-side resources (idle-reaped, closed on shutdown) reached from the stateless per-turn worker over IPC. Tool results are now multimodal (text + images). Audio and video are intentionally deferred — pi and every wired provider are text+image only today.
Under the hood
- pi 0.75.4 → 0.77.0, which ships an expanded built-in LLM model catalog. The
/configprovider catalog is data-driven off pi, so new models surface automatically; the example hints were refreshed to mirror the 0.77 catalog (claude-opus-4-8,gpt-5.5,gemini-3-pro-preview, …). - In-range dependency upgrades across the tree, and CI/release GitHub Actions bumped to their Node-24 majors.
Install
npx bazilion serveUpgrading from 0.3.0
No breaking changes. New DB migrations (MCP servers table, etc.) run automatically on bazilion serve. Browser automation and MCP are entirely opt-in — nothing changes until you enable them under /config. For browser tools, run pnpm exec playwright install chromium once.
v0.3.0 — Telegram
Minor release. Three packages bumped in lockstep and published to npm with provenance:
bazilion@0.3.0— CLI + bundled daemon@bazilion/client@0.3.0— hermetic HTTP client@bazilion/api-types@0.3.0— zero-dep wire types
What's new
This release is all about Telegram. Bazilion can now run a Telegram bot that gives each agent its own forum topic inside a single supergroup, with two-way chat and a dedicated ⚙ bazilion control-plane topic — so you can talk to your agents from your phone.
- One topic per agent, two-way chat. Agents live in a Telegram forum supergroup: typing in an agent's topic runs a turn, and its reply mirrors back into the same topic with a "typing…" indicator and a 👀 reaction on your message. Messages sent while the agent is busy are queued and answered together.
- Setup + preflight. Connect a bot token + supergroup chat ID from the web (
/config/integrations/telegram) or the CLI (bazilion telegram config set). A preflight health check verifies bot identity, supergroup reachability, that forum Topics are enabled, that the bot has Manage Topics, and that Privacy Mode is off — each failed check comes with a fix hint. Activation is automatic and idempotent. - Spawn and bind from anywhere. From Telegram (
/spawn,/spawn_team,/talk), the web agent page (bind a topic), orbazilion telegram bind. Each agent gets a named topic with a profile-derived icon; per-group name templates control titles and propagate renames. - Access control (trust-on-first-use). While the allowlist is empty, the first user to message the bot becomes the owner; everyone else is blocked until allowed. Owners manage members with
/allow//deny(by numeric id —/whoamireveals yours), plus the web Access control card andbazilion telegram allow|deny|allowed. - Multimodal inbound (bounded). Inbound photos, documents, and voice are downloaded into the agent's home and referenced by path for the turn, up to Telegram's 20 MB bot-download limit.
- Resilience. Per-agent inbound/outbound rate budgets, a per-supergroup outbound send queue with 429 backoff, a polling stall-watchdog that self-restarts, supergroup-migration detection with a one-click Reconnect, and lazy reconciliation when a human deletes a topic.
Docs
A full step-by-step setup guide — including the manual BotFather and forum-supergroup steps — is on the new docs site: https://bazilion.com/docs/telegram/
Install
npx bazilion serveUpgrading from 0.2.1
No breaking changes. New DB migrations for the Telegram tables run automatically on bazilion serve. Telegram is entirely opt-in — nothing changes until you configure a bot under /config/integrations/telegram.
Notes
- Requires Node 24+.
- Full changelog: v0.2.1...v0.3.0
v0.2.1
Patch release. Three packages bumped in lockstep and published to npm with provenance:
bazilion@0.2.1— CLI + bundled daemon@bazilion/client@0.2.1— hermetic HTTP client@bazilion/api-types@0.2.1— zero-dep wire types
What's fixed
bazilion@0.2.0 was unusable: npx bazilion serve crashed before the daemon could bind a port.
$ npx bazilion serve
starting bazilion daemon at http://127.0.0.1:4321
Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'sqlite' imported from .../node_modules/bazilion/dist/daemon.js
Two bugs in apps/cli/tsup.config.ts, both build-pipeline only — no source-code changes:
node:sqliteprefix stripped from the bundle. esbuild's hardcoded known-builtins list predatesnode:sqlite(Node 22+). It auto-externalizesnode:imports before pluginonResolvehooks can intercept them, then strips the prefix at print time — sofrom 'node:sqlite'shipped asfrom "sqlite"and Node tried to resolve a userspace package that doesn't exist. No esbuild flag forces the prefix to stay; the fix is a post-build string replace in tsup'sonSuccesshook.- SQL migrations not staged into
dist/.migrate.tsreads them relative toimport.meta.url(i.e.dist/migrations/), but tsup only emits JS — the.sqlfiles were never copied. The published 0.2.0 had this bug too; the sqlite crash just masked it. The sameonSuccesshook now stagesapps/daemon/src/core/db/migrations/*.sqlintodist/migrations/.
Verified with a clean BAZILION_HOME: node dist/cli.js serve boots, auto-bootstraps ~/.bazilion, writes auth.json, listens on the port, and /api/health returns 200.
Release-flow change
.github/workflows/release.yml now sets createGithubReleases: false on changesets/action@v1. From here on, the Releases page only shows the hand-crafted umbrella tags (v0.2.0, v0.2.1, …) with curated highlights and compare links — no more parallel per-package GitHub releases cluttering the page (the npm publishes and git tags are unaffected).
Install
npx bazilion serveUpgrading from 0.2.0
No breaking changes, no migrations, no API changes — just a working bundle. If you tried npx bazilion@0.2.0 and hit the Cannot find package 'sqlite' crash, clear your npx cache or pin the new version explicitly:
npx bazilion@0.2.1 serve
# or
npx --yes bazilion@latest serveNotes
- Requires Node 22.12+.
Full changelog: v0.2.0...v0.2.1
v0.2.0
Minor release. Three packages bumped in lockstep and published to npm with provenance:
bazilion@0.2.0— CLI + bundled daemon@bazilion/client@0.2.0— hermetic HTTP client@bazilion/api-types@0.2.0— zero-dep wire types
Highlights
- Profile Groups (BAZ-002) — preconfigured team templates. A profile group is a reusable roster: an ordered list of members, each pointing at an existing profile with optional per-member overrides (model, reasoning level, agent name). One transactional spawn into a target group materialises the whole team. Tracking issue: BAZ-002.
- New tables
profile_groups+profile_group_members(RESTRICT onprofile_idto prevent dangling references; CASCADE from group → members). - HTTP:
GET|POST|PATCH|DELETE /api/profile-groups,PUT /api/profile-groups/:id/members,POST /api/profile-groups/:id/spawn. - CLI:
bazilion profile-group create|list|show|update|edit|delete|spawn. - Spawn semantics: target group auto-created if its slug doesn't exist, optional
userMdseeded only on freshly-created groups, member name collisions auto-suffixed (webby→webby-2→webby-3), pre-flight validates everyprofileId, full rollback (with retry-with-backoff cleanup of orphan agent dirs) on any failure. - Wire types in
@bazilion/api-types:ProfileGroup,ProfileGroupMember,ProfileGroupDetail,ProfileGroupWithCount, plus the request/response envelopes.
- New tables
- Web UI: templates tab. Profiles and Profile Groups now live under a single templates entry in the top nav, surfaced via a sub-tab strip. The sidebar's + new ▾ dropdown grew two labeled sections — spawn agent from template (profiles) and spawn group from template (profile groups) — with a one-click modal each.
- Empty-group CTA. Navigating to a group with zero members shows a "Spawn team from template" card so you can fill the roster in one click instead of crafting it agent by agent.
- Shared
<Button>component. NewButton variant="primary|ghost|danger"wraps the existing CSS classes so the variant decision can't be silently forgotten — closes the class of bug where bare<button type="button">fell through to Tailwind preflight and lost all styling (the original "save members" button was the index case). Touched files migrated; the rest convert opportunistically. - Friendly error on profile delete. Deleting a profile that's still referenced by a profile group used to surface a raw
FOREIGN KEY constraint failed; now you getcannot delete profile "X": N profile group(s) still reference it: …. The web UI also surfaces daemon errors on delete (previously silently swallowed). - Theme flash on navigation fixed. Root layout uses
data-layoutinstead ofclassNameso the pre-paint.darkclass set byTHEME_INIT_SCRIPTsurvives React reconciliation — no more light/dark flicker when clicking around. (Shipped as PR #2 mid-cycle, included here for completeness.)
Install
npx bazilion serveUpgrading from 0.1.1
No breaking changes. The new profile_groups / profile_group_members tables are added by migration 0002_profile_groups.sql, which the daemon runs idempotently on startup — no manual step required.
If you're already running the daemon, restart it (pnpm tsx apps/cli/src/index.ts serve) so the migration runs and the new /api/profile-groups routes register.
Notes
- Requires Node 22.12+.
@bazilion/api-typesremains hermetic — no Node-only imports — so mobile and browser clients can consume the new entity types without pulling in daemon code.
Full changelog: v0.1.1...v0.2.0