Skip to content

Releases: rullopat/bazilion

v0.9.0

Choose a tag to compare

@rullopat rullopat released this 13 Jul 07:10
41a59a1

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

Choose a tag to compare

@rullopat rullopat released this 05 Jul 10:09

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

Published packages

  • bazilion@0.8.0
  • @bazilion/client@0.8.0
  • @bazilion/api-types@0.8.0

v0.7.0

Choose a tag to compare

@rullopat rullopat released this 22 Jun 18:51

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 typecheck
  • pnpm test (79 files, 630 tests)

v0.6.0 — One-line install and dashboard

Choose a tag to compare

@rullopat rullopat released this 22 Jun 08:47

Minor release. Three packages bumped in lockstep and published to npm with provenance:

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 dashboard starts or reuses the local daemon, serves the bundled production web UI, and opens the browser.
  • Published CLI now includes the web UI. The bazilion npm 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

Choose a tag to compare

@rullopat rullopat released this 30 May 12:38
96b3274

Patch release. Three packages bumped in lockstep and published to npm with provenance:

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 same marked parse 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

Choose a tag to compare

@rullopat rullopat released this 29 May 17:28
388fbae

Minor release. Three packages bumped in lockstep and published to npm with provenance:

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 default profile 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

Choose a tag to compare

@rullopat rullopat released this 29 May 12:19
3d82c7e

Minor release. Three packages bumped in lockstep and published to npm with provenance:

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-firstbrowser_snapshot returns 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 with BROWSER_ALLOW_PRIVATE_NETWORK for local dev). Configure on /config (Browser Automation) or via env, then run pnpm exec playwright install chromium once.
  • 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 with bazilion mcp add|list|show|rm|enable|disable|test or the /config/mcp page.
  • 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, or bazilion 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_file tool — 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 /config provider 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 serve

Upgrading 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

Choose a tag to compare

@rullopat rullopat released this 28 May 17:50

Minor release. Three packages bumped in lockstep and published to npm with provenance:

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), or bazilion 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 — /whoami reveals yours), plus the web Access control card and bazilion 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 serve

Upgrading 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

v0.2.1

Choose a tag to compare

@rullopat rullopat released this 25 May 14:36
df871f5

Patch release. Three packages bumped in lockstep and published to npm with provenance:

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:sqlite prefix stripped from the bundle. esbuild's hardcoded known-builtins list predates node:sqlite (Node 22+). It auto-externalizes node: imports before plugin onResolve hooks can intercept them, then strips the prefix at print time — so from 'node:sqlite' shipped as from "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's onSuccess hook.
  • SQL migrations not staged into dist/. migrate.ts reads them relative to import.meta.url (i.e. dist/migrations/), but tsup only emits JS — the .sql files were never copied. The published 0.2.0 had this bug too; the sqlite crash just masked it. The same onSuccess hook now stages apps/daemon/src/core/db/migrations/*.sql into dist/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 serve

Upgrading 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 serve

Notes

  • Requires Node 22.12+.

Full changelog: v0.2.0...v0.2.1

v0.2.0

Choose a tag to compare

@rullopat rullopat released this 25 May 11:47
64cf6c2

Minor release. Three packages bumped in lockstep and published to npm with provenance:

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 on profile_id to 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 userMd seeded only on freshly-created groups, member name collisions auto-suffixed (webbywebby-2webby-3), pre-flight validates every profileId, 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.
  • 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. New Button 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 get cannot 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-layout instead of className so the pre-paint .dark class set by THEME_INIT_SCRIPT survives React reconciliation — no more light/dark flicker when clicking around. (Shipped as PR #2 mid-cycle, included here for completeness.)

Install

npx bazilion serve

Upgrading 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-types remains 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