Run GraphDone in an isolated Multipass VM with automatic setup.
# macOS
brew install --cask multipass
# Ubuntu
sudo snap install multipass
# Windows
# Download from https://multipass.run# 1. Launch VM with auto-generated fun name
./start vm launch
# Example output: Generated random VM name: graphdone-vm-happy-turtle-1234
# 2. Wait for setup to complete (2-5 minutes)
# VM will auto-configure Ubuntu, Docker, Node.js, and GraphDone
# 3. List your VMs to see the generated name
./start vm list
# 4. Get VM IP address (use your generated VM name)
multipass info graphdone-vm-happy-turtle-1234 | grep IPv4
# 5. Access GraphDone
# http://<vm-ip>:3127 - Web UI
# http://<vm-ip>:4127 - GraphQL API
# http://<vm-ip>:7474 - Neo4j Browser# Launch VM with custom settings
./start vm launch --branch develop --cpus 8 --memory 16G
# Connect to VM
./start vm shell
# Stop VM
./start vm stop
# Start VM
./start vm start
# Delete VM
./start vm delete
# List all VMs
./start vm list
# Show VM info
./start vm info# Shortcuts available in VM shell
gd # Go to GraphDone directory
gd-start # Start GraphDone
gd-stop # Stop GraphDone
gd-status # Check status
# Or use directly
cd ~/graphdone
./start dev
./start statusEdit vm.config.yml to customize:
resources:
cpus: 4 # CPU cores
memory: 8G # RAM
disk: 30G # Disk space
graphdone:
branch: main # Git branch to use
auto_setup: true
auto_seed: true
tailscale:
enabled: false
auth_key: "" # Tailscale auth key- Get auth key: https://login.tailscale.com/admin/settings/keys
- Set in config or environment:
export TAILSCALE_AUTH_KEY="tskey-auth-xxxxx" ./start vm launch
- VM joins your Tailscale network automatically
Run different branches simultaneously:
# Main branch
./start vm launch --name main-vm --branch main
# Feature branch
./start vm launch --name feature-vm --branch feature/new-ui
# Shell into each
./start vm shell --name main-vm
./start vm shell --name feature-vm# VM not starting?
multipass list # Check status
./start vm delete # Delete and recreate
./start vm launch
# Services not accessible?
./start vm shell # Connect to VM
cd ~/graphdone && ./start status # Check services
docker ps # Check containers
# Cloud-init still running?
./start vm shell
cloud-init status # Check provisioning statusSee docs/VM_SETUP.md for complete documentation including:
- Advanced configuration
- Network setup
- Port forwarding
- CI/CD integration
- Security best practices
| Command | Description |
|---|---|
./start vm launch |
Create and start new VM |
./start vm delete |
Delete VM and all data |
./start vm stop |
Stop running VM |
./start vm start |
Start stopped VM |
./start vm shell |
Open shell in VM |
./start vm info |
Show VM details |
./start vm list |
List all GraphDone VMs |
| Option | Description | Example |
|---|---|---|
--name |
VM name | --name my-dev |
--branch |
Git branch | --branch develop |
--cpus |
CPU cores | --cpus 8 |
--memory |
RAM | --memory 16G |
--disk |
Disk size | --disk 50G |
Create .env.vm from .env.vm.example:
cp .env.vm.example .env.vm
# Edit .env.vm with your settingsKey variables:
TAILSCALE_AUTH_KEY- Tailscale authenticationVM_BRANCH- Default Git branchVM_CPUS- Default CPU countVM_MEMORY- Default memoryVM_DISK- Default disk size
Need help? See docs/VM_SETUP.md or run ./start vm --help