All four files do the same job: they let Pi (the host coding agent) drive another coding agent's CLI as if it were just another model in Pi's /model
picker. It uses ACP (https://agentclientprotocol.com/) to communicate with any coding agent. You pick "Cursor Sonnet" or "GPT-5 [codex-app-server]" or "Opus [claude-code-acp]" in Pi, and your turn is secretly executed by that external agent running in your workspace.
They all follow this shape:
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Pi host process β
β β
β /model picker βββΊ pi.registerProvider(...) β
β β β
β β streamSimple(model, context) β
β βΌ β
β βββββββββββββββ builds prompt ββββββββββββββββββββββββ β
β β Provider β ββββββββββββββββββΊ β Bridge (singleton) β β
β β stream fn β ββββββββββββββββββ β serializes turns, β β
β βββββββββββββββ stream events β owns 1 session β β
β β² ββββββββββββ¬ββββββββββββ β
β β AssistantMessageEventStream β spawn β
β β (text/thinking deltas) βΌ β
ββββββββββΌβββββββββββββββββββββββββββββββββββββββββΌβββββββββββββββββββ
β β
β βΌ
β βββββββββββββ¬βββββββββββ
βββββ JSON-RPC over stdio ββββΊ β Child process (CLI) β
β cursor-agent / rovo β
β codex / claude-acp β
ββββββββββββββββββββββββ
The bundled extensions:
cursor-acp.ts
β Cursor Agent over ACPcodex-app-server.ts
β OpenAI Codex over app-serverclaude-code-acp.ts
β Claude Code over ACP (uses the official ACP SDK)rovo-acp.ts
β Atlassian Rovo Dev over ACP
Pi auto-discovers *.ts
files in ~/.pi/agent/extensions
, but external npm dependencies are not bundled into those files.
Clone this repo:
git clone https://github.com/sathish316/pi-omniagent-extensions.git
cd pi-omniagent-extensions
Copy the extension files into your Pi extensions directory:
mkdir -p ~/.pi/agent/extensions
cp cursor-acp.ts rovo-acp.ts codex-app-server.ts claude-code-acp.ts \
package.json ~/.pi/agent/extensions/
Install the extension dependencies:
cd ~/.pi/agent/extensions
npm install
npm run check:claude-code-acp-deps
Make sure the underlying agent CLIs are installed and on your
PATH
for the extensions you want to use:cursor-agent
(cursor-acp),rovo
(rovo-acp),codex
(codex-app-server).claude-code-acp
pulls its runtime from npm. - Restart Pi. The bridged models appear in the
/model
picker tagged with their provider, e.g.[codex-app-server]
or[claude-code-acp]
.
The claude-code-acp.ts
extension needs:
@agentclientprotocol/sdk
@agentclientprotocol/claude-agent-acp
The Pi API packages imported by the extensions are provided by the running Pi installation.