Skip to content

Nomadcxx/opencode-cursor

Repository files navigation

header

Linux macOS Windows

No prompt limits. No broken streams. Full thinking + tool support in OpenCode. Your Cursor subscription, properly integrated.

Installation

Option A — One-line installer

Linux & macOS:

curl -fsSL https://raw.githubusercontent.com/Nomadcxx/opencode-cursor/main/install.sh | bash

Windows:

# Windows installer coming soon.
# In the meantime, use Option C (npm install):
npm install -g @rama_nigg/open-cursor
open-cursor install
Option B — Add to opencode.json

Add to ~/.config/opencode/opencode.json (or %USERPROFILE%\.config\opencode\opencode.json on Windows):

{
  "plugin": ["@rama_nigg/open-cursor@latest"],
  "provider": {
    "cursor-acp": {
      "name": "Cursor ACP",
      "npm": "@ai-sdk/openai-compatible",
      "options": {
        "baseURL": "http://127.0.0.1:32124/v1"
      },
      "models": {
        "cursor-acp/auto":              { "name": "Auto" },

        "cursor-acp/claude-opus-4-7":   { "name": "Claude 4.7 Opus" },
        "cursor-acp/claude-4.6-opus":   { "name": "Claude 4.6 Opus" },
        "cursor-acp/claude-4.6-sonnet": { "name": "Claude 4.6 Sonnet" },
        "cursor-acp/claude-4.5-opus":   { "name": "Claude 4.5 Opus" },
        "cursor-acp/claude-4.5-sonnet": { "name": "Claude 4.5 Sonnet" },
        "cursor-acp/claude-4.5-haiku":  { "name": "Claude 4.5 Haiku" },
        "cursor-acp/claude-4-sonnet":   { "name": "Claude 4 Sonnet" },

        "cursor-acp/gpt-5.5":           { "name": "GPT-5.5" },
        "cursor-acp/gpt-5.4":           { "name": "GPT-5.4" },
        "cursor-acp/gpt-5.4-mini":      { "name": "GPT-5.4 Mini" },
        "cursor-acp/gpt-5.4-nano":      { "name": "GPT-5.4 Nano" },
        "cursor-acp/gpt-5.3-codex":     { "name": "GPT-5.3 Codex" },
        "cursor-acp/gpt-5.2":           { "name": "GPT-5.2" },
        "cursor-acp/gpt-5.2-codex":     { "name": "GPT-5.2 Codex" },
        "cursor-acp/gpt-5.1-codex":     { "name": "GPT-5.1 Codex" },
        "cursor-acp/gpt-5.1-codex-max": { "name": "GPT-5.1 Codex Max" },
        "cursor-acp/gpt-5.1-codex-mini":{ "name": "GPT-5.1 Codex Mini" },
        "cursor-acp/gpt-5-mini":        { "name": "GPT-5 Mini" },

        "cursor-acp/gemini-3.1-pro":    { "name": "Gemini 3.1 Pro" },
        "cursor-acp/gemini-3-pro":      { "name": "Gemini 3 Pro" },
        "cursor-acp/gemini-3-flash":    { "name": "Gemini 3 Flash" },

        "cursor-acp/composer-2":        { "name": "Composer 2" },
        "cursor-acp/composer-2-fast":   { "name": "Composer 2 Fast" },
        "cursor-acp/composer-1.5":      { "name": "Composer 1.5" },

        "cursor-acp/grok-4-20":         { "name": "Grok 4.20" },
        "cursor-acp/kimi-k2.5":         { "name": "Kimi K2.5" }
      }
    }
  }
}

Refresh anytime with the bundled CLI:

open-cursor sync-models                       # plain list
open-cursor sync-models --variants --compact  # group thinking / fast / -low/-high variants under each base

The --variants --compact form is recommended — it folds dozens of *-thinking-fast, *-high-fast, etc. into a single entry per family with a variants map, and includes cost from the official Cursor pricing table so OpenCode TokenSpeed can render usage correctly. Direct cursor-agent models still works if you prefer the raw list.

Option C — npm global + CLI
npm install -g @rama_nigg/open-cursor
open-cursor install

Upgrade: npm update -g @rama_nigg/open-cursor

Option D — Go TUI installer
git clone https://github.com/Nomadcxx/opencode-cursor.git
cd opencode-cursor
go build -o ./installer ./cmd/installer && ./installer
Option E — LLM paste
Install open-cursor for OpenCode: edit ~/.config/opencode/opencode.json, add "@rama_nigg/open-cursor@latest" to "plugin", add a "cursor-acp" provider with npm "@ai-sdk/openai-compatible" and a baseURL of http://127.0.0.1:32124/v1. Populate models by running `open-cursor sync-models --variants --compact` after install (or copy the model list from the README). Auth: `cursor-agent login`. Verify: `opencode models | grep cursor-acp`.
Option F — Manual (from source)
git clone https://github.com/Nomadcxx/opencode-cursor.git && cd opencode-cursor
bun install && bun run build
ln -sf $(pwd)/dist/plugin-entry.js ~/.config/opencode/plugin/cursor-acp.js
./scripts/sync-models.sh

