Skip to content

Latest commit

 

History

32 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

opencode-cursor-oauth

OpenCode plugin that connects to Cursor's API, giving you access to Cursor models inside OpenCode with full tool-calling support.

OpenCode V2 beta

Install the plugin:

opencode2 plugin add opencode-cursor-oauth

The command adds the package to your global V2 configuration.

Start opencode2. Run /connect. Select Cursor.

The plugin adds Cursor OAuth and the available models to the V2 catalog.

You can also add the package directly to opencode.jsonc:

{
  "$schema": "https://opencode.ai/config.json",
  "plugins": [
    "opencode-cursor-oauth"
  ]
}

OpenCode V1

Add the package to ~/.config/opencode/opencode.json:

{
  "$schema": "https://opencode.ai/config.json",
  "plugin": [
    "opencode-cursor-oauth"
  ]
}

Connect Cursor:

opencode auth login --provider cursor

OpenCode V1 and OpenCode V2 add the cursor provider and its models. OpenCode installs npm plugins during startup. You do not have to clone this repository.

Use

Start OpenCode and select any Cursor model. The plugin starts a local OpenAI-compatible proxy on demand and routes requests through Cursor's gRPC API.

How it works

  1. OAuth — browser-based login to Cursor via PKCE.
  2. Model discovery — queries Cursor's gRPC API for all available models.
  3. Local proxy — translates POST /v1/chat/completions into Cursor's protobuf/HTTP/2 Connect protocol.
  4. Native tool routing — redirects Cursor's built-in filesystem/shell tools to the equivalent OpenCode tools, and exposes OpenCode's tool surface via Cursor MCP.

HTTP/2 transport runs through a Node child process (h2-bridge.mjs) because Bun's node:http2 support is not reliable against Cursor's API.

Architecture

OpenCode  -->  /v1/chat/completions  -->  Bun.serve (proxy)
                                              |
                                    Node child process (h2-bridge.mjs)
                                              |
                                     HTTP/2 Connect stream
                                              |
                                    api2.cursor.sh gRPC
                                      /agent.v1.AgentService/Run

Tool call flow

1. Cursor model receives OpenAI tools via RequestContext (as MCP tool defs)
2. Model calls a tool:
   - native tools (readArgs, shellArgs, grepArgs, ...) with an OpenCode
     equivalent are redirected to it (read, bash, grep, glob, webfetch, write)
   - native tools without an equivalent are rejected with a typed error
   - MCP tools arrive as mcpArgs exec messages
3. Proxy emits OpenAI tool_calls SSE chunk, pauses H2 stream
4. OpenCode executes tool, sends result in follow-up request
5. Proxy resumes H2 stream with the typed native result (or mcpResult),
   streams continuation

Conversation state

Conversation history is rebuilt from the OpenAI messages on every request (rootPromptMessagesJson + content-addressed turn blobs), and server checkpoints are persisted to ~/.cache/opencode-cursor/conversations/ so context survives restarts. Set CURSOR_PROXY_DEBUG=1 to log the KV blob handshake and exec traffic when debugging.

Develop locally

bun install
bun run build
bun test/smoke.ts

Requirements

About

Use your cursor subscription in opencode

Resources

Stars

273 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages