Pixi brings fast, reproducible package management and polyglot workspace workflows to Visual Studio Code. Built upon a decoupled, language-agnostic core architecture, it provides unified project discovery, task execution, terminal profiles, manifest actions, and automatic multi-language toolchain scanning.
[!NOTE]
Language Adapter Status: Python is fully supported with first-class environment integration via @vscode/python-environments (interpreter resolution, dynamic file-level environment routing, and package tree management). Automatic toolchain detection is also available for C/C++, R, and Rust, with additional language integrations planned.
Pixi Explorer Side Panel
A dedicated Activity Bar container providing complete visibility and control over your Pixi workspace:
┌────────────────────────────────────────────────────────────────────────┐
│ PIXI EXPLORER │
├────────────────────────────────────────────────────────────────────────┤
│ ENVIRONMENTS │ Installed / Uninstalled / Incompatible │
│ │ ├── Explicit vs Transitive Dependencies │
│ │ └── 1-click Install, Reinstall, Lock & Terminal │
├──────────────────┼─────────────────────────────────────────────────────┤
│ TASKS │ Native Pixi Tasks Lifecycle │
│ │ ├── Add & Remove Tasks via Guided UI Wizards │
│ │ ├── 1-click Run & Run in Custom Environment │
│ │ └── Jump to Task Definition in Manifest │
├──────────────────┼─────────────────────────────────────────────────────┤
│ GLOBAL TOOLS │ User-level CLI Apps (~/.pixi/bin) │
│ │ └── Inspect, Install, Sync, Update & Uninstall │
├──────────────────┼─────────────────────────────────────────────────────┤
│ PIXI INFO │ CLI Version, System Platform, Virtual Packages │
│ │ └── Cache Disk Measurement & 1-click Cleanup │
└────────────────────────────────────────────────────────────────────────┘
Key Features
Workspace & Environment Lifecycle
- Automatic Project Discovery: Instantly detects
pixi.toml and pyproject.toml manifests across single-root and multi-root workspaces.
- Dual Perspective Tree View: Toggle between Environment View (runtime status, toolchains, installed packages) and Feature View (declared features, reusable dependencies, environment references) with 1-click (
$(organization)).
- Environment, Feature & Platform Management Hubs: Centralized command hubs (
Pixi: Environment ..., Pixi: Feature ..., Pixi: Channel ..., and Pixi: Platform ...) to create, install, reinstall, configure environment features (--force), or manage target platforms and channels without writing raw TOML.
- Locked Dependency Inlay Hints & Navigation: Displays actual locked package versions inline in manifests (
: 1.26.4), rich hover inspection cards (build, channel, license, multi-environment matrix diffs), and Ctrl/Cmd + Click navigation directly to package entries in pixi.lock.
- Offline Schema Validation & Manifest IntelliSense: Bundles official Pixi JSON schema definitions locally for 100% offline autocompletion of manifest sections (
[workspace], [tasks], [dependencies], etc.), properties, channels, platforms, and rich hover documentation.
- Manifest Editor Actions: 1-click title bar buttons for manifest files to Lock, Install, Update, or Reinstall dependencies.
- File-Level Environment Routing: Map glob patterns directly to specific Pixi environments via
pixi.environmentRules (e.g. tests/**=dev).
- Lifecycle Diagnostics: Categorizes environments into Installed (ready & executable), Uninstalled (declared in manifest, 1-click installable), and Incompatible (platform mismatch).
Aggregated Package Search & Discovery
- Dual-Source Search: High-performance real-time search across Conda repositories (
conda-forge, etc.) and PyPI with live autocompletion.
- Rich Package Inspection: View package versions, target platforms, licenses, descriptions, and jump directly to package pages on prefix.dev.
- Dependency Diagnostics: Inspect full dependency trees and diagnose package origin with reverse dependency tree inspection ("Why is this package installed?").
- Deep Python & Jupyter Integration: Connects with
@vscode/python-environments for seamless interpreter switching, status bar indicators, package inspection, and clean Pixi environment grouping in Jupyter notebook kernel selection with ipykernel safeguard detection.
- Multi-Language Toolchain Scanner: Automatically scans installed environments for Python, C/C++ compilers (GCC, Clang, MSVC, CMake, Ninja, header paths), R (
R, Rscript), and Rust (rustc, cargo).
- Interactive Task Lifecycle: Create new runnable tasks via guided wizards (name, shell command, environment,
--depends-on task dependencies) and remove tasks directly from side panel actions or command palette.
- Manifest Task Actions (Hover & CodeLens): Non-intrusive hover tooltips with full command previews and instant execution links, plus customizable CodeLens modes (compact, full, header-only, or off).
- Intelligent Task Grouping: Organize workspace tasks in the side panel by namespace prefix (
data-*, gui-*), by target environment, or in a flat list with 1-click grouping switcher.
- Native VS Code Tasks: Auto-registers Pixi tasks as native VS Code tasks (
Terminal: Run Task...) with a dedicated QuickPick runner.
- Pre-Configured Terminals: Launch interactive terminal sessions with the target Pixi environment pre-activated.
- Global Tools Management: Easily inspect, install, update, and uninstall user-level CLI packages installed in
~/.pixi/bin.
Essential Commands
Launch any command via the Command Palette (Ctrl+Shift+P / Cmd+Shift+P) by typing Pixi::
| Command |
Identifier |
Description |
| Pixi: Initialize Project ... |
pixi.init |
Initialize a new Pixi project (pixi.toml or pyproject.toml) in the workspace. |
| Pixi: Environment ... |
pixi.environment |
Interactive hub to create/delete environments, configure environment features, install, or open shells. |
| Pixi: Feature ... |
pixi.feature |
Interactive hub to create/remove features, add packages to a feature, or jump to feature definitions. |
| Pixi: Channel ... |
pixi.channel |
Interactive hub to add Conda presets/mirrors (prepend/append) or remove channels at workspace or feature scope. |
| Pixi: Platform ... |
pixi.platform |
Configure target platforms via check/uncheck picker at workspace or feature scope. |
| Pixi: Search Packages ... |
pixi.searchPackages |
Search Conda & PyPI packages to inspect platforms, licenses, metadata, and docs. |
| Pixi: Add Package ... |
pixi.addPackage |
Add packages to features, inline environments, or global scope with channel/version picking. |
| Pixi: Remove Package ... |
pixi.removePackage |
Remove packages from manifest with automatic feature/environment scope resolution. |
| Pixi: Install (Sync Environments) |
pixi.install |
Install dependencies and synchronize all project environments. |
| Pixi: Reinstall ... |
pixi.reinstall |
Interactive menu to rebuild all environments or a specific environment. |
| Pixi: Update / Upgrade ... |
pixi.update |
Unified menu to check outdated packages (dry-run), update dependencies, or upgrade manifest. |
| Pixi: Lock Dependencies |
pixi.lock |
Solve dependencies and update the lockfile without modifying environments. |
| Pixi: Clean ... |
pixi.clean |
Interactive menu to clean project environments, a single environment, or cache. |
| Pixi: Add Task ... |
pixi.tasks.addTask |
Guided wizard to create a new runnable task in the project manifest. |
| Pixi: Run Task ... |
pixi.runTask |
QuickPick menu to search and run any task defined in the project. |
| Pixi: Open Terminal in Environment ... |
pixi.openTerminal |
Open an integrated terminal pre-activated in a selected environment. |
| Pixi: Open Manifest |
pixi.openManifest |
Open the project manifest file (pixi.toml or pyproject.toml). |
| Pixi: Open Lockfile |
pixi.openLockfile |
Open pixi.lock and inspect resolved package records. |
| Pixi: Show Dependency Tree |
pixi.showDependencyTree |
Inspect the full resolved dependency hierarchy for an environment or package. |
| Pixi: Why is This Installed? (Reverse Tree) |
pixi.whyPackage |
Trace reverse dependency chains explaining why a package is installed. |
| Pixi: Global Tools ... |
pixi.global |
Interactive menu to install, list, update, and uninstall global CLI tools. |
| Pixi: Update Pixi CLI ... |
pixi.selfUpdate |
Update the Pixi CLI binary to the latest or a specific release version. |
[!TIP]
Contextual and view-specific actions (such as switching Environment/Feature or Task grouping modes via view title buttons, creating/removing features and environments, adding/removing tasks or packages, jumping to manifest declarations, and running tasks in custom environments) are also directly available via inline icon buttons and right-click context menus in the Pixi Explorer tree views and editor title bar.
Extension Settings
| Setting |
Type |
Default |
Scope |
Description |
pixi.executablePath |
string |
"" |
Machine |
Path to the Pixi binary. Discovered from system PATH if empty. |
pixi.displayNameFormat |
string |
"${project}:${env}" |
Resource |
Display format for environments. Placeholders: ${project}, ${env}, ${version}. |
pixi.defaultManifestFormat |
string |
"ask" |
Resource |
Default manifest format for project initialization ("ask", "pixi", or "pyproject"). |
pixi.autoInstallOnOpen |
string |
"prompt" |
Resource |
Behavior when opening projects with uninstalled environments ("prompt", "always", "never"). |
pixi.environmentRules |
string[] |
[] |
Resource |
Map glob patterns to environment names (e.g. tests/**=dev, train/**=gpu). |
pixi.terminal.defaultEnvironment |
string |
"" |
Resource |
Default environment name to activate when opening a Pixi terminal (prompts if empty). |
pixi.packageSearch.includePypi |
boolean |
true |
Resource |
Include PyPI packages in package search results. |
pixi.packages.displayMode |
string |
"grouped" |
Resource |
Package tree display mode ("grouped", "explicitOnly", or "all"). |
pixi.environments.viewMode |
string |
"environment" |
Resource |
Environments view grouping mode ("environment" or "feature"). |
pixi.cache.autoMeasureSize |
boolean |
true |
Window |
Automatically compute Pixi cache disk usage in Pixi Info. |
pixi.tasks.groupBy |
string |
"prefix" |
Resource |
Task grouping mode in Tasks view ("prefix", "environment", "none"). |
pixi.tasks.prefixSeparators |
string[] |
["-", "_", ":", "::"] |
Resource |
Delimiters used to parse namespace prefixes from task names. |
pixi.tasks.minGroupSize |
integer |
2 |
Resource |
Minimum tasks required to form a prefix group folder (isolated tasks stay flat). |
pixi.tasks.maxDepth |
integer |
1 |
Resource |
Maximum nesting depth for prefix-based task groups (1–3). |
pixi.tasks.manifestActions |
string |
"hover" |
Resource |
Display style for task actions in manifests ("hover", "compact", "full", "header", "off"). |
pixi.dependencies.inlayHints |
boolean |
true |
Resource |
Show locked dependency versions as inline hints in manifests (pixi.toml, pyproject.toml). |
pixi.manifest.schemaSupport |
boolean |
true |
Resource |
Enable offline schema-based autocompletion and hover documentation in pixi.toml and pyproject.toml. |
Example Configuration
Add this to your project's .vscode/settings.json:
{
"pixi.environmentRules": ["tests/**=dev", "train/**=train", "scripts/*.py=dev"],
"pixi.defaultManifestFormat": "pixi",
"pixi.displayNameFormat": "${project}:${env} (${version})",
"pixi.packages.displayMode": "grouped",
"pixi.tasks.groupBy": "prefix"
}
Public Extension API
Other VS Code extensions can programmatically access Pixi's workspaces, environments, and toolchains:
import * as vscode from 'vscode';
import type { PixiExtensionApi } from 'sheeptao.pixi';
const pixi = vscode.extensions.getExtension<PixiExtensionApi>('sheeptao.pixi')?.exports;
if (pixi) {
const projectPaths = pixi.getProjectPaths();
const envs = pixi.getAllEnvironments();
const packages = await pixi.getPackages('default', projectPaths[0]);
// Active environment management
const activeEnv = await pixi.getActiveEnvironment();
await pixi.setActiveEnvironment(undefined, 'default');
pixi.onDidChangeActiveEnvironment((e) => {
console.log('Active environment changed:', e.environment?.pixiEnvName);
});
}
Requirements & Quick Start
- Install Pixi on your system.
- Install Pixi from the VS Code Marketplace or Open VSX.
- (Optional for Python) Install the official Python Environments extension for Python interpreter and package integration.
- Open any workspace containing a
pixi.toml or pyproject.toml.
Troubleshooting
- Check Output Logs: Open
View → Output and select Pixi from the dropdown. To view detailed diagnostic logs (file scanning, background processes), run Developer: Set Log Level... from the Command Palette, select Pixi, and set to Trace or Debug.
- Binary Not Found: Verify
pixi is available in your system PATH, or set pixi.executablePath.
- Environments Not Showing: Ensure
pixi.toml exists and run pixi.install to initialize environment prefixes.
Acknowledgements & License
| |