Add "cursor-acp" to the plugin array and reuse the provider block from Option B.

Authentication

opencode auth login   # provider id: cursor-acp
cursor-agent login    # direct

Usage

opencode run "your prompt" --model cursor-acp/auto
opencode run "your prompt" --model cursor-acp/sonnet-4.5

MCP Tool Bridge

Any MCP servers already configured in your opencode.json work automatically with cursor-acp models — no extra setup needed. The plugin discovers them at startup and injects usage instructions into the system prompt so the model calls them via cursor-agent's Shell tool.

mcptool servers                                    # list discovered servers
mcptool tools [server]                             # list available tools
mcptool call hybrid-memory memory_stats            # call a tool manually
mcptool call playwright browser_navigate '{"url":"https://example.com"}'

Any MCP server using stdio transport works. Tested with hybrid-memory, @modelcontextprotocol/server-filesystem, @playwright/mcp, and @modelcontextprotocol/server-everything.

Architecture

flowchart TB
    OC["OpenCode"] --> SDK["@ai-sdk/openai-compatible"]
    SDK -->|"POST /v1/chat/completions"| PROXY["open-cursor proxy :32124"]
    PROXY -->|"spawn per request"| AGENT["cursor-agent --output-format stream-json"]
    AGENT -->|"HTTPS"| CURSOR["Cursor API"]
    CURSOR --> AGENT

    AGENT -->|"assistant / thinking events"| SSE["SSE content chunks"]
    AGENT -->|"tool_call event"| BOUNDARY["Provider boundary (v1 default)"]
    BOUNDARY --> COMPAT["Schema compat + alias normalization"]
    COMPAT --> GUARD["Tool-loop guard"]
    GUARD -->|"emit tool_calls + finish_reason=tool_calls"| SDK
    SDK --> OC

    OC -->|"execute tool locally"| TOOLRUN["OpenCode tool runtime"]
    TOOLRUN -->|"next request includes role:tool result"| SDK
    SDK -->|"TOOL_RESULT prompt block"| AGENT

    AGENT -->|"Shell tool_call"| MCPTOOL["mcptool CLI"]
    MCPTOOL -->|"stdio"| MCP["MCP Servers"]
    MCP --> MCPTOOL
    MCPTOOL --> AGENT
Loading

Default mode: CURSOR_ACP_TOOL_LOOP_MODE=opencode. Details: docs/architecture/runtime-tool-loop.md.

Alternatives

THERE is currently not a single perfect plugin for cursor in opencode, my advice is stick with what is the LEAST worst option for you.

open-cursor yet-another-opencode-cursor-auth opencode-cursor-auth cursor-opencode-auth
Architecture HTTP proxy via cursor-agent Direct Connect-RPC HTTP proxy via cursor-agent Direct Connect-RPC/protobuf
Platform Linux, macOS, Windows Linux, macOS Linux, macOS macOS only (Keychain)
Max Prompt Unlimited (HTTP body) Unknown ~128KB (ARG_MAX) Unknown
Streaming ✓ SSE ✓ SSE Undocumented
Error Parsing ✓ (quota/auth/model) Debug logging
Installer ✓ TUI + one-liner
OAuth Flow ✓ OpenCode integration ✓ Native Browser login Keychain
Tool Calling ✓ OpenCode-owned loop ✓ Native ✓ Experimental
MCP Bridge ✓ mcptool CLI (any MCP server)
Stability Stable (uses official CLI) Experimental Stable Experimental
Dependencies bun, cursor-agent npm bun, cursor-agent Node.js 18+
Port 32124 18741 32123 4141

Troubleshooting

  • fetch() URL is invalidopencode auth login
  • Model not responding → cursor-agent login
  • Quota exceeded → cursor.com/settings
  • Auth failed → CURSOR_ACP_LOG_LEVEL=debug opencode auth login cursor-acp

Debug logging: CURSOR_ACP_LOG_LEVEL=debug opencode run "your prompt" --model cursor-acp/auto

Roadmap

flowchart LR
    P1[/Stabilise/] --> P2[/MCP Bridge/] --> P3[/Simplify/] --> P4[/ACP + MCP/]

    style P1 fill:#264653,stroke:#1d3557,color:#fff
    style P2 fill:#264653,stroke:#1d3557,color:#fff
    style P3 fill:#495057,stroke:#343a40,color:#adb5bd
    style P4 fill:#495057,stroke:#343a40,color:#adb5bd
Loading

[X] Stabilise — Clean up dead code, fix test isolation [X] MCP Bridge — Bridge MCP servers into Cursor models via mcptool CLI [ ] Simplify — Rip out serialisation layers [ ] ACP + MCP — Structured protocols end-to-end

Future Architecture — Long-term direction is OpenCode -> Cursor ACP -> MCP, using official Cursor ACP as the backend. Currently deferred: Cursor ACP does not yet reliably propagate MCP servers during ACP session setup. See docs/architecture/cursor-acp-mcp-future.md.

License

BSD-3-Clause

About

Use Cursor Pro models in OpenCode via HTTP proxy with OAuth

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors