Roadmap
ZTD is pre-v1. Phases 0, 1 and 2 are complete — all four backends are validated end to end and the Go CLI ships as an installable binary. Phase 3 is in progress.
Phase 0 — done
Dockerized Terraform + Taskfile. Backends kvm (local) and proxmox. Shared
cloud-init. Single interface via TARGET. Host needs only Docker (plus
libvirt/qemu for local).
Phase 1 — done
All three backends — kvm, proxmox, and ec2 — validated end-to-end
(./ztd test green on each).
ec2backend — the WAN reference, cattle in the cloud.- Ephemeral per-VM SSH keys;
ztd authsyncs the operator’s Claude login in. - Remote repo sync (
ztd mount/ztd fetch); all forge git is host-side — the guest holds no forge credentials. - Cattle run —
ztd run/ztd attach(tmux, subscription-billed, result branch, wall-clock + turn caps) and theztd cattleone-shot. ztd skills/ztd commandssync;.ztd/.ztd.tomlconfig and loader.- Minimal audit export (
ztd audit→ transcript + command log + manifest).
Phase 2 — done
The ztd Go CLI (Cobra) over the stable Terraform/Task engine.
- Every verb ported from the bash wrapper to Go, with the host-side orchestration
(config resolution, folder→name derivation, ephemeral-key lifecycle, secret
sourcing,
up/down/reset) now native. ztd status --watch— a live readiness dashboard (red→green as the guest boots), so the cloud-init wait afterupis legible.- A standalone installable binary. The Terraform root, the lima template,
cloud-init and the toolbox compose file are embedded in the binary and extracted
to a version-scoped cache, so a project directory needs nothing but its own
.ztd/— there is no source checkout to clone. .ztd/ztd.tomlas the sole config, replacingterraform.tfvars; the binary generates every dependency’s config from it.- A release pipeline. A tag publishes the version-pinned toolbox image, then the binaries, archives and checksums, then a Homebrew cask — in that order, because a binary derives its toolbox image tag from its own version. See Install.
- The generated CLI reference joins the docs site, rendered from the Cobra command tree so it cannot drift: CLI reference.
Still open from this phase: shipping the CLI itself as a container image, which is largely redundant now the binary is self-contained.
Phase 3 — in progress
vz(macOS local) backend vialima— done (validated end-to-end on Apple Silicon:TARGET=vz ./ztd check | up | ssh | status | test, guest Docker + Node + Claude Code, operator-owned live-share, port-threaded agent lifecycle). See the build plan and the vz how-to.- Egress allowlisting via a Technitium DNS resolver, plus network audit.
- Standalone audit sink (Vector → Loki / S3; Falco or Wazuh for runtime events).
- Auto-destroy / TTL lifecycle.
- More clouds: Hetzner, DigitalOcean, Vultr, and Verda (GPU).