v0.8.0 — Agent onboarding launcher
vibe-council v0.8.0 — Agent onboarding launcher (vibe init-agent)
Ready for the v0.8.0 tag — not yet tagged. The version bump (
backend/__init__.py,
pyproject.toml,uv.lock) and the datedCHANGELOG.mdsection are done
(chore: prepare v0.8.0 release); the repo now reports0.8.0. The git tag and the GitHub
Release are still a separate, manual step — see §"Final release checklist" below and
docs/release-checklist.md.
The agent onboarding launcher release, opening the v0.8.x "Solidify the core, local-first"
line. It adds a single onboarding entry point — vibe init-agent — that composes the existing
vibe project doctor / vibe guide machinery into a report + guarded write, plus a mandatory
localhost-only test guard. Everything is local-first, read-only-by-default, and append-only when
writing: no preference behavior, no .council/profile.* store, no network/LAN/hosted surface, no
new dependency. Based on and crediting
karpathy/llm-council.
No commercial-clearance claim. License/provenance remains an unresolved "Question 0"
commercial gate; noLICENSEis added.
How v0.8.x was planned (council-backed + Fable architecture)
- Council-backed planning (docs-only):
v0.8.x-council-debate.md
weighed candidate directions and the council (twovibe review --preset balancedpasses)
rejected "preference behavior as the headline" as premature;
v0.8.x-phase-brief.mdcaptured the resolved theme; and
v0.8.x-fable-input.mdwas the curated handoff. - Fable architecture plan (docs-only, version-line — not patch-by-patch, architecture-only, no
implementation):v0.8.x-architecture-plan.mdpreserved the
council's "Solidify the core, local-first" pivot and resolved the open questions into a 9-PR
sequence. v0.8.0 is the first three implementation PRs below.
What this release adds
vibe init-agent report mode (PR 1)
- A deterministic, read-only onboarding report: a
vibe project doctorreadiness summary,
then per agent (claude/codex/fable) exactly whatvibe guide … --writewould do to the
fixed files (would create / would append / already-present-would-skip), plus the recommended next
commands (vibe project doctor,vibe guide …,vibe context export …). - States that
vibeis the real CLI and/councilis not (a future host-command idea only), that
the profile/preferences are documentation/advice only, and that personalization may tighten
but never loosen a safety/security/no-stage/trust rule. - Writes nothing, creates no
.council/, runs no commands, makes no model/provider/network call.
No path argument; operates only on the current working directory.
vibe init-agent --write guarded append mode (PR 2)
vibe init-agent --write --agent {claude|codex|fable}... [--role <role>] --yesappends the
selected agents' guide sections to the fixed per-topic files — Claude →CLAUDE.md, Codex →
AGENTS.md, Fable →FABLE.md— via the existing_guide_appendmachinery.- Append-only, marker-skip idempotent (re-runs byte-identical; existing content preserved; an
already-present section is skipped, not duplicated); the appended section is byte-identical to
vibe guide <agent> --role <role> --write(shared helper — no divergence; no guide subprocess). - Safety:
--writerequires--yes(a deterministic confirmation) and an explicit--agent
(a bare--writenever writes three files); no path/target argument (the fixed defaults are the
whole write surface — no traversal/injection); a target that exists as a non-regular file fails
cleanly; creates no.council/.
Localhost-only guard (PR 3)
- A tests-only guardrail (
tests/test_localhost_guard.py) that locks the local-first
invariant — no production change (the Workbench panel already enforces it): the panel binds
loopback only, non-local hosts (0.0.0.0,::, representative LAN/external IPs, empty) are
rejected, a runtime check confirms every observedsocket.bindis loopback,
host_header_is_localaccepts only loopbackHostheaders, and a static "no second listener"
scan asserts no module outsidebackend/workbench_panel.pyconstructs a listening socket/server. - No LAN/hosted mode, no host-header/state-token change.
Safety posture — unchanged from v0.7.1
- No arbitrary shell, no auto-execution, no Workbench trust-boundary loosening, no command
allowlist expansion. Approval stays separate from execution; the deterministic trust boundary
remains authoritative. - No preference parsing/application, no
.council/profile.*local store, no preference applier —
personalization stays advisory/pointer-only and tighten-only. - No vector DB / database / hosted stack, no model/provider/network call from the new commands,
no new dependency (the onlyuv.lockchange is thevibe-councilself-version line). Redaction
lint stays 0 critical (30 warnings);context checkand MCP health stay 21/21.
Explicit non-goals (deferred, not started in this release)
No v0.8.1 RELEASES.md / vault-polish work yet · no v0.8.2 preference schema/validator yet · no local
.council/profile.* store · no preference applier · no named profiles · no Workbench-UX changes · no
/council real command · no hosted / network / LAN / mobile mode. v0.8.0 is the launcher + localhost
guard only.
Release checklist (must be clean before tagging)
-
uv run python -m unittest discover -s tests -t .is green (849 tests). -
uv run python -m backend.cli --versionprintsvibe-council 0.8.0. -
vibe lint --redactionreports 0 critical (30 warnings, expected). -
vibe decisions lintpasses. -
vibe project doctorreports READY. -
vibe context checkscores 21/21. -
vibe mcp inspect --context --healthscores 21/21. -
uv syncproduces nouv.lockdiff beyond the intentional self-version sync in this PR. - No
.council/artifact (incl..council/runtime/payloads/and.council/profile.*)
staged/committed; no rootCLAUDE.md/AGENTS.md/FABLE.md; no private/local plan file staged.
Final release checklist (manual steps, after this PR merges)
These are not automated by this PR — a maintainer performs them once the checklist above is clean
on master:
- Merge this PR (
chore: prepare v0.8.0 release) intomaster. - On the merged
master, re-confirm: tests green,vibe --versionreportsvibe-council 0.8.0,
redaction lint 0 critical (30 warnings), decisions lint passes,vibe project doctorREADY,
context check21/21, MCP health 21/21, anduv syncshows no drift. - Verify
git status --shortand the merged diff carry no private/local artifacts
(.council/,.council/profile.*, the two untracked private plan files,.env/.venv//data/,
secrets, generated packs/exports, rootCLAUDE.md/AGENTS.md/FABLE.md). - Create an annotated git tag:
git tag -a v0.8.0 -m "vibe-council v0.8.0"on the merge
commit, thengit push origin v0.8.0. - Create the GitHub Release for
v0.8.0manually, using this document
(docs/releases/v0.8.0.md) as the release-notes body.
Known limitations
vibe init-agentcomposes existing generators — it does not seed the vault, run a model, or
initialize a project beyond appending guide blocks to the fixed files.- Intentionally local-only — the Workbench binds
127.0.0.1; agent intake is file/CLI only; the
localhost guard is a code-drift tripwire, not a runtime sandbox. - Personalization is still advisory/documentation — no preference is read or applied yet.
- No hosted/team/mobile/voice — deferred to later phases.
Next after v0.8.0
Cut the v0.8.0 tag/GitHub Release, then continue the v0.8.x line per
docs/fable/v0.8.x-architecture-plan.md: v0.8.1 (capped
RELEASES.md + a documented STATUS-trimming workflow) and v0.8.2 (the tighten-only preference
schema + a read-only validator in vibe project doctor, full review; no application). Preference
application, a .council/profile.* store, mobile/LAN/voice, and hosted/team stay deferred to v0.9.x
behind their own gated designs.