View, search, and open all your VS Code workspaces from one place. A cross-platform web dashboard and Tauri desktop app that reads workspace metadata from VS Code's storage directory and presents it in a clean, searchable interface.
- 🔍 Search & Filter — Find workspaces by name, path, or type
- 📊 Sort — Sort by name, path, type, or last modified date
- 🚀 Quick Open — Click any workspace to open it directly in VS Code
- 🔄 Auto-Refresh — Detects new workspaces every 30 seconds
- 💡 Path Tooltips — Hover over workspace names to see the full file path
- 📐 Customizable Columns — Resize, drag-to-reorder, and toggle visibility via the right-click header menu
- 🐳 Docker Support — Deploy easily with Docker and docker-compose
- 💻 Desktop App — Native app using Tauri (macOS, Windows, Linux)
- 🔒 Secure — Runs only on localhost by default
- 🤖 Claude Session Monitor — See which workspaces have active Claude Code sessions, their state (working/waiting/idle), and kill orphaned zombie sessions
Supported workspace types: Local, Remote, SSH Remote, Dev Container, Attached Container.
Open in GitHub Codespaces or any editor with Dev Containers support. Everything is pre-configured — just run npm run dev.
git clone https://github.com/derio-net/vscode-launchpad.git
cd vscode-launchpad
npm install
npm startOpen http://localhost:3010 in your browser.
cp .env.example .env
# Edit .env and set WORKSPACES_MOUNT_POINT to your VS Code workspace storage directory
docker-compose up -dSee docs/DOCKER.md for detailed Docker deployment instructions.
Download the installer for your platform from the latest release:
- macOS: Open the
.dmgand drag the app into your Applications folder. Builds are not notarized, so macOS will quarantine them — clear the flag first:/usr/bin/xattr -cr "/Applications/VS Code Launchpad.app" - Windows: Run the
.msiinstaller (or the-setup.exe) - Linux: Run the
.AppImage, or install the.deb/.rpm
Build the full application for your current platform:
npm run tauri:build:fullThen install the built application:
- macOS: Drag the
.appfromsrc-tauri/target/release/bundle/macos/into your Applications folder, or open the.dmg(locally built apps carry no quarantine flag) - Windows: Run the
.msiinstaller fromsrc-tauri/target/release/bundle/msi/ - Linux: Run the
.AppImageor install the.debfromsrc-tauri/target/release/bundle/
Cross-platform builds for all platforms run automatically via GitHub Actions when a version tag is pushed. See BUILD.md for full build instructions and prerequisites (Rust, platform-specific dependencies).
The dashboard reads workspace metadata from platform-specific VS Code storage locations:
- macOS:
~/Library/Application Support/Code/User/workspaceStorage/ - Windows:
%APPDATA%\Code\User\workspaceStorage\ - Linux:
~/.config/Code/User/workspaceStorage/(or$XDG_CONFIG_HOME)
Each workspace directory contains a workspace.json file. The dashboard scans these on startup, caches the data in memory, refreshes every 30 seconds, and serves it via a REST API to a React frontend.
Returns all discovered workspaces:
[
{
"id": "workspace-id",
"name": "My Project",
"path": "file:///Users/username/projects/my-project",
"type": "local",
"lastModified": "2024-01-15T10:30:00.000Z",
"storageDir": "/path/to/storage/dir"
}
]Additional endpoints: GET /health, POST /api/validate-path, POST /api/validate-paths, POST /api/workspaces/delete.
| Variable | Default | Description |
|---|---|---|
DASHBOARD_PORT |
3010 |
Backend server port |
DASHBOARD_DEV_PORT |
3020 |
React dev server port |
HOST |
127.0.0.1 |
Bind address (0.0.0.0 in Docker) |
WORKSPACES_MOUNT_POINT |
(auto-detected) | Override VS Code workspace storage path |
LOG_LEVEL |
info |
Logging level (debug/info/warn/error) |
LaunchPad can show live Claude Code session status per workspace — which sessions are working, waiting for approval, idle, or orphaned (zombie). This requires configuring Claude Code hooks.
Without hooks configured, the Claude integration does not appear in the UI.
Automatic (recommended):
./scripts/install-claude-hooks.sh # Install hooks
./scripts/install-claude-hooks.sh --check # Verify installation
./scripts/install-claude-hooks.sh --remove # Uninstall hooksThe script backs up your settings before modifying them, is idempotent, and only adds/removes LaunchPad hooks.
Manual: Add the following to your ~/.claude/settings.json (adjust the path to where you installed LaunchPad):
{
"hooks": {
"Notification": [
{
"matcher": "permission_prompt|idle_prompt",
"hooks": [{ "type": "command", "command": "/path/to/vscode-launchpad/scripts/claude-session-hook.sh" }]
}
],
"UserPromptSubmit": [
{
"matcher": "",
"hooks": [{ "type": "command", "command": "/path/to/vscode-launchpad/scripts/claude-session-hook.sh working" }]
}
],
"Stop": [
{
"matcher": "",
"hooks": [{ "type": "command", "command": "/path/to/vscode-launchpad/scripts/claude-session-hook.sh idle" }]
}
]
}
}| State | Indicator | Meaning |
|---|---|---|
| Working | Green (pulsing) | Claude is actively streaming/computing |
| Waiting | Amber (pulsing) | Claude needs tool approval from you |
| Idle | Grey | Claude is at the prompt, nothing pending |
| Zombie | Red (in summary) | Terminal disconnected, session orphaned — can be killed from the UI |
- "Claude integration not showing" — Check that
~/.claude/settings.jsoncontains the hooks above and that the script path is correct. New Claude sessions must be started after adding hooks. - "Sessions show wrong state" — State updates happen on Claude Code events. If you just configured hooks, restart your Claude sessions.
- "Zombie sessions won't die" — Use the Kill button in the summary panel, or manually:
kill <PID>.
| Document | Description |
|---|---|
| BUILD.md | Building from source (desktop + web) |
| CONTRIBUTING.md | How to contribute |
| docs/DOCKER.md | Docker deployment guide |
| docs/TESTING.md | Test suite details |
| docs/TROUBLESHOOTING.md | Common issues and fixes |
- Node.js 18 or higher
- Cross-platform: macOS, Windows, Linux
- VS Code installed with at least one workspace opened
MIT
Contributions are welcome! This project uses the OpenSpec (OPSX) workflow for all feature work. See CONTRIBUTING.md for details.
