Clone your workstation environment to an isolated VM with selective apps, paths and services
Project description
CloneBox ๐ฆ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ____ _ ____ โ
โ / ___|| | ___ _ __ ___| _ \ ___ __ __ โ
โ | | | | / _ \ | '_ \ / _ \ |_) |/ _ \\ \/ / โ
โ | |___ | || (_) || | | | __/ _ <| (_) |> < โ
โ \____||_| \___/ |_| |_|\___|_| \_\\___//_/\_\ โ
โ โ
โ Clone your workstation to an isolated VM โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Clone your workstation environment to an isolated VM with selective apps, paths and services.
CloneBox lets you create isolated virtual machines with only the applications, directories and services you need - using bind mounts instead of full disk cloning. Perfect for development, testing, or creating reproducible environments.
Features
- ๐ฏ Selective cloning - Choose exactly which paths, services and apps to include
- ๐ Auto-detection - Automatically detects running services, applications, and project directories
- ๐ Bind mounts - Share directories with the VM without copying data
- โ๏ธ Cloud-init - Automatic package installation and service setup
- ๐ฅ๏ธ GUI support - SPICE graphics with virt-viewer integration
- โก Fast creation - No full disk cloning, VMs are ready in seconds
Installation
Prerequisites
# Install libvirt and QEMU/KVM
sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager virt-viewer
# Enable and start libvirtd
sudo systemctl enable --now libvirtd
# Add user to libvirt group
sudo usermod -aG libvirt $USER
newgrp libvirt
# Install genisoimage for cloud-init
sudo apt install genisoimage
Install CloneBox
# From source
git clone https://github.com/wronai/clonebox.git
cd clonebox
pip install -e .
# Or directly
pip install clonebox
lub
# Aktywuj venv
source .venv/bin/activate
# Interaktywny tryb (wizard)
clonebox
# Lub poszczegรณlne komendy
clonebox detect # Pokaลผ wykryte usลugi/apps/ลcieลผki
clonebox list # Lista VM
clonebox create --config ... # Utwรณrz VM z JSON config
clonebox start <name> # Uruchom VM
clonebox stop <name> # Zatrzymaj VM
clonebox delete <name> # Usuล VM
Quick Start
Interactive Mode (Recommended)
Simply run clonebox to start the interactive wizard:
clonebox
The wizard will:
- Detect running services (Docker, PostgreSQL, nginx, etc.)
- Detect running applications and their working directories
- Detect project directories and config files
- Let you select what to include in the VM
- Create and optionally start the VM
Command Line
# Create VM with specific config
clonebox create --name my-dev-vm --config '{
"paths": {
"/home/user/projects": "/mnt/projects",
"/home/user/.config": "/mnt/config"
},
"packages": ["python3", "nodejs", "docker.io"],
"services": ["docker"]
}' --ram 4096 --vcpus 4 --start
# List VMs
clonebox list
# Start/Stop VM
clonebox start my-dev-vm
clonebox stop my-dev-vm
# Delete VM
clonebox delete my-dev-vm
# Detect system state (useful for scripting)
clonebox detect --json
Usage Examples
Python Development Environment
clonebox create --name python-dev --config '{
"paths": {
"/home/user/my-python-project": "/workspace",
"/home/user/.pyenv": "/root/.pyenv"
},
"packages": ["python3", "python3-pip", "python3-venv", "build-essential"],
"services": []
}' --ram 2048 --start
Docker Development
clonebox create --name docker-dev --config '{
"paths": {
"/home/user/docker-projects": "/projects",
"/var/run/docker.sock": "/var/run/docker.sock"
},
"packages": ["docker.io", "docker-compose"],
"services": ["docker"]
}' --ram 4096 --start
Full Stack (Node.js + PostgreSQL)
clonebox create --name fullstack --config '{
"paths": {
"/home/user/my-app": "/app",
"/home/user/pgdata": "/var/lib/postgresql/data"
},
"packages": ["nodejs", "npm", "postgresql"],
"services": ["postgresql"]
}' --ram 4096 --vcpus 4 --start
Inside the VM
After the VM boots, mount shared directories:
# Mount shared paths (9p filesystem)
sudo mkdir -p /mnt/projects
sudo mount -t 9p -o trans=virtio,version=9p2000.L mount0 /mnt/projects
# Or add to /etc/fstab for permanent mount
echo "mount0 /mnt/projects 9p trans=virtio,version=9p2000.L 0 0" | sudo tee -a /etc/fstab
Architecture
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ HOST SYSTEM โ
โ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โ
โ โ /home/user/ โ โ /var/www/ โ โ Docker โ โ
โ โ projects/ โ โ html/ โ โ Socket โ โ
โ โโโโโโโโฌโโโโโโโโ โโโโโโโโฌโโโโโโโโ โโโโโโโโฌโโโโโโโโ โ
โ โ โ โ โ
โ โ 9p/virtio โ โ โ
โ โ bind mounts โ โ โ
โ โโโโโโโโผโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโผโโโโโโโโ โ
โ โ CloneBox VM โ โ
โ โ โโโโโโโโโโโโโโ โโโโโโโโโโโโโโ โโโโโโโโโโโโโโ โ โ
โ โ โ /mnt/proj โ โ /mnt/www โ โ /var/run/ โ โ โ
โ โ โ โ โ โ โ docker.sockโ โ โ
โ โ โโโโโโโโโโโโโโ โโโโโโโโโโโโโโ โโโโโโโโโโโโโโ โ โ
โ โ โ โ
โ โ cloud-init installed packages & services โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Quick Clone (Recommended)
The fastest way to clone your current working directory:
# Clone current directory - generates .clonebox.yaml and asks to create VM
clonebox clone .
# Clone specific path
clonebox clone ~/projects/my-app
# Clone with custom name and auto-start
clonebox clone ~/projects/my-app --name my-dev-vm --run
# Clone and edit config before creating
clonebox clone . --edit
Later, start the VM from any directory with .clonebox.yaml:
# Start VM from config in current directory
clonebox start .
# Start VM from specific path
clonebox start ~/projects/my-app
Export YAML Config
# Export detected state as YAML (with deduplication)
clonebox detect --yaml --dedupe
# Save to file
clonebox detect --yaml --dedupe -o my-config.yaml
Commands Reference
| Command | Description |
|---|---|
clonebox |
Interactive VM creation wizard |
clonebox clone <path> |
Generate .clonebox.yaml from path + running processes |
clonebox clone . --run |
Clone and immediately start VM |
clonebox clone . --edit |
Clone, edit config, then create |
clonebox start . |
Start VM from .clonebox.yaml in current dir |
clonebox start <name> |
Start existing VM by name |
clonebox stop <name> |
Stop a VM (graceful shutdown) |
clonebox stop -f <name> |
Force stop a VM |
clonebox delete <name> |
Delete VM and storage |
clonebox list |
List all VMs |
clonebox detect |
Show detected services/apps/paths |
clonebox detect --yaml |
Output as YAML config |
clonebox detect --yaml --dedupe |
YAML with duplicates removed |
clonebox detect --json |
Output as JSON |
Requirements
- Linux with KVM support (
/dev/kvm) - libvirt daemon running
- Python 3.8+
- User in
libvirtgroup
License
MIT License - see LICENSE file.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file clonebox-0.1.2.tar.gz.
File metadata
- Download URL: clonebox-0.1.2.tar.gz
- Upload date:
- Size: 31.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e01613e28e99be15d62b6ba2d6e1bb21a1e4f5d47dfe3c1122ff84cac1241e64
|
|
| MD5 |
9c1a425612cb2e954a17e98703d0e099
|
|
| BLAKE2b-256 |
22949455215a4ba0c1500992242b5d3e56f6e0d35cf4e43b6c2dd4542af31ccb
|
File details
Details for the file clonebox-0.1.2-py3-none-any.whl.
File metadata
- Download URL: clonebox-0.1.2-py3-none-any.whl
- Upload date:
- Size: 25.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ad6b3505583f0d617bfb4ba3a9dfeb51c30f3a7287d7de451c4464ab0ecf6d87
|
|
| MD5 |
f63dee9d7b923f6aad9cde83533f7e94
|
|
| BLAKE2b-256 |
a2ea24181f375cd6f21f7ca1b0edf606447a8416c67f6ec24b992e84b4c3eec1
|