Recall now works with opencode — the same fully-local memory (.recall/history.md + context.md), captured from opencode sessions instead of (or alongside) Claude Code. Requested in #10.
Claude Code users: nothing changes. Claude Code remains the first-class harness. The hooks, commands, and manifest are untouched, and the opencode path activates only if you explicitly run the installer. Update as usual via the
marketplace.
OpenCode support — one-time, per-project, reversible
opencode has no plugin marketplace, so Recall ships a flag-based installer that generates the integration files once:
git clone https://github.com/raiyanyahya/recall ~/recall
python3 ~/recall/scripts/install.py --opencode --project /path/to/your/project
It writes exactly three things into the target project: a capture shim (.opencode/plugins/recall.ts, auto-loaded by opencode at startup — appends new activity to .recall/history.md after every turn), a /recall-save command, and a
.recall/context.md entry in opencode.json's instructions so your saved context loads at every session start. From then on everything is automatic. Remove it all with --opencode --uninstall — your .recall/ data stays, and the
installer never touches files it didn't generate.
Because both harnesses read and write the same files, memory is shared across harnesses: start a session in Claude Code, resume it in opencode, and vice versa.
Design notes
- The adapter talks only to opencode's public CLI (
opencode session list,opencode export) — never its internal storage files. - Sessions are filtered by project directory, preserving Recall's scoped-transcript guarantee: another project's session can never leak into your memory.
- Same principles as always: fully local, no network, no API key, stdlib-only Python (numpy optional), and any failure is a silent no-op so a session is never affected.
- Caveat: opencode loads
context.mdas instructions, without the untrusted-data fencing the Claude Code hook applies — if you commit.recall/as shared team memory, only do so with collaborators you trust.
Also in this release
- CI now smoke-tests the installer end-to-end: placeholder substitution, the generated shim parsing as valid ESM, a parseable generated
opencode.json, and a clean uninstall. - README restructured with an "Other harnesses" section documenting the whole flow.
Full changelog: v0.3.6...v0.4.0