A workspace is your personal Dev Container - an isolated, fully-configured development environment that runs in the cloud. Each workspace comes with everything you need to code, including a complete Linux environment, your choice of packages and tools, and multiple ways to access and work with your code.
Unlike traditional development environments that run locally on your machine, workspaces run as containerized environments on remote infrastructure. This provides:
Start coding immediately without setting up local development environments, installing dependencies, or configuring tools.
Each workspace runs in isolation with its own network namespace, preventing conflicts and keeping your development secure.
Access your workspace through various methods depending on your workflow:
Powered by Nix package manager, packages are installed and persisted at the workmachine host level. Each workspace gets access to packages based on its configuration, making binaries instantly available in the workspace PATH without reinstallation.
Connect your workspace to environments to access services like databases, caches, and APIs using simple service names. The workspace's network namespace switches to enable seamless service access.
Intercept services running in connected environments to route their traffic to your workspace. Debug and test with real traffic without affecting the actual service.
Workspaces run on workmachines - virtual machines that host multiple workspaces. Each workmachine provides:
Each workspace is a containerized environment with:
~/workspaces/[workspace-name]Full IDE experience in your browser with extensions, debugging, and terminal access. No installation required.
Connect via SSH with your preferred desktop IDE (VS Code, Cursor, IntelliJ, etc.) for native development experience.
Quick browser-based terminal access for running commands and checking workspace status without full IDE.
Integrate AI assistants that work directly with your workspace for enhanced development productivity.
All workspaces on the same workmachine share the home directory (~). This means:
.bashrc, .vimrc, .gitconfig) are sharedEach workspace has its own dedicated directory for code:
~/workspaces/[workspace-name]/
This keeps each workspace's code isolated while sharing common configurations in the home directory.
Packages installed via Nix are stored at the workmachine host level and persist across workspace restarts. When a workspace starts, packages specified in its configuration are immediately available in the PATH without reinstallation.
Data Persistence
All data in the home directory and workspace directories persists across workspace suspensions and restarts. Only when a workspace is deleted is its data removed.
Each workspace has its own network namespace, providing complete network isolation. By default, workspaces can access the external internet but cannot directly access environment services.
When you connect a workspace to an environment using kl env connect, the workspace's network namespace switches to the environment's namespace. This enables:
postgres, redis)Workspaces are long-lived containers. When something feels off—slow startup, missing services, broken SSH—the quickest path to a fix is to inspect the workspace state from inside the container.
kl status # Workspace overview
kl env status # Active environment connection
kl intercept list # Running intercepts
df -h /workspaces # Check remaining disk space
ssh -T workspace-name.getent hosts postgres.kl intercept status api-server.ss -plnt.Tip
If a workspace becomes unhealthy, suspend and resume it from the dashboard. This reprovisions the container while preserving your home directory and package cache.
~/workspaces to collaborate on code.~/) so everyone benefits from the same dotfiles.