Releases: tyoung515-svg/bob
Release list
BoB v0.99.0 — memory + bridge
This release tags the existing public v0.99.0 code at commit 8e87f8a, aligning GitHub Releases with the version already documented on main. No new application-code changes are introduced by this release publication. See CHANGELOG.md and SECURITY.md at this tag for the existing change history and security limitations. No new build or test run was performed for this metadata-only publication. The historical v0.98.1 release remains unchanged.
BoB v0.98.1
BoB v0.98.1 — the cockpit release
The desktop app graduates from a chat client to a live operations console — watch a council deliberate in real time, pick models in plain language, ask Bob about the screen you're on, and walk your memory as a 3D graph. A patch-scoped release: no datastore, schema, embedder, or dependency-lock changes.
Added
- Live Council Theater. A council-shaped chat turn can opt in to
emit_eventson the start-turn frame; per-seat frames (seat starts, positions, synthesis) relay through the gateway to the app's Council screen as they happen. Without the opt-in, a council turn is byte-identical to 0.98.0. - Chat model/backend picker with plain-language names — every face now carries
display_name/blurb(and, where applicable, a Simple-modesimple_slot) alongside its technical id. - Ask-Bob helper bubble. Screen-aware Q&A over memory and teams, with guardrailed team edits. It can attach a snapshot of the screen you're viewing as an additive system card (
PAGE_CONTEXT_ENABLED, code default off — with the flag off the assembled prompt is byte-identical no matter what a client sends). - 3D memory graph. A Memory screen renders facts, source conversations, and knn/provenance edges as an interactive graph (
GET /api/memory/graph, gateway-proxied; bundledthree.js+3d-force-graphwith licenses). - Actions registry +
GET /capabilities. One static registry of app actions composed with faces, backends, and models into a single capability payload. Voice is a seam only — the intent mapping exists, no STT/TTS engine ships. - Approvals in the app, with plain-language approval literacy per kind.
- Scheduled-fires tile — the profile scheduler's upcoming fires on the dashboard.
- Council synthesis robustness. A synthesis-stage timeout finalizes with the seats it has and always emits a terminal frame; per-seat entries carry a rate-consistent token/USD estimate.
Changed
- Desktop app overhauled — new navigation, settings panels, experience calibration; stale KPI dashboard tiles removed.
- Fail-safe memory default:
MEMORY_QDRANT_URL(and the bootstrap default) now defaults tohttp://localhost:6353— the port this repo's compose actually publishes — instead of:6333. Enabling memory without an explicit URL can no longer write to an unrelated Qdrant on the well-known port. If you run Qdrant on:6333deliberately, set the URL explicitly — seeUPGRADE.md. - Qdrant healthcheck matches the HTTP status line only, so a response body can't false-pass the probe.
run_baseline_tests.ps1reports true per-suite exit codes (a suite that fails to launch reports failure instead of inheriting the prior suite's success).
Fixed
- strings.xml literal-backslash rendering — five UI strings rendered
\nliterally instead of breaking lines. - CI (carried forward from the 0.98.0 tag): committed the
gradlewexec bit for Linux runners, normalized POSIXTimeoutExpiredbytes in the harness sandbox, made the ubuntu python leg advisory — Windows remains the supported platform.
Known limitations (honest)
- The Council Theater needs a council-shaped turn plus the
emit_eventsopt-in; plain chat turns stream as before. - Voice: intent seam only; no speech engine ships.
- Research-forest approval kinds are modeled in the app and gateway metadata, but the research-forest engine is not part of the public release.
- The zvec ANN rescoring tier and the parser hard cap that 0.98.0's notes planned for v0.99 remain on the v0.99 track — Qdrant stays the recommended default, zvec stays experimental.
Upgrading from 0.98.0 is three short checks — see UPGRADE.md. Full notes in CHANGELOG.md. Release gate: clean-clone, shipped-install-path baseline — core 2883 passed / 0 failed / 9 skipped, gateway 256, pipeline 130, KMM and pip-check green — plus a production-shaped tag-to-tag upgrade on a second isolated install (services, memory write → index → recall round-trip, app rebuild).
BoB v0.98.0
BoB v0.98.0 — the memory-hardening release
Added
- Single-writer memory write fence (OS-level, fail-closed). Every memory writer must hold a family-scoped lock (one per vector-store service + collection family, spanning all vector dims). Memory enabled with no armed fence refuses to boot; a second writer degrades to read-only with honest health (HTTP 423
memory_write_locked) instead of corrupting the store; permission problems report as permission problems. - Experimental zero-Docker vector store (opt-in). The
zvecembedded store runs as a supervised child process owned by core (crash → clean error, next call restarts it). Opt in viaconfig/memory_stores.toml+pip install zvec==0.5.1; Docker Qdrant remains the default. - BobLKS: a local corpus instance —
ingest()/retrieve()over your own documents through the same fence, fingerprint, and provider seams as agent memory. - Asymmetric embedder seam — typed
embed_query/embed_docwith per-slot instruction templates (part of the embed fingerprint), batching, and a first-write dimension probe (writes fail closed on mismatch, reads fail open). - Retrieval eval harness with an honest ceiling (
bobclaw-core/evals/retrieval/): author-blind paraphrase set, Wilson CIs, paired outputs. Measured recall@10: qwen3-embedding-4b 65%, 0.6b 40%. Earlier 95%/88% figures were lexical-leakage-inflated and are relabeled as an embedding smoke. - Recall backfill past dangling vectors — bounded overfetch/paging to reach
top_kvalid facts instead of silently truncating. - CI + release-surface baseline runner —
.github/workflows/tests.yml(Windows + Linux from the pinned locks) and./run_baseline_tests.ps1, which exits non-zero if ANY suite fails. UPGRADE.md— the supported tag-to-tag upgrade runbook.
Changed
- Default embedder:
granite-embedding-311m→qwen3-embedding-4b(768 → 2560 dims, last-token pooling), decided on the paraphrase eval above. granite remains the documented CPU-light alternative (not yet measured on the new eval set — an open follow-up). Existing memory stores must re-index — seeUPGRADE.md. - Compose project naming is pinned and fixed container names are removed, so two installs coexist on one host (distinct
COMPOSE_PROJECT_NAME+ the newBOBCLAW_*_PORTdatastore-port overrides). Existing installs: seeUPGRADE.mdbefore your nextcompose up. - L1 fact dedup identity excludes volatile turn metadata (extractor v1→v2), so a repeated fact no longer multiplies.
Fixed
- Qdrant container healthcheck was always failing (image ships no
wget) — now probes/healthzover bash/dev/tcp. MEMORY_SLOTS_FILEwas documented but ignored by bootstrap — a second install could not point its embedder/extractor slots away from the shipped defaults. Now honored (with a regression test).start-local.ps1probed fixed ports for its idempotence check and could mistake a coexisting install's gateway for its own — now probes the ports the install is configured for.- Memory integration smokes isolate to throwaway collections with a fail-closed write guard.
Known limitations (honest)
- zvec approximate search trails exact search on recall (21/40 vs 26/40 through the full production path); a rescoring tier is planned for v0.99 — Qdrant stays the recommended default.
- The document parser applies soft limits only (hard cap filed for v0.99).
pip-auditreports UNAVAILABLE (never silently "clean") when not installed.
Full notes in CHANGELOG.md. Release gate: clean-clone, shipped-install-path baseline — core 2846 passed / 0 failed / 6 skipped, gateway / pipeline / KMM / pip-check green — plus a live production-shaped stand-up (login, chat, fan-out, memory write + recall, restart survival) on a second isolated install.
BoB v0.97.0
BoB v0.97.0
Added
- Chinese localization (Simplified + Traditional). The desktop app UI in en / zh-Hans (简) / zh-Hant (繁) with a restart-free header language toggle, plus a backend per-turn locale directive (English path byte-identical).
- Codex planner honors an explicitly-pinned model. When a specific model is pinned (
switch_model/state.model_override), agpt-profile face runs that chosen GPT model natively under a ChatGPT login instead of only the profile default — no LiteLLM proxy. (A GUI model-picker control is a follow-up.) - Faces know they're running inside BoB. An opt-in spawn-identity card names the platform, the face (name / role), and the backend serving it. Code default off (byte-identical); the shipped
.envopts in (BOB_IDENTITY_ENABLED).
Changed
- Removed the preview web UI — the desktop app is the GUI. The Preact browser stopgap is retired; the gateway now serves the JSON + WebSocket API only.
Fixed
- Codex
health_checkis CLI-only — no longer strands a native-GPT face under a team health-walk when the LiteLLM proxy is down.
Full notes in CHANGELOG.md. Reviewed by three independent models (Claude / GPT / Gemini) — no release-blocker. Manual gates for a full local run: KMM desktop visual check, native-Chinese translation review, and the LiteLLM-via-Codex worker path.
BoB v0.96.0 - first public release
Build - Orchestrate - Bind - a self-hosted, single-operator multi-agent orchestration platform. Your machine, your keys; its job is everything past aggregating models: routing work to the right model, fanning it out across many, deliberating in a council, and - the part most tools skip - verifying the result before it reaches you.
Headless-first (CLI / MCP / agent is the usable front door). The web and Kotlin Multiplatform desktop GUIs ship as a preview. Single-operator, loopback by default - the gateway is exposable for trusted remote access behind a TLS-terminating reverse proxy (read SECURITY.md first). Windows-first install.
Get started
git clone https://github.com/tyoung515-svg/bob.git
cd bob
./install-bob.ps1See README.md to get going, ARCHITECTURE.md for the operating model, and SECURITY.md before exposing anything. Full notes in CHANGELOG.md.
Apache-2.0. A Canopy Seed project.