Connect surfaces
Relay sits between your coding agent and the tools it wants to call. Each surface installs differently; Live wire labels events by surface so you can see which IDE produced them.
Relay governs actions (shell, paths, MCP, prompts). To also route model traffic through Exemplar, point Cursor at /gateway/cursor and Claude Code at /gateway/anthropic. The two layers are independent—you can use either or both.
Surfaces
| Surface | How you install |
|---|---|
| Claude Code | Hooks in .claude/settings.json (global or project) |
| Cursor | Bridge script + hooks.json under ~/.cursor or the project |
| Codex | Bridge script + hooks.json under ~/.codex |
| OpenCode | TypeScript plugin under OpenCode plugins |
All four need a personal API key with Relay scope (EXEMPLAR_API_KEY). Org keys are not accepted for IDE hooks.
Setup paths
- exemplar-skills (recommended) — install the skill, then ask your agent to set up Relay.
- Relay → Connect in the console — pick surface + environment + platform and copy snippets.
# Project-local
npx github:Exemplar-Dev/exemplar-skills
# Global (all workspaces — preferred for Relay)
npx github:Exemplar-Dev/exemplar-skills --globalThen in the IDE chat: /exemplar-relay, or “Set up Exemplar Relay on Claude / Cursor / Codex / OpenCode”.
The skill asks for surface and platform, helps you create a personal RELAY key, writes settings / bridge / plugin, and offers global vs project install (default global). If setup fails, copy snippets from Relay → Connect.
Full options: Install IDE agent skills.
Claude Code
- Create a personal API key with Relay scope (or let the skill do it).
- From Connect, get
.claude/settings.json(Recommended or custom hooks). - Install global (
~/.claude/settings.json) or project (.claude/settings.json) — prefer global. - Verify with Connect Verify / a known allow and deny.
Cursor
- Personal API key → export
EXEMPLAR_API_KEY. - Save the bridge from Connect (Unix or Windows script); make it executable on Unix.
- Paste Connect’s
hooks.jsoninto global~/.cursor/hooks.jsonor project.cursor/hooks.json. - Restart Cursor; confirm events on Live wire.
Cursor only reliably enforces deny on many hooks (including MCP ask). Prefer deny for hard blocks. Details on the MCP page.
Codex
- Personal API key + env as above.
- Save the bridge under
~/.codex/hooks/from Connect. - Merge Connect’s
hooks.jsoninto~/.codex/hooks.json(typically global). - In Codex, run
/hooksand trust the Exemplar bridge. - Prefer interactive Codex / IDE—some
codex execbuilds skip user hooks.
OpenCode
- Personal API key + env as above.
- From Connect, copy the plugin into global OpenCode plugins or the project plugins folder.
- Register the plugin in OpenCode config (plugins docs ).
- Restart OpenCode; confirm tool calls hit Relay before they run.
After install
- Same org Control rules and Behavior Guards apply on every surface.
- Relay policy is org-global; hook file location only chooses which IDE config is written.
- Use Connect Verify, then confirm allow / deny on Live wire.
Prefer exemplar-skills for guided setup. Manual path: Console Relay → Connect. Walkthrough: Getting started.