Quickstart
Persistent project memory for Claude Code. Captures decisions, bugs, deploys across sessions so any new agent picks up exactly where the last one stopped.
Prerequisites (one-time)
Section titled “Prerequisites (one-time)”You’ll need:
- Claude Code
- Node 22+ and
jqon yourPATH - The
secretCLI (macOS Keychain wrapper, see~/.claude/shared/rules/secrets.md) - An Erold tenant + API key from app.erold.dev (or your private Erold deployment)
Verify:
node --version && jq --version && command -v secretStep 1 — Store credentials in Keychain
Section titled “Step 1 — Store credentials in Keychain”secret set erold.api-key # paste API key, hit entersecret set erold.tenant # paste tenant ID, hit enterThe values never touch disk outside Keychain. They are not in .env, not in
.mcp.json, not in shell history.
Step 2 — Install the plugin
Section titled “Step 2 — Install the plugin”claude plugin install erold-dev/claude-plugin --scope userThe plugin ships an MCP launcher that reads credentials from Keychain at
startup — no claude mcp add needed.
Verify:
claude mcp list # erold-pm: ✓ ConnectedStep 3 — Link a project
Section titled “Step 3 — Link a project”In any repo:
/erold:initThis creates .erold.json at the project root with only a projectId — no
secrets, safe to commit.
From here, just work. Hooks capture activity passively; the local outbox ships events to the backend in the background. Latency is <60 ms per hook.
What you get out of the box
Section titled “What you get out of the box”Every Claude Code session you open in that project:
- The agent calls
get_context()at startup and inherits: open tasks, open + recently-resolved bugs (with fix narratives), recent deploys, every decision ever made, credential references — andgapsflags telling it what was NOT logged so it can ask you. - Hooks capture: file edits (paths only — never contents), Bash commands (hashed + service detection), prompt metadata (hash + intent), subagent starts/stops, compaction checkpoints, session lifecycle.
- Two redaction layers protect you from accidental secret leaks: path denylist
drops
.env/.ssh//*.pem/secrets/events entirely; pattern blocklist redacts AWS / Scaleway / Stripe / GitHub / Anthropic / OpenAI keys + JWTs + PEM blocks before they leave your machine.
Not passive — needs explicit log()
Section titled “Not passive — needs explicit log()”Four things the plugin cannot infer and that the agent should record explicitly. See AGENT_PLAYBOOK.md for triggers:
- Decisions —
log(content, type="decision")ordecision_log(...). - Bug fix narrative —
bug_resolve(root_cause, fix_narrative). - Deploy outcome —
deploy_log(status=succeeded|failed|...). - Credential refs —
credential_ref_upsert(name, store, lookup_key, …).
If the agent forgets, the next session’s get_context() returns gaps[]
with the missing categories — a built-in safety net.
Quick sanity check
Section titled “Quick sanity check”tail -n 3 ~/.erold/outbox/events.jsonl # recent events queued locallytail -n 5 ~/.erold/error.log # any transmission errorsNext steps
Section titled “Next steps”- AGENT_PLAYBOOK.md — when the agent should call which tool.
- docs/SETUP.md — full setup with troubleshooting.
- ../OPERATOR_GUIDE.md — daily operations.
- ../EROLD.md — what Erold is + how the pieces fit.
- ../plans/plugin-mcp-v3.md — full architecture spec.