Changelog
May 10, 2026 · View on GitHub
All notable changes to this project.
The format follows Keep a Changelog, and the project adheres to Semantic Versioning.
[0.18.0] — 2026-05-10
Minor release. Adds first-class integration with the external Brain CLI/MCP
memory system while keeping agentic-stack's project-local .agent/ runtime
independent and optional.
Added
- Brain integration. Adds
agentic-stack brain ...and.agent/tools/brain_bridge.pyso projects can use the externalcodejunkie99/brainCLI/MCP server as a git-backed long-term memory layer without vendoring the Rust workspace into agentic-stack. - Brain seed skill. Adds a
brainskill that teaches host agents when to query or write Brain memory and how to avoid storing secrets.
Release
- Tag
v0.18.0cut from master. - GitHub release: https://github.com/codejunkie99/agentic-stack/releases/tag/v0.18.0
Formula/agentic-stack.rbbumped to v0.18.0 in a follow-up commit after the tag tarball existed and its sha256 could be computed.- Tarball sha256:
ef2d9d9209755e3dd1888064eae48a78add44b2140a78b7952664d7c4945ba85.
[0.17.0] — 2026-05-10
Minor release. Clears the open PR queue and ships new harness adapters, the Mission Control beta, semantic lesson retraction, and the consolidated pytest layout.
Added
- GitHub Copilot CLI adapter. Installs
AGENTS.md,.github/instructions/agentic-stack.instructions.md,.github/hooks/agentic-stack.json, and a.github/skills/mirror so Copilot CLI can load the portable brain and run memory hooks. - Google Gemini CLI adapter. Installs
gemini.mdplus a.gemini/skills/mirror for Gemini CLI projects. agentic-stack mission-control. Adds a beta local web dashboard with a snapshot mode, local-only event store, static assets, collectors, renderer, and tests.- Semantic lesson retraction. Adds
.agent/tools/retract_lesson.pyso an accepted lesson can be markedstatus=retractedwith a required rationale while preserving append-onlylessons.jsonlhistory.
Changed
- README, getting-started docs, POSIX installer help, and PowerShell installer help now list all 12 adapters and the Mission Control command.
- Proactive recall now considers only the latest append-only state for each lesson id, excluding retracted lessons from future recall results.
LESSONS.mdrendering deduplicates append-only lesson state by id so the rendered markdown reflects the current status without losing audit history.- Tests now live under
tests/withpytest.ini, including coverage for Copilot CLI, Gemini, Mission Control, upgrades, onboarding, and lesson retraction.
Release
- Tag
v0.17.0cut from master. - GitHub release: https://github.com/codejunkie99/agentic-stack/releases/tag/v0.17.0
Formula/agentic-stack.rbbumped to v0.17.0 in a follow-up commit after the tag tarball existed and its sha256 could be computed.- Tarball sha256:
704f8e7f05123b3791187e16f352936199e5e57e6855564c773961900ea13dd6.
[0.16.1] — 2026-05-10
Patch release. Ships the production-ready getting-started guide from PR #49 and fixes stale version text in the onboarding banner.
Changed
docs/getting-started.mdnow leads with the Homebrew install path while documenting source-checkout and PowerShell flows separately.- The guide now explains which commands are available through the global
agentic-stackwrapper and which source-checkout users should run through./install.sh. - The guide now documents current project-management verbs, including
dashboard,status,doctor,upgrade,sync-manifest,add,remove, andmanage.
Fixed
- The onboarding banner now derives its displayed version from
harness_manager.__version__instead of showing stalev0.8.0text.
Release
- Tag
v0.16.1cut from master. - GitHub release: https://github.com/codejunkie99/agentic-stack/releases/tag/v0.16.1
Formula/agentic-stack.rbbumped to v0.16.1 in a follow-up commit after the tag tarball existed and its sha256 could be computed.- Tarball sha256:
4dc3bfeb60b53895baf15b8fb0932245cb44c5d1d850ddc3474d83a38415b398.
[0.16.0] — 2026-05-09
Minor release. Adds a safe installed-project upgrade path and repairs skill manifest drift so newly copied skills can trigger reliably after version upgrades.
Added
agentic-stack upgrade. Adds a safe project migration verb that refreshes skeleton-owned.agentinfrastructure, copies new skills, supports--dry-run/--yes, and leaves adapter configs plus user memory untouched.agentic-stack sync-manifest. Rebuilds.agent/skills/_manifest.jsonlfrom installedSKILL.mdfrontmatter so copied skills can trigger correctly.
Fixed
- Install/add now re-sync the skill manifest when a project already has
.agent/skills, preventing_index.md/_manifest.jsonldrift. doctornow warns when Claude Code hook commands reference missing.agentPython files or when hook scripts are present but not wired in.claude/settings.json.
Migration
After upgrading the CLI, run agentic-stack upgrade --dry-run in installed
projects to preview safe .agent infrastructure updates, then
agentic-stack upgrade --yes to apply them. Run agentic-stack sync-manifest
if a project's skill manifest needs repair without copying files.
Release
- Tag
v0.16.0cut from master. - GitHub release: https://github.com/codejunkie99/agentic-stack/releases/tag/v0.16.0
Formula/agentic-stack.rbbumped to v0.16.0 in a follow-up commit after the tag tarball existed and its sha256 could be computed.- Tarball sha256:
55ffef80e990f1ceed6ec8016d66e8bab8b328762b3f5a3fdd80375dfa715dae.
[0.15.0] — 2026-05-06
Minor release. Adds a production dashboard TUI for installed agentic-stack projects, with the trust-console inspection surface folded into the same user-facing entrypoint.
Added
agentic-stack dashboard/dash. Adds a terminal dashboard for project health, installed adapters, doctor checks, harness verification, memory, team brain, skills, managed instances, transfer, and local data exports.- Trust-console parity. The dashboard includes a per-harness verify matrix,
team brain status/init, skills listing, active instance listing,
accepted/rejected memory review, and
memory_why()evidence lookup. - Plain renderer.
agentic-stack dashboard --plainand non-TTY fallback produce a script-safe text dashboard for logs, agents, and tests. - Interactive dashboard coverage. Adds local tests for renderer output, CLI aliases, trust-console parity sections, non-TTY fallback, up/down navigation, refresh, quit, and Enter-open behavior.
Changed
- Bare interactive
agentic-stack/./install.shopens the dashboard when an existing.agent/install.jsonis present. Non-TTY shells keep printing command guidance instead of launching an interactive UI. - README, POSIX installer help, and PowerShell installer help now document the dashboard entrypoint.
Fixed
test_claude_code_hook.pynow works both as a standalone validation script and as a pytest-collected module by providing a realmodfixture.
Migration
No migration required. Existing projects can run agentic-stack dashboard
after upgrading. Re-run an adapter install only if you want the latest copied
adapter guidance files in a project.
Release
- Tag
v0.15.0cut from master. - GitHub release: https://github.com/codejunkie99/agentic-stack/releases/tag/v0.15.0
Formula/agentic-stack.rbbumped to v0.15.0 in a follow-up commit after the tag tarball existed and its sha256 could be computed.- Tarball sha256:
e3fe0dde7a9997086a378123a365eced5514ad1a68871b294195fbf514611131.
[0.13.0] — 2026-05-02
Minor release. Adds an onboarding-style transfer wizard for moving a portable
.agent brain into Codex, Cursor, Windsurf, or terminal-only projects with a
generated curl/PowerShell import command.
Added
agentic-stack transferwizard. Adds an onboarding-style TUI that parses natural-language requests such asmove my memory into Codex, previews the target adapter files, asks for confirmation, and either generates an import command, applies locally, or both.- Portable transfer bundles. Adds canonical JSON + gzip + base64url bundles with SHA-256 verification. The importer merges preferences and accepted lessons idempotently, restores selected memory files, copies skills, records import metadata, and installs selected adapters through the existing harness manager.
- Full memory intent.
move my memorynow means preferences, accepted lessons, skills, working memory, episodic/history logs, and candidate lessons. Data-layer exports, flywheel traces, runtime indexes, and caches stay out unless future scopes explicitly add them. - Curl and PowerShell bootstraps. Adds
scripts/import-transfer.shandscripts/import-transfer.ps1so another terminal can import a transfer bundle without manually cloning the repo first.
Changed
- Windsurf installs a modern
.windsurf/rules/agentic-stack.mdworkspace rule and still writes legacy.windsurfrulesfor older Windsurf builds. agentic-stack transfer exportandagentic-stack transfer importprovide non-interactive surfaces for scripts and CI-style handoff flows.
Fixed
- Transfer export blocks secret-like content, including private keys and common API token patterns, before payload generation.
- Fresh Codex imports now copy the full
.agentbrain before installing the CodexAGENTS.mdand.agents/skillsadapter wiring.
Migration
No migration required. Existing installs keep working. Run
agentic-stack transfer from a project that already has .agent/ to create or
import a transfer bundle.
Release
- Tag
v0.13.0cut from master. - GitHub release: https://github.com/codejunkie99/agentic-stack/releases/tag/v0.13.0
Formula/agentic-stack.rbbumped to v0.13.0 in a follow-up commit after the tag tarball existed and its sha256 could be computed.- Tarball sha256:
83f71bab05bd607f3590571b5422a0cc74650d69ff5d818b6682d0f877e16514.
[0.12.0] — 2026-04-27
Minor release. Adds the opt-in tldraw seed skill for live canvas diagrams
and a skill-local snapshot store. The feature stays beta and off by default.
Added
tldrawseed skill — live canvas diagrams. Adds.agent/skills/tldraw/SKILL.mdwith MCP tool guidance, shape constraints, and a self-rewrite hook for diagram, sketch, wireframe, flowchart, whiteboard, and architecture visualization prompts.- Skill-local snapshot store. Adds
.agent/skills/tldraw/store.pywithsnapshot,list,load, andarchiveCLI/API support. Runtime output is local and gitignored under.agent/skills/tldraw/:snapshots.jsonl,snapshots/, andINDEX.md. - Opt-in feature flag. Onboarding now writes a
tldrawbeta feature flag, default off. The skill loader skips flagged skills unless.agent/memory/.features.jsonexplicitly enables them. - Manual MCP config source. Adds
adapters/_shared/tldraw-mcp.jsonas the canonical tldraw MCP config block users can merge into Claude Code, Cursor, or Antigravity after enabling the feature.
Changed
- Seed skill count is now nine:
skillforge,memory-manager,git-proxy,debug-investigator,deploy-checklist,design-md,data-layer,data-flywheel, andtldraw. - tldraw persistence is intentionally skill-local storage, not a fifth memory layer: it has no dream-cycle, clustering, recall, or semantic-memory lifecycle.
- Default adapter installs no longer wire beta tldraw MCP config automatically.
Fixed
- Updated the tldraw validation suite to target
.agent/skills/tldraw/store.pyinstead of the removed.agent/memory/visual/visual_memory.py. store.pyrendersINDEX.mdwhile holding the JSONL lock so concurrent snapshots cannot leave the index stale.- Added coverage for feature-gated skill loading, no default MCP install, path traversal rejection, malformed JSONL recovery, same-second snapshot ids, and concurrent snapshots.
Migration
No migration required. Existing installs keep tldraw disabled until users opt
in through onboarding reconfiguration or .agent/memory/.features.json.
Credits
- PR #11 by @Siddharth11Roy, with review fixes and release prep by Codex.
Release
- Tag
v0.12.0cut from master. - GitHub release: https://github.com/codejunkie99/agentic-stack/releases/tag/v0.12.0
Formula/agentic-stack.rbbumped to v0.12.0 in a follow-up commit after the tag tarball existed and its sha256 could be computed.- Tarball sha256:
cd18a0cf82e027390ef10a102ec4bfed26fc45114f6ce96c0787e5a1cf0dce26.
[0.11.2] — 2026-04-26
Patch release. Makes the data-layer dashboard easier to access from coding
tools by turning the injected data-layer skill into the natural-language
dashboard surface.
Added
- Injected dashboard behavior. The
data-layerskill now triggers on plain phrases such as "show me the dashboard", "what did my agents do", "agent status", and "usage report". When the model decides the user wants local agent activity, the skill tells it to render the terminal dashboard directly instead of making the user remember flags. - Natural-language exporter requests. The existing exporter now accepts
requests such as
python3 .agent/tools/data_layer_export.py show me last 7 days by hour. It maps common phrases to--windowand--bucket; explicit flags still override the natural-language text for scripts and automation.
Changed
- The terminal dashboard now uses the same rail/marker visual language as the
onboarding flow while keeping
dashboard.tui.txtplain text with no ANSI escape codes. dashboard-summary.jsonrecords the natural-language request that produced the export when one was provided.
Migration
No migration required. Existing flag-based commands still work.
Release
- Tag
v0.11.2cut from master. - GitHub release: https://github.com/codejunkie99/agentic-stack/releases/tag/v0.11.2
Formula/agentic-stack.rbbumped to v0.11.2 in a follow-up commit after the tag tarball existed and its sha256 could be computed.- Tarball sha256:
b9eb098466376c13e087dc91a0655d97481dfd13a6f640989384881990eb1e58.
[0.11.1] — 2026-04-26
Patch release. Makes the data-layer dashboard visible directly in coding-tool terminals and adds a visual SVG explainer for the data-layer flow.
Added
- Terminal dashboard by default. The existing
python3 .agent/tools/data_layer_export.py --window 30d --bucket daycommand now prints a compact TUI-style dashboard after writing exports. It shows resource numbers, latest bucket activity, top harnesses, top workflows, top categories, and artifact paths without requiring a browser. dashboard.tui.txt. The same terminal dashboard is saved next todashboard.html, CSV/JSON exports, anddaily-report.mdfor agents and users who want to inspect or attach a plain-text report.docs/data-layer.svg. README anddocs/data-layer.mdnow include a visual of the local data-layer flow: input streams, exporter, browser dashboard, terminal dashboard, CSV/JSON, and approved handoff.
Changed
dashboard-report.jsonnow advertises the terminal dashboard artifact.- Data-layer docs no longer require a separate command to see the terminal view; the normal export command prints it.
Migration
No migration required. Existing data-layer commands still work; they now print the terminal dashboard in addition to the previous status lines.
Release
- Tag
v0.11.1cut from master. - GitHub release: https://github.com/codejunkie99/agentic-stack/releases/tag/v0.11.1
Formula/agentic-stack.rbbumped to v0.11.1 in a follow-up commit after the tag tarball existed and its sha256 could be computed.- Tarball sha256:
c0f09417c6caf34ba712d03271177ea2779af50e86a19bf76c10ba5d50bcff3e.
[0.11.0] — 2026-04-26
Minor release. Adds two local-first data capabilities: a cross-harness
monitoring/data layer and an approved-run data flywheel. Both stay private by
default, write regenerated runtime artifacts under ignored .agent/
subdirectories, and avoid remote telemetry or model training.
Added
data-layerseed skill — local cross-harness monitoring. Adds.agent/skills/data-layer/SKILL.mdand.agent/tools/data_layer_export.pyto export dashboard-ready local data across Claude Code, Hermes, OpenClaw, Codex, Cursor, OpenCode, and custom loops sharing the same.agent/brain. Outputs include agent events, cron timelines, KPI summaries, token/cost estimates, category breakdowns,dashboard.html, anddaily-report.md. Runtime exports live under.agent/data-layer/, which is gitignored. Thanks to @danielfoch for PR #25.data-flywheelseed skill — approved runs to reusable artifacts. Adds.agent/skills/data-flywheel/SKILL.mdand.agent/tools/data_flywheel_export.pyto turn human-approved, redacted runs into trace records, context cards, eval cases, training-ready JSONL, and flywheel metrics. Runtime exports live under.agent/flywheel/, which is gitignored. The tool is local-only, model-agnostic, and does not train models or call external APIs. Thanks to @danielfoch for PR #26.- Schemas, sanitized examples, tests, README sections, and architecture docs for both local data features.
Changed
- Seed skill count is now eight:
skillforge,memory-manager,git-proxy,debug-investigator,deploy-checklist,design-md,data-layer, anddata-flywheel. docs/architecture.mdnow describes five local modules: memory, skills, protocols, data layer, and data flywheel.
Migration
brew upgrade agentic-stack is enough. There are no on-disk schema changes.
The new runtime directories, .agent/data-layer/ and .agent/flywheel/, are
private and regenerated; both are gitignored.
Release
- Tag
v0.11.0cut from master. - GitHub release: https://github.com/codejunkie99/agentic-stack/releases/tag/v0.11.0
- Superseded by v0.11.1 before the Homebrew formula bump.
Credits
- PR #25 and PR #26 by @danielfoch.
- Merge conflict resolution, verification, and release prep by Codex.
[0.10.0] — 2026-04-26
Minor release. Adds the design-md seed skill (sixth seed skill in the
brain), and fixes a hard crash on macOS-default Python 3.9 that hit every
brew user on first run.
Added
design-mdseed skill — DESIGN.md / Google Stitch support. A new portable skill that points coding agents at a rootDESIGN.md(Google Stitch format) as the visual-system source of truth. Loads only whenDESIGN.mdexists at the project root; default behavior is read-only on the contract file, and validation prefersnpx @google/design.md lint DESIGN.mdover hand-checks. Brings the seed skill count from five to six. Thanks to @danielfoch for the contribution (PR #21). Decision recorded in.agent/memory/semantic/DECISIONS.md.
Fixed
- Python 3.9 crash on first run (#27). Every brew user on macOS-default
Python 3.9 hit
TypeError: unsupported operand type(s) for |: 'type' and 'type'immediately afterbrew install agentic-stackbecauseharness_manager/used PEP 604 union syntax (Path | str) that requires Python 3.10+ at runtime. Addedfrom __future__ import annotations(PEP 563) to the eight affected files so all annotations are stored as strings and never evaluated at import time. Works on Python 3.7+, which covers every macOS-shipped Python in the wild. Zero-cost vs. the reporter's suggestedpython@3.10brew dep (~150 MB pull). Thanks to @WhoLsJohnGalt for the precise repro and the suggested workaround.
Migration
brew upgrade agentic-stack is enough — no on-disk schema changes. Users
on Python 3.9 who hit #27 on v0.9.x can upgrade and the crash goes away.
Users with existing .pi/extensions/memory-hook.ts from v0.9.0 already
got the fixes via ./install.sh pi after the v0.9.1 upgrade; this release
adds the design-md skill on top.
Release
- Tag
v0.10.0cut from master. - GitHub release: https://github.com/codejunkie99/agentic-stack/releases/tag/v0.10.0
Formula/agentic-stack.rbbumped to v0.10.0 in a follow-up commit (same flow as v0.8.0 → v0.9.0 → v0.9.1): tag first, compute sha256, then bumpurl+sha256+versiontogether so brew always points at a real installable artifact.
Credits
- PR #21 by @danielfoch (design-md skill), with cross-model review fixes applied as a follow-up commit.
- Issue #27 by @WhoLsJohnGalt — clean repro of the macOS Python 3.9 crash including a working sed-based workaround.
[0.9.1] — 2026-04-26
Patch release that closes the gap between v0.9.0 and a working pi adapter. Every brew user on v0.9.0 hit the first bug; the rest are quieter but make the dream cycle and the cross-harness episodic log actually correct.
Fixed
agentic-stack picrashed for every brew user withModuleNotFoundError: No module named 'harness_manager'. The v0.9.0 Formula didn't includeharness_manager/inpkgshare.install, soinstall.shcouldn't dispatch. Adds it back.- Pi dream cycle never fired. The
session_shutdownhandler filtered onevent.reason, but Pi'sSessionShutdownEventcarries noreasonfield — verified againstpi-coding-agenttypes.d.ts and the emit site atagent-session.js:1638. The filter rejected every event, soauto_dream.pynever ran. Filter dropped; re-entrancy guard added. - Pi edit reflections lost the diff. Hook accessed
event.input.edits[0]but Pi'sEditToolInputis flat{ path, oldText, newText }(noeditsarray — that's MultiEdit on Claude Code). Reflections silently degraded toEdited <path>with no old/new content. Read the flat fields. decay.pycrashed comparing aware-UTC entries to naive cutoff. The newsession_shutdownhook surfaced this on every clean pi exit. Cutoff is nowdatetime.now(timezone.utc); entry timestamps are normalised to UTC before comparison.- Naive-local Python timestamps drifted against the UTC decay window.
Decay's "naive == UTC" assumption was correct only if writers emitted UTC.
They didn't:
post_execution,on_failure,learn,graduate,promote,review_state,render_lessonsall wrote naive-local. Every writer now emits aware UTC; every reader (salience,show._human_age/_daily_counts/failing_skills/last_dream_cycle,on_failure._count_recent_failures,review_state._age_factor,archive) normalises naive timestamps to UTC before comparison. - One bad regex in
hook_patterns.jsondisabled every user pattern in the Pi hook. Pre-fix used a single combined RegExp per list, caught any error, returned null for both. Now per-fragment validation with incremental merge — same posture asclaude_code_post_tool.py's_filter_valid/_build_with_fallback. auto_dreamlost entries that landed mid-cycle. Original_write_entrieshad a truncate-before-lock window —open(path, "w")truncates BEFORE a lock can be taken. The deeper bug: even after fixing the inner race, anyappend_jsonl()between_load_entries()and_write_entries(kept)would be truncated away by the rewrite. The cycle now holds a single exclusive flock onAGENT_LEARNINGS.jsonlacross the entire read-modify-write window via_episodic_locked(). Mutually exclusive with_episodic_io.append_jsonl(same flock target). POSIX only; Windows falls back to historical best-effort behaviour._cachedShawent stale aftergit commitinside a pi session. TS hook cached the SHA per-process for performance, so every entry logged after a mid-session commit recorded the pre-commit SHA. Cache, but invalidate on bash commands matchinggit <subcmd>for HEAD-moving subcommands. Allows option flags betweengitand the subcommand (git -c key=val checkout main,git -C path switch dev).salienceover-scored future-skewed legacy rows. Legacy naive-local timestamps re-interpreted as UTC could read as a few hours in the future during the migration window.timedelta.daysthen went negative and recency exceeded the intended cap. Floor age at 0; clamp recency to ≤ 10.decayarchive filename used local date while cutoff was UTC.archive_{date}.jsonlnow uses UTC date so a tz-jumping user gets a deterministic path.
Changed
adapters/pi/adapter.jsonno longer manages.agent/harness/hooks/pi_post_tool.pyviafrom_stack. The TS hook is self-contained — all scoring + reflection inline, no Python subprocess per tool call. The .py still ships in the brain template under.agent/harness/hooks/for standalone use.tests/is now untracked and listed in.gitignore. CI never ran these (.github/workflows/ci.ymlrunstest_claude_code_hook.py+verify_*.pyat repo root). Pull from an older tag if you want the unittest suite locally.
Migration
brew upgrade agentic-stack is enough — there are no on-disk schema
changes. Existing pi installs with the v0.9.0 hook get the new logic on
the next ./install.sh pi. Existing .agent/memory/episodic/AGENT_LEARNINGS.jsonl
files with naive-local timestamps continue to work — readers normalise
them at compare time and writers emit UTC going forward.
Release
- Tag
v0.9.1cut from master atd7b70b2. - GitHub release: https://github.com/codejunkie99/agentic-stack/releases/tag/v0.9.1
Formula/agentic-stack.rbbumped to v0.9.1 in a follow-up commit (same flow as v0.8.0 → v0.9.0): tag first, compute sha256, then bumpurl+sha256+versiontogether so brew always points at a real installable artifact.- Tarball sha256:
09cc3b8c9ec159cf8b85cf672fc15a29e6bfa9377cc9c59dd270acd441ced568(verify locally withcurl -sL https://github.com/codejunkie99/agentic-stack/archive/refs/tags/v0.9.1.tar.gz | shasum -a 256)
Credits
PR #24 by @aliirz; Codex CLI used for an independent second-opinion review that surfaced the auto_dream window race + the SHA-regex narrowness.
[0.9.0] — 2026-04-23
Added
- Harness manager: manifest-driven adapter system. Each adapter now
ships an
adapters/<name>/adapter.jsondeclaring its files, collision policy, optional skills directory mirror, and named post-install actions. Adding a new adapter is now a JSON-only PR — no Python code, no test wiring, no class registration. Lives in the newharness_manager/Python package. ./install.sh add <adapter>— append an adapter to an existing project without re-running the onboarding wizard../install.sh remove <adapter>— confirmation prompt lists every file before deletion. Hard delete (no quarantine, no undo — git is the safety net). Reverses post-install actions automatically (e.g.,openclaw agents remove)../install.sh doctor— read-only audit of installed adapters. Verifies tracked files exist, post-install state is valid,.agent/brain is intact. Exits 0 on green, 1 on red. First run on a pre-v0.9.0 project asks before synthesizinginstall.json— never silently mutates../install.sh status— one-screen view of installed adapters, brain stats (skills/episodic/lessons), last-updated timestamp..agent/install.json— authoritative record of what's installed. Schema-versioned. Atomic write via tempfile + rename, fcntl-locked on POSIX.- PowerShell parity from day one.
install.ps1is now a 70-line thin dispatcher to the same Python backendinstall.shuses. The newadd/remove/doctor/statusverbs behave identically across mac/Linux/Windows. Was 270+ lines of duplicated bash-shaped logic. docs/per-harness/standalone-python.md— gap-fill for the only harness that didn't have a per-harness doc.
Fixed
- #18 — Claude Code hook commands break when cwd is not the
project root.
adapters/claude-code/settings.jsontemplate now uses{{BRAIN_ROOT}}placeholder, which the manifest backend substitutes with$CLAUDE_PROJECT_DIRat install time. Hook commands resolve correctly regardless of which directory Claude Code's cwd points at. Thanks to @palamp for the report and the proposal that shaped the larger feature.
Security
- Manifest path-safety hardening (
harness_manager/schema.py). The pre-existing path-traversal guard only tokenized on/and only treated/-prefixed paths as absolute, so Windows-style inputs (..\..\outside,\\server\share,C:\temp\x,C:foo) bypassed validation and could let install/remove read or write outside the adapter/project roots when run on Windows. Also extended the same validation toskills_link.targetandskills_link.dst, which were previously only checked for presence — a manifest could otherwise point the symlink/rsync into arbitrary filesystem locations on any platform. Both POSIX and Windows separators are now normalized before traversal detection, and every common absolute-path form (POSIX root, Windows root, UNC, drive-letter) is rejected.
Changed
install.shshrinks from 175 lines of bash case-statements to 35 lines of dispatcher. All install logic moved toharness_manager/. Existing CLI surface preserved:./install.sh <adapter> [target] [--yes|--reconfigure|--force]works identically.install.ps1shrinks from 270+ lines to 70.
Migration
Existing v0.8.x users: brew upgrade agentic-stack, then run
./install.sh doctor in your project. Doctor detects existing
adapters from filesystem signals and asks before writing install.json.
Subsequent doctor runs are read-only.
Release checklist (post-merge, pre-brew upgrade)
The Homebrew Formula (Formula/agentic-stack.rb) intentionally still
points at the v0.8.0 tarball in this PR. The v0.9.0 release flow is:
- Merge this PR to master.
- Tag
v0.9.0on master and create the GitHub release. - Run
curl -L https://github.com/codejunkie99/agentic-stack/archive/refs/tags/v0.9.0.tar.gz | shasum -a 256to compute the new sha256. - Open a follow-up PR that updates
url,sha256,versiontogether, and addsharness_manager+install.ps1to thepkgshare.installline. This is the same pattern as commitabaa352(the v0.8.0 sha256 bump).
Reason for the split: a Formula change that adds harness_manager/ to
pkgshare.install while still pointing at the v0.8.0 tarball would fail
brew install (file-not-found in the staged tarball). Bumping all four
fields together as a follow-up after the tag exists keeps the formula
always pointing at a real, installable artifact.
0.8.0 — 2026-04-21
Added
- Google Antigravity adapter.
./install.sh antigravitydrops anANTIGRAVITY.mdinto the project root so Antigravity agents pick up the portable brain in.agent/. Matches the pattern of the other root-instruction harnesses. Brings the supported-harness count to 9. Thanks to @smartsastram for the contribution (PR #9). - Rich
PostToolUseepisodic logging for Claude Code. New.agent/harness/hooks/claude_code_post_tool.pyreads the JSON payload Claude Code sends via stdin and derives a real action label, importance score, and non-empty reflection per tool call. Replaces the old hardcodedpost-tool okthat produced identical entries every session and left the dream cycle with nothing to cluster on. Ships with a 54-test validation suite (test_claude_code_hook.py). Thanks to @aliirz for the contribution (PR #8). - User-owned stack tuning via
hook_patterns.json. Drop your own high-stakes and medium-stakes command patterns in.agent/protocols/hook_patterns.jsonso the hook scoresvercel deploy,supabase migrate, etc. correctly for your stack. Ships with empty arrays and a_examplessection; universal patterns stay hardcoded. on_failure()severity overrides. Newimportance=andpain_score=parameters so a failed production deploy records its real severity instead of the flatimportance=7 / pain_score=8defaults. Lets the dream-cycle salience formula actually distinguish a failed migration from a failedls.- Bash wrapper-aware failure detection.
_is_success()now detects explicit exit-masking wrappers (|| true,|| :,|| exit 0,; true) and falls through to stderr-based signal when they are present, so masked production failures are still captured. Quoted strings andset +eare excluded from masking detection to avoid false positives on patterns likeecho '... || true ...'andset +e; grep X log; set -e. - 33-check regression verifier.
verify_codex_fixes.pyvalidates every classification path after 7 rounds of codex review. Namedverify_*.py(nottest_*.py) to avoid pytest collection side effects. Uses a TMPDIR /$HOME/ repo-local /VERIFY_TMPDIRfallback chain so it runs in constrained sandboxes.
Fixed
- Bash
exit_code=0no longer second-guessed via stdout. Commands likegrep Error /var/log/app.logandcat failures.logused to be recorded as failures because the output contained error-looking strings. Exit code is now authoritative for Bash responses. - User regex fragments in
hook_patterns.jsoncan't crash the hook. Each fragment is validated standalone viare.compile; invalid ones are dropped with a stderr warning. Merged-compile failures (e.g., a fragment like(?i)foothat validates alone but breaks once embedded) fall back to an incremental build that drops only the offending fragments, preserving universals and good user fragments. on_failurereflection no longer prefixesstr:for string errors. OnlyExceptionobjects get a type-name prefix now.
Changed
- Wizard version bumped to 0.8.0 in
onboard_render.py. - Wizard outro now points users at
.agent/protocols/hook_patterns.jsonso they know they can extend the importance scorer with their stack's service names.
0.7.2 — 2026-04-20
Changed
- README repositioning. Leads with the actual buyer pain — switching coding-agent tools keeps resetting how your agent behaves — so the adapter list, wizard, and memory architecture read as proof instead of preamble. Follow / coded-using / article framing moved into the Credits section.
0.7.1 — 2026-04-20
Changed
- Relicensed from MIT to Apache 2.0.
0.7.0 — 2026-04-20
Added
learn.pyhost-agent tool. Teach the agent a rule in one command:python3 .agent/tools/learn.py "Always serialize timestamps in UTC" --rationale "past cross-region bugs". Stages, graduates, and renders in one step. Idempotent. Cleans up staged files on heuristic reject; preserves on crashes so retries work.recall.pyhost-agent tool. Surfaces graduated lessons relevant to what you're about to do. Ranked lexical-overlap hits with per-entry source labels. Mergeslessons.jsonland seed bullets inLESSONS.mdso graduating your first lesson doesn't hide the seeds. Logs every recall to episodic memory for audit.show.pyhost-agent tool. Colorful dashboard of brain state (episodes, candidates, lessons, failing skills, 14d activity sparkline).--json/--plain/NO_COLORflags.- Adapter wiring for recall across all 8 harnesses. Every adapter
(
claude-code,cursor,windsurf,opencode,openclaw,hermes,pi,standalone-python) now instructs the model to runrecall.py "<intent>"before deploy / migration / timestamp / debug / refactor work, and to surface results in aConsulted lessons before acting:block. - Pre-graduated seed UTC lesson so new installs see proactive recall
return a real hit on first try. Stored at
.agent/memory/semantic/lessons.jsonl.
Fixed
- Canonical
pattern_id. Conditions are casefolded, unicode whitespace collapsed, zero-widths stripped, deduped, sorted — the same logical set always yields the same id. - Stricter heuristic check.
validate.heuristic_checknow requires ≥3 content words in a claim (blocks junk like!!!abcthat passed the raw-length gate). - Idempotent
graduate.pyretries. Re-rendersLESSONS.md, honors original reviewer / rationale fromlessons.jsonlto keep stores in sync, refuses retries against legacy rows missing metadata. - Advisory flock on
lessons.jsonl.render_lessonsandappend_lessonnow hold an exclusive flock during writes. Concurrent writers serialize;LESSONS.mdcan no longer go stale relative tolessons.jsonl. Atomic rewrite via temp file + rename.
0.6.0 — 2026-04-17
Added
- Pi Coding Agent adapter.
./install.sh pidropsAGENTS.mdand symlinks.pi/skillsto.agent/skillsso pi sees the full brain with zero duplication. Safe to install alongsidehermes/opencode(all readAGENTS.md; the installer skips the overwrite if one exists).
Changed
- BREAKING:
openclientadapter renamed toopenclaw. Installed file changed:.openclient-system.md→.openclaw-system.md. Existing OpenClient users: re-run./install.sh openclaw.
0.5.0 — 2026-04-17
Added
- Host-agent review protocol. Python handles filing (cluster, stage,
heuristic prefilter, decay). The host agent handles reasoning via
list_candidates.py/graduate.py/reject.py/reopen.py. Graduation requires--rationaleso rubber-stamping is structurally impossible. Zero unattended reasoning, zero provider coupling. - Structured
lessons.jsonlas source of truth.LESSONS.mdis rendered from it. Hand-curated content above the sentinel is preserved across renders; legacy bullets auto-migrate on first run. - Proper single-linkage clustering with bridge-merge. Pattern IDs derived from canonical claim + conditions, stable across cluster- membership changes, distinct for generic-canonical collisions.
- Query-aware retrieval.
context_budgetranks episodes by salience × relevance and filters lessons tostatus=acceptedonly — provisional, legacy, and superseded entries never leak into the system prompt. - [BETA] FTS5 memory search (
.agent/memory/memory_search.py). Opt-in via onboarding or.agent/memory/.features.json. Default off. Prefers ripgrep when FTS5 is not available, falls back to grep. Restricted to.md/.jsonlso source files never pollute results. - Windows-native installer.
install.ps1runs natively under PowerShell;install.shcontinues to work under Git Bash / WSL.
Fixed
- Batch-sound graduation gate.
- Stable slugs across cluster drift.
- Provisional re-review and supersession semantics.
REVIEW_QUEUErefreshes on every CLI action.- Heuristic-rejection stamping so unrelated
LESSONS.mdedits do not churn. - Atomic
graduate.py(semantic write first, candidate move last). .gitignoreordering so.agent/memory/.index/is actually ignored.- Fallback search restricted to
.md/.jsonl. - Feature toggle file and
[BETA]label in onboarding.
0.4.0 — 2026-04-16
Added
- Interactive onboarding wizard (
onboard.py, clack-style UI) that auto-fillsPREFERENCES.mdafter install. Flags:--yes(CI / defaults),--reconfigure(re-run). Apple-style redesign with 7 scenes (Memory, Skills, Dream Cycle added).
0.3.0 — 2026-04-16
Fixed
- Cron-safe paths in
auto_dream.pyandStophook matcher. - Deny-glob syntax in
settings.json.
0.2.0 — 2026-04-16
Added
- Homebrew formula at
Formula/agentic-stack.rb.
Fixed
standalone-pythonpath detection.- Harness count in README.
brew tapURL in README.
0.1.0 — 2026-04-16
Added
- Initial release. Portable
.agent/brain folder with adapters for Claude Code, Cursor, Windsurf, OpenCode, OpenClient (later OpenClaw), Hermes, and standalone Python. Homebrew installer (replaces the earliernpx-based flow).