Workspaces
Overview
A Workspace in Bunnyshell is a persistent virtual machine (VM) provisioned using KubeVirt inside a Kubernetes cluster. It provides a reproducible, isolated development environment with full access to system-level resources, Docker, SSH, and user-defined tooling.
Workspaces are primarily intended for:
- AI-assisted development using tools like Cursor, Windsurf, GitHub Copilot, or JetBrains Gateway
- Long-running feature branches with persistent state
- Remote development setups with local-like performance
Architecture
Each Workspace runs as a KubeVirt VM in its own namespace. VMs are stateful and support:
- Persistent file system (backed by a volume)
- Network isolation
- SSH access via openssh-server
- Docker support inside the VM
- Port exposure via nginx sidecar
Workspace lifecycle is decoupled from CI/CD pipelines and can be started/stopped manually or automated via API.
Why KubeVirt
We use KubeVirt for workspace virtualization instead of Firecracker or Kata Containers because:
- Stateful VMs with persistent storage across restarts
- Long-running environments with background processes and full OS capabilities
- Kubernetes-native orchestration (namespaces, RBAC, network policies)
- Full support for Docker-in-VM, devcontainer-based workflows, and remote SSH
Alternatives like Firecracker or Kata Containers are optimized for short-lived, stateless workloads (e.g., secure micro-VMs), and do not provide the level of persistence or flexibility required for development environments.
Preinstalled Toolchain
# CLI Utilities
git curl wget vim nano tmux htop unzip build-essential
# Remote Access
openssh-server
# Container Support
docker docker-compose
# AI/Cloud Development
devcontainer-cli
bunnyshell CLI
# Version Managers
nvm pyenv asdf
Language Runtimes (Default Image)
Node.js LTS (e.g. 18.x)
Python 3.10+ (pip, venv)
Java 17 (OpenJDK)
Go 1.21
PHP 8.2
Ruby (latest stable)
You can manage versions via nvm, pyenv, and asdf.
Access Methods
- SSH: You can connect directly using your IDE (VSCode, JetBrains, etc.)
- Browser: Web terminal and editor via Bunnyshell UI
Expose ports via nginx for browser access or webhooks. Default routes are defined per environment.
Use Cases
- Remote full-time development with IDE integration
- Isolated environments per feature branch
- AI-generated code validation and iteration
- Background services and test infrastructure in-VM
- Previewing and debugging production-like codebases
Updated about 22 hours ago