A small desktop app (Tauri) to manage AI model settings used by Cursor—builtin models, composer model, and custom API providers—by reading and updating Cursor’s state.vscdb and a local config file.
- Current model: Shows the active composer model and related state when the DB is present
- Builtin models: Enable or disable built-in Cursor models (with sensible guards around Auto / current model)
- Custom providers: Add, edit, sync-to-DB, delete, and switch custom OpenAI-compatible providers
- UI languages: English and Simplified Chinese
- Cursor installed (the app reads its user data)
- macOS, Windows, or Linux (paths below match Cursor’s usual layout)
- To build from source: Rust via rustup and the Tauri CLI (
cargo install tauri-cli --locked) - macOS builds: Xcode Command Line Tools (
xcode-select --install) - Windows (WebView2): A normal install has the WebView2 runtime; if you cross-compile with
x86_64-pc-windows-gnu, shipWebView2Loader.dllnext to the exe (the Windows build script can fetch it—seescripts/build-windows.sh)
From the repository root:
chmod +x scripts/build-macos.sh # once
./scripts/build-macos.shDefaults to aarch64-apple-darwin on Apple Silicon and x86_64-apple-darwin on Intel. Override if needed:
TARGET=x86_64-apple-darwin ./scripts/build-macos.shArtifacts: src-tauri/target/<triple>/release/bundle/ (DMG / .app) and src-tauri/target/<triple>/release/cursor-switch.
On Windows, or from CI (windows-latest):
chmod +x scripts/build-windows.sh # once; on Windows use Git Bash or similar
./scripts/build-windows.shFrom macOS cross-compiling to Windows, prefer the GNU + MinGW path (see comments in scripts/build-windows.sh). One-time on macOS: brew install mingw-w64, then:
TARGET=x86_64-pc-windows-gnu ./scripts/build-windows.shThe script adds the Rust target, sets CC_x86_64_pc_windows_gnu when x86_64-w64-mingw32-gcc is on PATH, and copies WebView2Loader.dll beside cursor-switch.exe for GNU builds. For a full NSIS installer, run the script on Windows (or set FORCE_WINDOWS_BUNDLE=1 where makensis is available).
cd src-tauri
cargo tauri dev- Quit Cursor before operations that write to its database (the app will warn you when Cursor is running).
- Open Cursor Switch (installed
.app/.exeorcargo tauri dev). - Use the window to inspect status, toggle builtins, manage providers, and switch models—then restart Cursor if the UI tells you to.
Per-user provider and related settings are stored in:
- macOS / Linux:
~/.cursor-switch/config.json - Windows:
%USERPROFILE%\.cursor-switch\config.json
The file uses snake_case keys (same as on disk in ~/.cursor-switch/config.json). Runtime-only provider fields (id, is_active, …) are not written back to JSON; only name, base_url, and api_key are persisted per provider.
Example:
{
"preferred_lang": "en",
"preferred_theme": "light",
"users": [
{
"user_email": "you@example.com",
"stripe_membership_type": "pro",
"providers": [
{
"name": "my-openai-compatible",
"base_url": "https://api.example.com/v1",
"api_key": "sk-your-key"
},
{
"name": "placeholder-model",
"base_url": "",
"api_key": ""
}
]
}
]
}The app reads Cursor’s SQLite DB:
| OS | Default path |
|---|---|
| macOS | ~/Library/Application Support/Cursor/User/globalStorage/state.vscdb |
| Windows | %APPDATA%\Cursor\User\globalStorage\state.vscdb |
| Linux | ~/.config/Cursor/User/globalStorage/state.vscdb |
Override for tests or custom installs: set environment variable CURSOR_STATE_VSCDB to an absolute path.
Relevant table/key:
- Table:
ItemTable - Key (among others):
src.vs.platform.reactivestorage.browser.reactiveStorageServiceImpl.persistentStorage.applicationUser
Custom providers are intended for paid tiers (e.g. pro, pro_plus, ultra, enterprise). Free accounts are mainly limited to builtin model toggles—see the in-app messaging.
MIT License


