{"id":48912,"library":"pi-cursor-provider","title":"pi-cursor-provider","description":"Pi extension that authenticates with Cursor via PKCE OAuth and runs a local gRPC proxy translating OpenAI /v1/chat/completions to Cursor's protobuf/HTTP2 Connect protocol. Version 0.1.11, active development. Key differentiators: model deduplication by effort level, session management for multi-turn conversations, tool routing via MCP, and an architecture that lets Pi use Cursor's models without a direct Cursor IDE dependency.","status":"active","version":"0.1.11","language":"javascript","source_language":"en","source_url":"https://github.com/ndraiman/pi-cursor-provider","tags":["javascript","pi-package","pi","cursor","oauth","proxy","grpc","openai-compatible"],"install":[{"cmd":"npm install pi-cursor-provider","lang":"bash","label":"npm"},{"cmd":"yarn add pi-cursor-provider","lang":"bash","label":"yarn"},{"cmd":"pnpm add pi-cursor-provider","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Peer dependency for Pi AI integration","package":"@mariozechner/pi-ai","optional":true},{"reason":"Peer dependency for Pi coding agent integration","package":"@mariozechner/pi-coding-agent","optional":true}],"imports":[{"note":"This is a Pi extension, not a regular npm module. It is loaded by the Pi runtime via the install command. Direct import is not supported.","wrong":"import PiCursorProvider from 'pi-cursor-provider'","symbol":"PiCursorProvider (extension)","correct":"// Install via pi: pi install npm:pi-cursor-provider"},{"note":"Package ships as ESM only (type: module in package.json). Named export for programmatic use within Pi extensions.","wrong":"const CursorProvider = require('pi-cursor-provider').CursorProvider;","symbol":"CursorProvider","correct":"import { CursorProvider } from 'pi-cursor-provider';"},{"note":"TypeScript types exported for model mapping; use import type to avoid runtime inclusion.","wrong":null,"symbol":"type Models","correct":"import type { Models } from 'pi-cursor-provider';"}],"quickstart":{"code":"// Install the extension\npi install npm:pi-cursor-provider\n\n// Authenticate with Cursor\n/login cursor\n\n// List and select a model\n/model\n\n// Set reasoning effort (optional)\nset reasoning_effort high\n\n// Environment variable to see raw model IDs\nPI_CURSOR_RAW_MODELS=1 pi","lang":"javascript","description":"Install the pi-cursor-provider extension, authenticate with Cursor via OAuth, select a model, and optionally configure reasoning effort. Shows CLI commands for setup."},"warnings":[{"fix":"Set PI_CURSOR_RAW_MODELS=1 environment variable to disable dedup and see all raw Cursor model IDs.","message":"Model deduplication collapses similar models by effort level; raw model variants are hidden unless PI_CURSOR_RAW_MODELS=1 is set.","severity":"gotcha","affected_versions":">=0.1.0"},{"fix":"Ensure these peer dependencies are installed in the Pi environment. Run 'pi install' which resolves them.","message":"Extension requires Node.js >= 18 and depends on peer packages @mariozechner/pi-ai and @mariozechner/pi-coding-agent.","severity":"gotcha","affected_versions":">=0.1.0"},{"fix":"Re-run /login cursor after restarting Pi. Tokens are stored in local state but may be invalidated.","message":"OAuth token management may change across versions; session persistence not guaranteed across Pi restarts.","severity":"breaking","affected_versions":">=0.1.0"},{"fix":"Check the model list output by /model to see which models support reasoning effort. Use raw mode if effort mapping is unwanted.","message":"Not all Cursor models support reasoning effort mapping; models without effort suffixes are left as-is with supportsReasoningEffort: false.","severity":"gotcha","affected_versions":">=0.1.0"},{"fix":"Ensure your network allows HTTP/2 connections. Consider using a VPN if behind a restrictive firewall.","message":"The proxy uses experimental HTTP/2 Connect protocol via h2-bridge.mjs; may not work in all network environments.","severity":"deprecated","affected_versions":">=0.1.0"}],"env_vars":null,"search_vec":"'/v1/chat/completions':22 '0.1.11':30 'activ':31 'architectur':53 'authent':8 'compat':78 'connect':27 'convers':46 'cursor':3,10,24,58,64,72 'dedupl':36 'depend':66 'develop':32 'differenti':34 'direct':63 'effort':38 'extens':6 'grpc':18,75 'ide':65 'javascript':67 'key':33 'let':55 'level':39 'local':17 'manag':41 'mcp':50 'model':35,60 'multi':44 'multi-turn':43 'oauth':13,73 'openai':21,77 'openai-compat':76 'packag':70 'pi':2,5,56,69,71 'pi-cursor-provid':1 'pi-packag':68 'pkce':12 'protobuf/http2':26 'protocol':28 'provid':4 'proxi':19,74 'rout':48 'run':15 'session':40 'tool':47 'translat':20 'turn':45 'use':57 'version':29 'via':11,49 'without':61","created_at":"2026-06-07T16:59:06.249573+00:00","updated_at":"2026-06-07T16:59:06.249573+00:00","problems":[{"fix":"Install via pi: pi install npm:pi-cursor-provider, or manually add @mariozechner/pi-ai and @mariozechner/pi-coding-agent as dependencies.","cause":"Missing peer dependency when installing via npm directly instead of 'pi install'.","error":"Error: Cannot find module '@mariozechner/pi-ai'"},{"fix":"Use import syntax or ensure your project is ESM (type: 'module' in package.json).","cause":"Using CommonJS require() on an ESM-only package.","error":"TypeError: Cannot read properties of undefined (reading 'prototype')"},{"fix":"Convert to dynamic import: const { CursorProvider } = await import('pi-cursor-provider');","cause":"Trying to require() an ES module.","error":"Error: ERR_REQUIRE_ESM"},{"fix":"Kill the existing process or set a custom port via environment variable (e.g., PI_CURSOR_PROXY_PORT=8080).","cause":"Default proxy port already in use (another instance running).","error":"Error: listen EADDRINUSE :::<port>"},{"fix":"Re-run /login cursor to authenticate again.","cause":"OAuth token expired or revoked by Cursor.","error":"OAuth2Error: invalid_grant"}],"ecosystem":"npm","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":null,"cli_version":null,"type":"library","homepage":"https://github.com/ndraiman/pi-cursor-provider#readme","github":"https://github.com/ndraiman/pi-cursor-provider","docs":null,"changelog":null,"pypi":null,"npm":"pi-cursor-provider","openapi_spec":null,"status_page":null,"smithery":null,"categories":["ai-ml"],"base_url":null,"auth_type":null,"provenance":{"verified_status":null,"verified_at":null,"last_verified":"2026-06-07","next_check":"2026-09-05","install_tag":null}}