Run projects instantly without the hassle of installing system dependencies, managing language versions, or learning Docker. Containless automatically provisions fully isolated, project-local runtimes for Node.js, Python, Java, Go, PHP, and Ruby.
Features
- Auto-detection — Detects installed Containless runtimes the moment you open a workspace
- Full sandbox — Terminal PATH is overridden so every command uses the local runtime
- CLI integration — Run all Containless CLI commands directly from VS Code
- Status bar — See active runtimes at a glance with a persistent status bar indicator
- Output channel — All CLI output and extension activity is logged to a dedicated panel
- Python — Configures the interpreter path and virtual environment
- Node.js — Configures Node.js for ESLint, npm, and the terminal
- Java — Sets
JAVA_HOMEfor the Java extension pack - Go — Sets
GOROOTand alternate tools for the Go extension - PHP — Configures PHP executable for linting and debugging
- Ruby — Configures Ruby executable for the terminal and workspace
- Live reload — Watches
containless.jsonand reconfigures automatically on changes
How It Works
- Open a workspace that contains a
containless.json - The extension activates automatically
- It scans
.containless/runtimes/for installed runtimes - Workspace settings are updated to point all tools to local runtimes
- Terminal PATH is prepended with local binary directories
Result: Every tool in VS Code — IntelliSense, linting, debugging, and the terminal — uses the project-local runtime instead of whatever is installed globally.
Commands
Open the Command Palette (Ctrl+Shift+P / Cmd+Shift+P) and run:
| Command | Description |
|---|---|
Containless: Run Project |
Install runtimes and execute the start command in the terminal |
Containless: Install Runtime |
Select a runtime and version to download and install |
Containless: Initialize Project |
Scan the project and generate containless.json |
Containless: Detect and Configure Runtimes |
Re-scan installed runtimes and update VS Code settings |
Containless: Show Runtime Info |
Display installed runtimes and their status |
Containless: Clean Runtimes |
Delete all locally installed runtimes |
Containless: Reset to Global Runtimes |
Remove sandbox settings and restore global defaults |
Containless: Show Commands |
Open the Containless command menu |
Status Bar
When a containless.json is present, a status bar item appears at the bottom of VS Code showing the active runtimes (e.g. Containless: [email protected] | [email protected]). Click it to open the command menu for quick access to all Containless actions.
What Gets Configured
Python
python.defaultInterpreterPath→ local Python or venv executable
Node.js
eslint.runtime→ local Node.js executablenpm.binPath→ local Node.js bin directory
Java
java.jdt.ls.java.home→ local Java home
Go
go.goroot→ local Go SDK rootgo.alternateTools→ local Go binary
PHP
php.executablePath→ local PHP executable
Terminal
terminal.integrated.env.{platform}.PATH→ prepended with all local runtime bin directories
Configuration
| Setting | Type | Default | Description |
|---|---|---|---|
containless.cliPath |
string |
"" |
Override the path to the containless CLI binary. Leave empty to auto-detect. |
Requirements
- VS Code 1.85 or later
- A project with a
containless.jsonfile - The Containless CLI installed globally or in the project
Getting Started
- Install the Containless CLI:
npm install -g containless - Initialize your project:
containless init - Install runtimes:
containless run - Open the project in VS Code — the extension takes care of the rest!
Alternatively, after installing the extension, use the Command Palette to run Containless: Initialize Project and Containless: Run Project without leaving VS Code.
Troubleshooting
| Problem | Solution |
|---|---|
| CLI not found | Install with npm install -g containless or set containless.cliPath |
| No runtimes detected | Run Containless: Run Project from the Command Palette |
| Terminal still uses global runtime | Close the terminal and open a new one (`Ctrl+``) |
| Settings not applied | Check .vscode/settings.json in your workspace |
| IDE still using global runtimes | Restart VS Code or reload the window (Ctrl+Shift+P → Reload Window) |