Skip to content

Recall 0.4.0 — OpenCode support (opt-in)

Latest

Choose a tag to compare

@raiyanyahya raiyanyahya released this 18 Jul 16:35

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.md as 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