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