AGENTIFY v0.3 GitHub
    _                    _   _  __
   / \   __ _  ___ _ __ | |_(_)/ _|_   _
  / _ \ / _` |/ _ \ '_ \| __| | |_| | | |
 / ___ \ (_| |  __/ | | | |_| |  _| |_| |
/_/   \_\__, |\___|_| |_|\__|_|_|  \__, |
        |___/                      |___/
MIT LICENSE NODE 20+ CLAUDE CODE · CODEX · MCP

Switch agents. Keep the repo's working memory.

Agentify keeps durable working context with the repository instead of trapping it inside one agent harness. Install once — from then on your coding agent drives it automatically.

Claude Code through lifecycle hooks, Codex through installed guidance, everything else through MCP. It carries forward explicit, compact project evidence — decisions, session summaries, failures, hot files — that should survive the switch.

01 — How it works

One store. Every session picks up where the last left off.

agentify install --provider all wires both harnesses against one repo-owned .agentify/context/ store. No daemon, no database server, no per-command wrapping.

1 — Session starts

Claude Code's hook injects the context digest automatically. Codex follows its installed AGENTS.md guidance and loads the same store.

2 — Agent works

Hooks track edits and shell commands as compact JSONL (auto-compacted, capped ~512 KB). Command failures are remembered and checked before a retry.

3 — Learns something

It runs agentify ctx note. Notes are verified on injection: a note referencing a missing file is flagged as possibly stale.

4 — Session ends

A short extractive handoff is created from tracked evidence at zero model cost. An LLM refinement is a budgeted opt-in.

02 — Install & quick start

Installs straight from GitHub

One-line installer

Checks Node 20+ and git, then verifies the CLI. Pin a ref with AGENTIFY_REF=v0.3.0.

Wire into a repo

Both install and uninstall are surgical. Agentify also updates a managed .gitignore block for files it creates, without hiding mixed-ownership provider directories. CLAUDE.md and AGENTS.md remain visible; already tracked files stay tracked.

03 — Command reference

Every command

All commands accept --json for machine-readable output — which is how agents are expected to call them.

04 — Context tracking

Context arrives when it's relevant, not as a firehose

Sessions start with a one-line pointer, and each prompt is matched against the store — only related notes and files get injected, deduplicated per session. Ask about payment retries:

## Agentify context (relevant to this task)
### Related notes from earlier sessions
- [2026-07-05] payment retries: idempotency key lives in src/pay/retry.ts, do not regenerate per attempt
### Files previously worked on that look related
- src/pay/retry.ts (14 edits)
- src/pay/retry.test.ts (9 edits)

Failure memory

A command that failed in a previous session triggers a PreToolUse warning before the exact retry — so doomed migrations and deploys aren't run twice.

Decision log

ctx decision records durable trade-offs; ctx decisions "topic" answers “why did we choose X” later. With ctx share it's a team ADR log.

Stale-note flagging

Every file path in a note is checked against the working tree on injection. Missing paths are flagged in place so the agent re-verifies instead of trusting outdated memory.

Prefer always-on? Set context.injection: digest in .agentify.yaml (or off to disable injection — tracking continues either way).

05 — Model routing

Shell work out to the model best suited for it

agentify install writes a routing table into .agentify.yaml mapping kinds of work to models. The guidance block teaches the agent to delegate instead of doing everything inline.

Every route carries a hard per-run ceiling — dollars, agent turns, and wall-clock — so no Agentify-initiated paid run is ever unbounded. If a route's CLI isn't installed, Agentify falls back to the other vendor at the same capability tier. Routing profiles (cost · balanced · performance) choose how to route inside those ceilings, fed by local agentify eval runs — never rewriting your config.

06 — Paired evaluation

Does Agentify actually help?

Cost only means something next to task success. agentify eval runs the same task, prompt, pinned model, and budget through paired arms — agentify vs plain-safe vs plain-project — and grades each attempt with deterministic checks.

Five-family downshift · 2026-08-21
84 / 86
vs 56/86 for the same agent with no memory layer, over 180 container trials on identical images, model & verifiers.
Winner declared by the fail-closed rule: 28/0 discordant pairs across two task families, exact sign p = 7.5×10-9, separated Wilson intervals.

Every attempt runs in a disposable clone at the manifest's immutable base_ref with a hard per-attempt ceiling. Turn a run into a decision with agentify eval report --format html: per-arm pass rates with 95% CIs, cost per passing task, and a cost-quality frontier. A second harness (Harbor / Terminal-Bench 2.0) runs the same paired question across a 38-task container dataset, to catch anything that only looks like a win inside Agentify's own runner.

Every campaign, including the ones we lost

Each row is backed by committed receipts under evals/results/ — raw runs plus the report they produce — and CI fails if the current code stops reproducing them.

Date Campaign Headline Verdict
2026-07-14 Harbor nightly, 8 tasks 24/24 vs 21/24 No winner (p = 0.25)
2026-07-29 MCP description ablation 9/18 vs 12/18 Lost; ~zero tool calls
2026-08-19 Downshift matrix, 162 trials 51/54 vs 36/54 pairs Winner (16/1, p = 2.8e-4)
2026-08-20 Head-to-head, 4 arms stuffing 37/40 · agentify 36/40 · Serena 27/40 · plain 26/40 No difference vs stuffing; 9/0 vs Serena
2026-08-21 Five-family downshift, 180 trials 84/86 vs 56/86 Winner (28/0, p = 7.5e-9)
2026-08-21 Store-size ladder, 135 trials stuffing 24/27 · agentify 20/27 · plain 2/27 No difference vs stuffing; 18/0 vs plain

Against the same agent with no memory layer the result is consistent and large. Separately, against a memory-enabled competitor — Serena's code-intelligence MCP, given the same knowledge in its own native memories — 9/0 discordant. Against a hand-maintained CLAUDE.md memory bank holding the same knowledge, two campaigns found no significant difference, with the point estimate favouring the memory bank — published rather than buried. No leaderboard claims: this is Agentify's own context benchmark. Full tables, scope caveats, and a log of the numbers that moved down after review: docs/benchmarks.md.

07 — Session analysis

Look at the session history you already have

Where stats and value report Agentify-owned telemetry, agentify analyze looks at the other side — your local Claude Code and Codex session history — and shows usage, tool patterns, and concrete, evidence-backed places where Agentify would have helped. Plus exactly one roast, because the data earned it.

Consent-gated & private

Metadata-only by default. Transcript bodies are never analyzed, command text never leaves memory, nothing is uploaded, and $0 AI spend. --dry-run previews exactly what would be read.

0–100 usage scorecard

Each session is classified by tool mix and matched to the weight class of the model that ran it. Heavyweight-on-featherweight work is flagged overkill — “a gun at a fist fight” — as a delegation candidate.

Self-contained report

An Agentify-themed HTML brief: headline totals, filterable per-session rows, recommendation cards, an API-equivalent list-price estimate (never spend), and a privacy receipt of exactly what was read.

08 — Platform workflows

Board to draft PR — you never invoke the workflow by name

The bundle installs as agent skills, and the agent matches them to plain requests. Triage the board, pick up an item, implement it in an isolated worktree, and raise a draft PR — on GitHub, GitLab, or Azure DevOps.

09 — Skills

A catalog the agent matches to plain requests

Agentify bundles a catalog of agent skills — TDD, PR and commit workflows, board triage, refactor plans, and more. Install them per provider and scope; each skill declares when it applies, so the agent picks the right one from what you ask — you never invoke a skill by name. Browse the full catalog →

tdd pr-creator commit-creator github-triage issue-killer grill-me worktree-autopilot to-issues setup-pre-commit write-a-skill

Scopes: --provider claude|codex|gemini|opencode · --scope project|global. The platform workflow bundles above install as these same skills.

10 — MCP server

Every other agent speaks MCP

Hooks are Claude Code-specific and AGENTS.md guidance is best-effort. For Cursor, Zed, Windsurf, Gemini CLI, or Claude Desktop, Agentify speaks MCP. The bundled stdio server supports legacy 2025-era clients and the stateless 2026-07-28 protocol with discovery, request validation, and cacheable tool lists.

ctx_load ctx_note ctx_match ctx_decisions ctx_handoff query risk test_select
11 — ACP proxy

Carry the full agent session through Agentify

ACP connects an editor to an agent. Agentify sits transparently in that transport, launches Claude or Codex downstream, and can add the same repo memory used by hooks and MCP without changing unknown protocol messages.

Transparent proxy

ACP frames pass through byte-for-byte. Adapter failure closes the connection instead of leaving requests hanging.

Budgeted injection

acpInjection: relevant adds matched context to the first turn. It defaults to off.

One-writer capture

acpCapture: auto records hookless sessions while avoiding duplicate Claude hook events.

Both controls honor ctx pause and enforce a symlink-safe workspace boundary. ACP client registration is still manual; agentify install does not claim to edit editor-specific client config.

12 — Requirements
Node 20+

The runtime floor for the CLI.

Git

Context is per-checkout; worktrees each get their own store.

An agent

Claude Code for hooks, or Codex for guidance-driven tracking. Anything else via MCP or the plain CLI.

agentify install --provider all

Install once. Your coding agent uses it automatically.

github.com/ixigo/agentify