OpenCode
Install and activate first — Getting started covers both. Without a
key the wiring below succeeds and the server refuses with E_NO_KEY the moment your editor
starts it.
kscope init wires OpenCode when ~/.config/opencode or ~/.opencode exists.
Wire it
Section titled “Wire it”cd ~/your-projectkscope initRestart OpenCode, then ask it to search your memory.
What init writes
Section titled “What init writes”| What | Where |
|---|---|
| MCP entry | opencode.json in the project |
| Instructions | AGENTS.md, between marker comments |
| Skill | .agents/skills/use-kaleidoscope/SKILL.md |
| Receipt | opencode.json.kaleidoscope-owner.json, and a .kaleidoscope-instruction-owner.json beside each instruction file and skill |
| Backup | opencode.json.kaleidoscope-backup, when the file was already there |
Skills go to .agents/skills/ here, the same path Codex reads; Claude Code
reads .claude/skills/.
Which shape you get
Section titled “Which shape you get”OpenCode has two configuration shapes. init reads the project’s
opencode.json and follows it. When that file has no mcp of its own, init
follows the shape of your ~/.config/opencode/opencode.json.
The opencode.json it follows | Entry goes to | Fields |
|---|---|---|
no mcp.servers object | mcp.kaleidoscope | type, enabled, command |
has an mcp.servers object | mcp.servers.kaleidoscope | type, command, codemode: false |
Both carry "type": "local" and a command array of the engine’s absolute path
followed by mcp, --profile, your-project. "codemode": false keeps search
and remember visible to the model as tools.
{ "mcp": { "kaleidoscope": { "type": "local", "enabled": true, "command": ["/absolute/path/to/kscope", "mcp", "--profile", "your-project"] } }}If both shapes are present, or your file conflicts with the shape Kaleidoscope already owns, that step fails and the file is not changed. There is no flag to override it.
your-project is the profile init creates for the project, named after its
folder. With an npm install, the engine path is ~/.kaleidoscope/bin/kscope, a
copy of kscope that updates itself when you update kscope.
A project set up by an earlier version keeps its entry in
~/.config/opencode/opencode.json and the default profile. kscope init says
so, and names the command that gives the project its own vault.
The project’s opencode.json names this machine’s kscope, so init adds it to
the project’s .gitignore, with its receipt and backup.
Check it
Section titled “Check it”kscope profile listkscope profile launch your-projectlaunch prints the arguments and the tool list — search and remember —
that the entry in opencode.json should match. Its command is the kscope
you ran, which is not the copy the entry names after an npm install.
Remove it
Section titled “Remove it”Delete each of these, and the receipt beside it:
- the
kaleidoscopeentry in the project’sopencode.json - the marked block in
AGENTS.md .agents/skills/use-kaleidoscope/
Your memory stays. Connect an editor or agent covers every editor at once.