Skip to content

Releases: tyoung515-svg/bob

BoB v0.99.0 — memory + bridge

Choose a tag to compare

@tyoung515-svg tyoung515-svg released this 20 Sep 19:30

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

Choose a tag to compare

@tyoung515-svg tyoung515-svg released this 13 Jul 06:22

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_events on 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-mode simple_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; bundled three.js + 3d-force-graph with 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 to http://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 :6333 deliberately, set the URL explicitly — see UPGRADE.md.
  • Qdrant healthcheck matches the HTTP status line only, so a response body can't false-pass the probe.
  • run_baseline_tests.ps1 reports 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 \n literally instead of breaking lines.
  • CI (carried forward from the 0.98.0 tag): committed the gradlew exec bit for Linux runners, normalized POSIX TimeoutExpired bytes 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_events opt-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

Choose a tag to compare

@tyoung515-svg tyoung515-svg released this 12 Jul 12:14

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 zvec embedded store runs as a supervised child process owned by core (crash → clean error, next call restarts it). Opt in via config/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_doc with 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_k valid 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 — see UPGRADE.md.
  • Compose project naming is pinned and fixed container names are removed, so two installs coexist on one host (distinct COMPOSE_PROJECT_NAME + the new BOBCLAW_*_PORT datastore-port overrides). Existing installs: see UPGRADE.md before your next compose 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 /healthz over bash /dev/tcp.
  • MEMORY_SLOTS_FILE was 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.ps1 probed 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-audit reports 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

Choose a tag to compare

@tyoung515-svg tyoung515-svg released this 05 Jul 08:11

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), a gpt-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 .env opts 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_check is 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

Choose a tag to compare

@tyoung515-svg tyoung515-svg released this 01 Jul 16:52

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.ps1

See 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.