Synk Devspace
Zero-friction environment setup for VS Code.
Open a project, click one button — Synk Devspace installs the runtime, the dependencies, and gets you coding in seconds.

What is Synk Devspace?
Synk Devspace is a VS Code extension that eliminates the "it works on my machine" problem by automatically detecting what a project needs to run, installing the correct runtime and dependencies, and recording every decision in a .zerosetup.json manifest so the whole team is always in sync.
Supported ecosystems (v0.1)
| Ecosystem |
Detected via |
Setup actions |
| Node.js |
package.json |
Installs correct Node version; runs npm install |
| Python |
requirements.txt, pyproject.toml, Pipfile, setup.py |
Creates virtualenv; runs pip install |
v0.1 Features
- 🔍 Auto-detect — Synk scans your workspace for well-known manifest files and determines the project type automatically.
- ⚡ One-click setup — A single command (
Synk: Set Up Environment) installs everything. No terminal, no manual steps.
- 📋 View Plan — Preview exactly what Synk will do before it does it.
- 💾
.zerosetup.json manifest — A machine-readable record of the detected environment and installed versions, committed alongside your code.
- 🖥️ Synk Terminal — Opens a pre-configured integrated terminal with the correct runtime already on
PATH.
- ▶️ Run Dev Script — Launches your project's start command (
npm run dev, python main.py, etc.) from the sidebar.
- 🔐 Authentication — Sign in to your account to sync settings and unlock team features.
- 🗂️ Activity-bar panel — The Synk sidebar gives you at-a-glance project status and quick-action buttons.
Installation
- Open VS Code.
- Press
Ctrl+P (or ⌘P on macOS) and type:
ext install synkdevspace.synkdevspace
- Reload VS Code when prompted.
Synk activates automatically when you open a folder containing package.json, requirements.txt, pyproject.toml, Pipfile, setup.py, or .zerosetup.json.
Usage
Automatic setup (recommended)
When synk.autoDetect is enabled (the default), Synk detects your project type on workspace open and shows a notification:
Synk detected a Node.js project. Set up the environment now? [Set Up] [View Plan] [Later]
Click Set Up and Synk handles the rest.
Manual commands
Access all commands via the Command Palette (Ctrl+Shift+P / ⌘⇧P):
| Command |
Description |
Synk: Set Up Environment |
Detect and install everything for the current workspace |
Synk: View Setup Plan |
Preview the steps Synk will take, without executing them |
Synk: Run Dev Script |
Run the project's primary dev/start script |
Synk: Open Terminal |
Open an integrated terminal with the correct runtime on PATH |
Synk: Sign In |
Sign in to your account |
Synk: Sign Out |
Sign out of your account |
Configuration
Open Settings (Ctrl+,) and search for Synk to find:
| Setting |
Type |
Default |
Description |
synk.autoDetect |
boolean |
true |
Auto-detect project type and prompt on workspace open |
synk.showWelcomeOnStartup |
boolean |
true |
Show the Synk welcome panel on first open |
Authentication
Synk v0.1 includes authentication built on standard VS Code security APIs:
- GitHub Authentication: Uses the native
vscode.authentication.getSession('github', ['read:user', 'user:email']) API. Interactive sign-in only prompts when the user requests it.
- Secure Token Storage: Tokens are stored strictly in
context.secrets (synk.github.token). Tokens and sessions are never logged, never saved in workspace settings, and never exposed to git.
- Local Autonomy: Scanning, runtime installation, and environment management work 100% offline without signing in. Sign-in exists to unlock future environment sync and cloud capabilities.
- Commands:
Synk: Sign In (synk.signIn)
Synk: Sign Out (synk.signOut)
Backend Requirements for Google Authentication
In v0.1, Google Sign-In is exposed behind the AuthProvider interface as a stub. When implementing the cloud backend for Google Auth, the backend service must provide:
- OAuth 2.0 PKCE Authorization Endpoint:
- RFC 7636 Authorization Code with Proof Key for Code Exchange (PKCE) flow.
- Redirect URI support for the VS Code loopback handler (
http://127.0.0.1:<port>/callback) or custom URI scheme (vscode://synkdevspace.synkdevspace/auth).
- Token Exchange & Refresh Service:
POST /api/v1/auth/google/token accepting authorization code + code verifier.
- Returns short-lived access token, refresh token, and user profile (
id, email, name).
- Secure refresh endpoint:
POST /api/v1/auth/google/refresh.
- Session Revocation Endpoint:
POST /api/v1/auth/google/revoke to invalidate tokens on sign-out.
- Security & Zero Secrets in Client:
- OAuth Client Secret must reside exclusively on the backend server.
- All client-side requests must validate state tokens to prevent CSRF.
The .zerosetup.json Manifest
After a successful setup, Synk writes or updates a .zerosetup.json file in the workspace root. Commit this file to source control so every contributor and CI runner reproduces the identical environment.
Node.js Example
{
"version": "1",
"createdAt": "2026-11-13T18:00:00.000Z",
"updatedAt": "2026-11-13T18:00:00.000Z",
"projects": [
{
"kind": "node",
"rootPath": ".",
"runtime": {
"name": "node",
"version": "20.11.0"
},
"packageManager": "npm",
"installCommand": "npm ci",
"scripts": [
{ "name": "dev", "command": "vite" },
{ "name": "build", "command": "tsc && vite build" },
{ "name": "test", "command": "vitest" }
]
}
]
}
Python Example
{
"version": "1",
"createdAt": "2026-11-13T18:00:00.000Z",
"updatedAt": "2026-11-13T18:00:00.000Z",
"projects": [
{
"kind": "python",
"rootPath": ".",
"runtime": {
"name": "python",
"version": "3.11.9"
},
"venvPath": ".venv",
"installCommand": "pip install -r requirements.txt"
}
]
}
Monorepo / Multi-Project Example
{
"version": "1",
"createdAt": "2026-11-13T18:00:00.000Z",
"updatedAt": "2026-11-13T18:00:00.000Z",
"projects": [
{
"kind": "node",
"rootPath": "frontend",
"runtime": {
"name": "node",
"version": "20.11.0"
},
"packageManager": "pnpm",
"installCommand": "pnpm install --frozen-lockfile",
"scripts": [
{ "name": "dev", "command": "next dev" }
]
},
{
"kind": "python",
"rootPath": "backend",
"runtime": {
"name": "python",
"version": "3.12.4"
},
"venvPath": "backend/.venv",
"installCommand": "pip install -r requirements.txt"
}
]
}
Schema Fields
| Field |
Type |
Description |
version |
string |
Manifest schema version (currently "1") |
createdAt |
string |
ISO 8601 timestamp of original creation |
updatedAt |
string |
ISO 8601 timestamp of last update |
projects |
array |
Array of configured subprojects |
projects[].kind |
"node" | "python" |
Runtime kind |
projects[].rootPath |
string |
Path to project relative to workspace root |
projects[].runtime.name |
string |
Runtime identifier (node or python) |
projects[].runtime.version |
string |
Exact pinned runtime version |
projects[].packageManager |
string? |
Package manager for Node (npm, pnpm, yarn) |
projects[].installCommand |
string |
Command executed to install dependencies |
projects[].scripts |
array? |
Detected lifecycle scripts (name and command) |
projects[].venvPath |
string? |
Virtualenv location for Python projects |
Contributing
Contributions are welcome! Here is how to get started:
Prerequisites
- Node.js 20+
- npm 10+
- VS Code 1.85+
Local development
# 1. Clone the repo
git clone https://github.com/void-dev/void.git
cd void
# 2. Install dev dependencies
npm install
# 3. Compile (watches for changes)
npm run watch
# 4. Launch in VS Code
# Press F5 — this opens the Extension Development Host
Project structure
void/
├── src/
│ └── extension.ts # Extension entry-point
├── dist/ # Bundled output (git-ignored)
├── out/ # tsc output for type-checking (git-ignored)
├── esbuild.js # Build script
├── package.json
├── tsconfig.json
├── ROADMAP.md
└── README.md
Scripts
| Script |
Purpose |
npm run compile |
Production bundle via esbuild |
npm run watch |
Incremental dev build, watches src/ |
npm run package |
Create a .vsix for local install |
npm run vscode:prepublish |
Called by vsce before publishing |
Pull request checklist
- [ ] Code passes
tsc --noEmit without errors
- [ ] No new runtime
npm dependencies (VS Code API and Node built-ins only)
- [ ]
.zerosetup.json schema changes are reflected in this README
- [ ] New commands are added to
package.json contributes.commands
License
MIT © 2026 Void Dev