This guide walks you through installing VXD and running your first initialization.
For deeper training including how to use VXD to ship marketing sites, campaign tools and full product experiences as easily as core software features, see docs/training/README.md and the dedicated product-marketing-made-easy guide.
For a quick architectural picture, see the rendered diagrams under docs/diagrams/:
- Architecture overview — services and event flow
- Pipeline flow — requirement → stories → merge
- Escalation tiers — 5-tier escalation chain
- Package dependencies — Go package DAG
- Sequence diagrams — dispatch, escalation, merge, self-improve, autoresearch
Before installing VXD, ensure you have the following tools available:
| Tool | Purpose | Install |
|---|---|---|
| Go 1.23+ | Build and install VXD | go.dev/dl |
| tmux | Agent session management | brew install tmux / apt install tmux |
| GitHub CLI (gh) | PR creation and auto-merge | brew install gh / cli.github.com |
| SQLite3 | State projection storage | Usually pre-installed on macOS/Linux |
You also need at least one AI runtime CLI installed:
| Runtime | Install | Models |
|---|---|---|
| Claude Code | npm install -g @anthropic-ai/claude-code |
Opus 4, Sonnet 4, Haiku 4 |
| Codex | npm install -g @openai/codex |
o3, o4-mini |
| Gemini CLI | npm install -g @google/gemini-cli |
Gemini 2.5 Pro, Flash |
VXD uses two authentication paths:
1. Spawned agents (Claude Code, Codex, Gemini CLI) — authenticate via their own built-in sessions. For Claude Code, this means your existing subscription (Max/Pro) logged in via claude login. No API key needed — agents run at no additional cost beyond your subscription.
2. VXD's internal operations (planning, code review, QA) — use API keys for direct LLM calls. These are lightweight (one call per story per stage), so API usage is minimal.
# Authenticate Claude Code CLI (uses your Max/Pro subscription)
claude login
# API key for VXD's internal planner/reviewer/QA calls
export ANTHROPIC_API_KEY="sk-ant-..."
# For OpenAI models (Codex runtime, or if using OpenAI for planner)
export OPENAI_API_KEY="sk-..."
# For Google AI Studio (free tier — used by default for Junior/Intermediate/Supervisor)
export GOOGLE_AI_API_KEY="your-key-here"
# For GitHub CLI (needed for PR creation)
gh auth loginCost note: The ANTHROPIC_API_KEY is only used for VXD's internal operations (a few API calls per story). The spawned coding agents — which do the heavy work — use your Claude Code subscription at no extra cost. If you only use OpenAI for internal operations, you don't need ANTHROPIC_API_KEY at all.
Gemma 4 default: VXD uses Google AI Studio's free tier for execution roles (Junior, Intermediate, Supervisor) by default. Get a free API key from Google AI Studio. If no
GOOGLE_AI_API_KEYis set, configure these roles to useanthropicoropenaiinvxd.yaml. See the Model Selection Guide for details.
VXD supports MemPalace for storing and retrieving institutional knowledge — decisions, debugging insights, architectural patterns — via semantic search. Completely local, zero API cost.
# Install
pip3 install mempalace
# Initialize and index the VXD codebase
python3 -m mempalace init /path/to/vortex-dispatch
python3 -m mempalace mine /path/to/vortex-dispatch
# Search your project's memory
python3 -m mempalace search "why did we choose event sourcing"
# Check what's indexed
python3 -m mempalace statusThe self-improvement engine (vxd-improve) automatically re-mines the codebase after each run to keep the palace current.
By default, go install places binaries in ~/go/bin/. You can also build to ~/.local/bin/ if that is where your system resolves binaries. Either way, ensure the target directory is on your PATH.
1. Create the install directory:
mkdir -p "$(go env GOPATH)/bin"2. Add it to your PATH by appending this line to ~/.zshrc (or ~/.bash_profile for Bash):
echo 'export PATH="$HOME/go/bin:$PATH"' >> ~/.zshrc3. Reload your shell:
source ~/.zshrc4. Verify the directory is on your PATH:
echo $PATH | tr ':' '\n' | grep go/bin
# Should show: /Users/<you>/go/bin (macOS) or /home/<you>/go/bin (Linux)If you prefer native Windows development without WSL, see the full Windows Setup (WSL) section below. For a quick PowerShell PATH setup:
# Add Go's bin directory to the current user's PATH
$gobin = Join-Path $env:USERPROFILE "go\bin"
[Environment]::SetEnvironmentVariable("PATH", "$gobin;$([Environment]::GetEnvironmentVariable('PATH', 'User'))", "User")
# Reload in this session
$env:PATH = "$gobin;$env:PATH"Important: VXD requires tmux for agent session management, which is only available on Unix. Windows users must use WSL 2 for the full pipeline. Native Windows works for
vxd status,vxd events, andvxd dashboard --web(read-only commands) but not forvxd reqorvxd resumewhich spawn tmux sessions.
git clone https://github.com/tzone85/vortex-dispatch.git
cd vortex-dispatch
make build && make installNote: This only works if the repository is public or you have configured
GOPRIVATE. See Private Repos below.
go install github.com/tzone85/vortex-dispatch/cmd/vxd@latestvxd --helpYou should see the full command list: init, req, status, resume, agents, escalations, gc, config, events, dashboard. The dashboard command accepts --web and --port flags for the browser-based dashboard.
If you see zsh: command not found: vxd, go back to the PATH setup section.
If the repository is private, go install won't work through the public Go module proxy. Either build from source (recommended), or configure Go for private repos:
# Tell Go to bypass the public proxy for your repos
echo 'export GOPRIVATE=github.com/tzone85/*' >> ~/.zshrc
source ~/.zshrc
# Ensure git can authenticate via HTTPS
gh auth setup-gitOnce VXD is installed, you can use it in any git repository. You do not need to be inside the vortex-dispatch source directory.
mkdir ~/my-project
cd ~/my-project
git initvxd initThis creates the global state directory and generates a vxd.yaml config file in your project root with sensible defaults:
~/.vxd/
events.jsonl # Append-only event log
vxd.db # SQLite projection store
Customize vxd.yaml as needed — see Configuration for all available options.
vxd config validateIf everything is configured correctly, you'll see a success message. Common issues:
| Error | Fix |
|---|---|
command not found: vxd |
Complete the PATH setup |
tmux not found |
Install tmux: brew install tmux |
gh not found |
Install GitHub CLI and run gh auth login |
config not found |
Run vxd init in your project directory to generate vxd.yaml |
ANTHROPIC_API_KEY not set |
Only needed for VXD's internal operations (planner, reviewer, QA). Export it in your shell profile. Spawned agents use your Claude subscription instead. |
vxd req "Build a REST API for user management with CRUD endpoints"
vxd status
vxd dashboard # single-pane TUI (j/k scroll stories, w open web, q quit)
vxd dashboard --web # browser-based dashboard at localhost:8787If you want to generate the animated demo GIF, you'll need VHS along with its dependencies ffmpeg and ttyd. On macOS:
brew install vhs ffmpeg ttyd
vhs docs/demo.tapeThis produces docs/demo.gif.
VXD uses tmux for agent session management, which is a Unix-only tool. Windows users must run VXD inside WSL 2 (Windows Subsystem for Linux).
Open PowerShell as Administrator and run:
wsl --install -d UbuntuRestart your machine when prompted. After reboot, the Ubuntu terminal opens automatically — create your Unix username and password.
Open your WSL terminal (search "Ubuntu" in Start menu) and install all dependencies:
# System tools
sudo apt update && sudo apt install -y tmux sqlite3 git curl build-essential
# Go (check https://go.dev/dl/ for latest version)
wget https://go.dev/dl/go1.24.4.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.24.4.linux-amd64.tar.gz
echo 'export PATH="/usr/local/go/bin:$HOME/go/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
# GitHub CLI
(type -p wget >/dev/null || sudo apt install wget -y) \
&& sudo mkdir -p -m 755 /etc/apt/keyrings \
&& out=$(mktemp) && wget -nv -O$out https://cli.github.com/packages/githubcli-archive-keyring.gpg \
&& cat $out | sudo tee /etc/apt/keyrings/githubcli-archive-keyring.gpg > /dev/null \
&& sudo chmod go+r /etc/apt/keyrings/githubcli-archive-keyring.gpg \
&& echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null \
&& sudo apt update \
&& sudo apt install gh -y
# Node.js (for Claude Code CLI)
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt install -y nodejs
# Claude Code CLI
npm install -g @anthropic-ai/claude-codeclaude login # Claude Code subscription (Max/Pro)
gh auth login # GitHub CLI
export ANTHROPIC_API_KEY="sk-ant-..." # For VXD internal LLM callsAdd the API key export to ~/.bashrc so it persists across sessions:
echo 'export ANTHROPIC_API_KEY="sk-ant-..."' >> ~/.bashrcgit clone https://github.com/tzone85/vortex-dispatch.git
cd vortex-dispatch
make build && make install
vxd --help # Verify installationAll VXD commands run inside WSL. Navigate to your project directory:
# Access your Windows files from WSL
cd /mnt/c/Users/<YourName>/Projects/my-app
# Or work in the WSL filesystem (faster I/O)
mkdir -p ~/projects/my-app && cd ~/projects/my-app
git init
vxd init
vxd req "Build a REST API for user management"
vxd dashboardvxd dashboard --web starts an HTTP server inside WSL. Your Windows browser can access it at the same localhost URL:
vxd dashboard --web --port 8787
# Open http://localhost:8787 in your Windows browserWSL 2 automatically forwards localhost ports to Windows, so no extra configuration is needed.
| Scenario | Solution |
|---|---|
Slow file I/O on /mnt/c/ |
Work in the WSL filesystem (~/projects/) instead of the Windows mount. Git operations are 3-10x faster. |
| tmux not found | Run sudo apt install tmux inside WSL |
| Browser doesn't open automatically | Copy the URL from the terminal and paste it into your Windows browser |
| VS Code integration | Install the WSL extension, then code . from WSL opens VS Code connected to your WSL filesystem |
| Git credential sharing | Run git config --global credential.helper "/mnt/c/Program\ Files/Git/mingw64/bin/git-credential-manager.exe" to share Windows Git credentials with WSL |
| Windows Terminal (recommended) | Use Windows Terminal for better multi-tab WSL sessions, proper color support, and split panes for monitoring tmux sessions alongside VXD output |
| Environment variables not persisting | Add export lines to ~/.bashrc inside WSL (not PowerShell). WSL does not inherit Windows environment variables unless configured via /etc/wsl.conf |
| WSL memory limit | VXD + multiple AI agents can use significant memory. If WSL runs out of memory, create %UserProfile%\.wslconfig with [wsl2]\nmemory=8GB (adjust to your system) |
| Accessing WSL files from Windows | Open File Explorer and navigate to \\wsl$\Ubuntu\home\<you>\projects\ to browse WSL filesystem files from Windows |
| Problem | Cause | Solution |
|---|---|---|
vxd: command not found |
~/go/bin not in PATH |
Complete the PATH setup section |
no LLM available |
No API key and no Claude CLI | Set ANTHROPIC_API_KEY or install Claude Code CLI (npm install -g @anthropic-ai/claude-code) |
tmux not found |
tmux not installed | Install: brew install tmux (macOS) or sudo apt install tmux (Ubuntu/WSL) |
gh not found |
GitHub CLI not installed | Install: brew install gh (macOS) or see cli.github.com |
repository has no commits |
Empty git repo | Run git add . && git commit -m "initial commit" before vxd resume |
planning failed: prompt too large |
Requirement too long for CLI mode | Set ANTHROPIC_API_KEY for API-based planning, or split the requirement |
| Agent stuck in permission prompt | Runtime permission denied | Use --godmode flag or set planning.godmode: true in vxd.yaml |
config not found |
Missing vxd.yaml | Run vxd init in your project directory |
| Agent sessions invisible | Wrong tmux server | Run tmux list-sessions to verify sessions exist |
| Merge fails with conflicts | Parallel agents touched same files | VXD uses LLM-powered conflict resolution; if it fails repeatedly, try reducing parallel stories |
database is locked (SQLite) |
Concurrent writes during pipeline | Fixed in latest version (WAL mode enabled). If upgrading, delete ~/.vxd/vxd.db and replay events |
WSL: localhost not reachable from Windows |
WSL 2 networking issue | Run wsl --shutdown from PowerShell and restart WSL. Alternatively, check ip addr show eth0 in WSL and use that IP |
WSL: npm: command not found |
Node.js not installed in WSL | Install Node.js inside WSL (not Windows Node.js): curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash - && sudo apt install -y nodejs |
| WSL: file permissions wrong | NTFS mount permissions | Add to /etc/wsl.conf: [automount]\noptions = "metadata" then restart WSL |
Run this checklist before your first requirement:
# 1. Check VXD is installed
vxd --help
# 2. Check configuration is valid
vxd config validate
# 3. Check required tools
which tmux && which gh && which git
# 4. Check at least one AI runtime
which claude || which codex || which gemini
# 5. Check GitHub CLI auth
gh auth status
# 6. Check repo has at least one commit
git log --oneline -1- Events log:
vxd events --limit 20shows what happened - Agent sessions:
tmux list-sessionsshows active agent sessions - Agent output:
tmux capture-pane -t <session-name> -p | tail -30shows what an agent is doing - Config check:
vxd config showprints the active configuration
Complete setup for a fresh macOS machine in ~15 minutes.
# Homebrew (if not installed)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Core tools
brew install go tmux gh python3
npm install -g @anthropic-ai/claude-code
# PATH setup
mkdir -p ~/.local/bin
echo 'export PATH="$HOME/.local/bin:$HOME/go/bin:$PATH"' >> ~/.zshrc
source ~/.zshrcgit clone https://github.com/tzone85/vortex-dispatch.git
cd vortex-dispatch
go build -o ~/.local/bin/vxd ./cmd/vxd
go build -o ~/.local/bin/vxd-improve ./cmd/vxd-improve# Claude Code (uses your Max subscription — no API costs for agents)
claude login
# GitHub CLI (for PR creation)
gh auth login
# API keys — add these to ~/.zshrc
cat >> ~/.zshrc << 'EOF'
export GOOGLE_AI_API_KEY="your-google-ai-key"
export FIRECRAWL_API_KEY="your-firecrawl-key"
export RESEND_API_KEY="your-resend-key"
EOF
source ~/.zshrccd vortex-dispatch
vxd init# Create log directory
mkdir -p ~/.vxd/self-improve
# Install the launchd schedule (daily at 6am)
cat > ~/Library/LaunchAgents/com.vxd.self-improve.plist << 'PLISTEOF'
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.vxd.self-improve</string>
<key>ProgramArguments</key>
<array>
<string>~/.local/bin/vxd-improve</string>
</array>
<key>WorkingDirectory</key>
<string>~/Sites/misc/vortex-dispatch</string>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key><integer>6</integer>
<key>Minute</key><integer>0</integer>
</dict>
<key>StandardOutPath</key>
<string>~/.vxd/self-improve/launchd.log</string>
<key>StandardErrorPath</key>
<string>~/.vxd/self-improve/launchd.log</string>
<key>EnvironmentVariables</key>
<dict>
<key>PATH</key>
<string>~/.local/bin:~/go/bin:/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin</string>
<key>HOME</key>
<string>~</string>
</dict>
</dict>
</plist>
PLISTEOF
# IMPORTANT: Edit the plist and replace ~ with your actual home directory path
# e.g., /Users/yourusername
sed -i '' "s|~|$HOME|g" ~/Library/LaunchAgents/com.vxd.self-improve.plist
# Load the schedule
launchctl load ~/Library/LaunchAgents/com.vxd.self-improve.plist
# Test it works
vxd-improve --dry-runpip3 install mempalace
cd vortex-dispatch
# Initialize (accept defaults at each prompt by pressing Enter)
python3 -m mempalace init .
# Index the codebase
python3 -m mempalace mine .
# Verify
python3 -m mempalace search "event sourcing"vxd --help # CLI works
vxd memory --web # Timeline + findings dashboard opens in browser
vxd-improve --dry-run # Self-improvement engine runs
python3 -m mempalace status # MemPalace indexed
launchctl list | grep vxd # Daily schedule active| Schedule | What | Log |
|---|---|---|
| Daily 6am | vxd-improve — research, analyze, implement, email, re-mine MemPalace |
~/.vxd/self-improve/launchd.log |
Reports are sent to the address in $VXD_NOTIFY_EMAIL (skipped when unset).
You're ready to explore the full pipeline. Head to the Tutorial for a detailed walkthrough.