PyCharm-style Python run configuration management for VS Code, with a GUI editor for Python entries in launch.json.
CharmRun lets you create named run/debug profiles (script or module), choose interpreter/args/env/cwd, and launch quickly from the sidebar, status bar, or command palette.
- GUI editor for Python run configurations
- Script mode (
python script.py) and module mode (python -m module_name) - Uses
.vscode/launch.jsonas the source of truth - Adopt existing Python
debugpylaunch configurations in place - Before-launch steps: run another configuration, an external tool, or a VS Code task first
- Save console output to a file, overwritten on every run (PyCharm-style)
- Active configuration picker in status bar
- Sidebar tree with inline Run/Debug actions
- Run/debug current Python file without creating a config
- Variable expansion support (
${workspaceFolder},${file},${env:NAME}, and more) - Multi-root workspace support
- VS Code
^1.85.0 - Python installed and available in environment
- Recommended: VS Code Python extension (CharmRun can fall back to configured/default PATH interpreters)
CharmRun is published to both extension registries:
| Registry | Editors that use it | Listing |
|---|---|---|
| VS Code Marketplace | VS Code, VS Code Insiders | marketplace.visualstudio.com/items?itemName=yingbo.charmrun |
| Open VSX Registry | Cursor, Windsurf, VSCodium, Gitpod | open-vsx.org/extension/yingbo/charmrun |
Microsoft's marketplace terms restrict it to Microsoft products, so Cursor, Windsurf and VSCodium do not resolve extensions from it — they read Open VSX instead.
In any of these editors:
- Open the Extensions view (
Ctrl+Shift+X, orCmd+Shift+Xon macOS). - Type CharmRun in the search box — or
yingbo.charmrunto match the exact extension ID and skip similarly named results. - Pick the entry published by yingbo and click Install.
VS Code searches the VS Code Marketplace; Cursor, Windsurf and VSCodium search Open VSX. Both registries carry the same versions.
code --install-extension yingbo.charmrun # VS Code
cursor --install-extension yingbo.charmrun # Cursor
windsurf --install-extension yingbo.charmrun # Windsurf
codium --install-extension yingbo.charmrun # VSCodiumEvery release attaches charmrun.vsix to its
GitHub release. Download
it and install with:
code --install-extension charmrun.vsix
cursor --install-extension charmrun.vsixIn the UI: Extensions → ... menu → Install from VSIX...
npm install
npm run compilePress F5 in VS Code to launch an Extension Development Host. To build an
installable package instead, run npm run vsix.
- Open a workspace containing Python code.
- In the Activity Bar, open CharmRun.
- Click Add Configuration.
- Choose whether to create a new CharmRun-managed config or adopt an existing Python
launch.jsonentry. - Fill the form, then Save & Close to store it and close the editor, or Apply to store it and keep editing. Cancelling, or opening a different configuration, asks first if the form has unsaved changes.
- Select the active configuration (status bar or command palette).
- Run or debug using:
- status bar buttons (
play/bug) - tree inline actions
- command palette commands
- status bar buttons (
- To change a configuration later, double-click it in the CharmRun sidebar, or use Edit Configuration from its right-click menu.
- If you want to skip the combined flow, use
CharmRun: Create Configurationto create directly orCharmRun: Adopt launch.json Configurationto adopt directly.
CharmRun: Run Configuration(charmrun.runConfiguration)CharmRun: Debug Configuration(charmrun.debugConfiguration)CharmRun: Run Current Python File(charmrun.runCurrentFile)CharmRun: Debug Current Python File(charmrun.debugCurrentFile)CharmRun: Add Configuration(charmrun.openConfigurationFlow)CharmRun: Create Configuration(charmrun.createConfiguration)CharmRun: Edit Configuration(charmrun.editConfiguration)CharmRun: Delete Configuration(charmrun.deleteConfiguration)CharmRun: Duplicate Configuration(charmrun.duplicateConfiguration)CharmRun: Select Active Configuration(charmrun.selectActiveConfig)CharmRun: Adopt launch.json Configuration(charmrun.adoptLaunchConfiguration)CharmRun: Refresh Configurations(charmrun.refreshConfigurations)
CharmRun stores managed configs in:
<workspace>/.vscode/launch.json
CharmRun only manages entries it created or explicitly adopted. Other launch.json entries are left untouched.
See full format: docs/CONFIG_FORMAT.md
Each configuration can run a list of steps before it launches, in the order you arrange them in the Before Launch section of the editor:
- Run another configuration - pick any other CharmRun configuration in the same workspace folder from a dropdown. It runs to completion (including its own before-launch steps) before the next step starts.
- Run external tool - a command with arguments and a working directory. A non-zero exit code aborts the launch.
- Run task - a VS Code task, chosen from the tasks available in the workspace. A non-zero task exit code aborts the launch.
Steps can be reordered, disabled without being deleted, and cancelled while they
run (progress appears as a notification). Output and failures are written to the
CharmRun Before Launch output channel. Circular references between
configurations are detected and reported instead of looping.
Steps are stored with the configuration in launch.json under charmrunPreRun,
so they are shared with the rest of the team.
Supported placeholders:
${workspaceFolder}${workspaceFolderBasename}${file}${fileBasename}${fileBasenameNoExtension}${fileDirname}${fileExtname}${relativeFile}${env:VARNAME}
Applied to:
scriptargscwdenvvaluesenvFileoutputFile- before-launch external tool
command,args, andcwd
If configuration interpreter is selected, CharmRun resolves in this order:
- Python extension command
python.interpreterPath python.defaultInterpreterPathin workspace settingspython3thenpythonon PATH
If a custom interpreter path/command is provided, CharmRun validates it before launch.
npm run compile: Type-check + esbuild bundlenpm run watch: Type-check + bundling in watch modenpm run package: Production bundle for publishingnpm run vsix: Build an installablecharmrun.vsixnpm run publish:marketplace: Publish the VSIX to the VS Code Marketplace
- docs/ARCHITECTURE.md
- docs/CONFIG_FORMAT.md
- docs/PUBLISHING.md
- CONTRIBUTING.md
- FEATURE_SPEC.md
- worklog.md
MIT - see LICENSE
