OpenCode
What an OpenCode session materialises, the init flag that makes it the hall's provider, and how /ivar-discovery runs there.
Setup is harness-agnostic — see the quickstart for creating a hall and opening your first session. This page covers what is specific to OpenCode once you're there.
What lands in .opencode/
An OpenCode session materialises a .opencode/ directory at the view
directory's root, alongside the promoted repos:
.opencode/skills/ carries every skill from both roots — the hall's committed
skills and your personal ones — materialised under its bare id; the directory
itself is gitignored because each child is a derived symlink back into .ivar/.
AGENTS.md is the provider-native instructions file OpenCode reads at startup.
opencode.json is OpenCode's general config — model, permissions — and ivar
adds its $schema key without touching those. It does own the mcp key: every
sync rewrites it in full from ivar.json. See MCP servers.
The read-only guard for repos you haven't promoted is enforced by
.opencode/plugins/ivar-execution-guard.ts. It's a real plugin plus a real
cleared write bit — not a prompt asking the agent to behave.
Add it to an existing hall
The quickstart covers ivar init. If
the hall already exists with a different provider, add OpenCode alongside it:
ivar provider add opencodeWhere /ivar-discovery comes from
It is materialised into OpenCode's command directory, so you type it in OpenCode rather than in a shell.