Dev Machines
Dev Machines are an opt-in self-hosted subsystem, included in releases since v0.1.13. Every machine has collector and egress services on an isolated network; it may include a shared developer/terminal container and browser, while agent containers are created on demand. Access is routed through an authenticated gateway. The subsystem is disabled by default.
A full environment per machine
When configured, the developer container runs code-server and a tmux-backed terminal that the Kuayle UI renders natively with xterm. An optional separate browser container provides Chrome over KasmVNC. No host ports are published; access goes through the Machine Gateway with one-time launch tickets.
- code-server IDE and native xterm terminal
- In-browser Chrome via KasmVNC
- Authenticated wildcard routing — no public ports
Agent providers
The developer image includes pinned Claude Code, OpenCode and Codex CLIs for direct interactive terminal use. From the machine dashboard, users can launch bounded autonomous runs in provider-specific containers, including an admin-configured custom CLI. Autonomous output is normalized into a common result model with a summary, changed files, commits, branch and pull-request URL.
- Claude Code, OpenCode, Codex and custom CLI providers
- Interactive built-in CLIs in the developer terminal
- Bounded autonomous provider runs from the dashboard
- Normalized run results with commits and PR links
- Scoped secrets delivered through tmpfs, redacted in logs
Issue worktrees and environments
Machines can start generic and attach issue worktrees when work begins. Repository and environment defaults resolve from the issue, then project, team and workspace. Owner/admins can snapshot a customized builder machine into an immutable local Development Environment image.
- Idempotent issue worktrees under /workspace/tasks/{issue-key}
- One repository affinity per machine
- Scoped defaults: issue → project → team → workspace
- Environment Builder snapshots as immutable local OCI images
Policy, sizes and lifecycle
Workspace policy controls concurrency, providers, repositories, maximum runtime and idle pause (default 240 minutes). A per-machine Keep running switch bypasses idle pause. Machines pause, stop and tear down as separate lifecycle operations recorded durably in PostgreSQL.
- Small 2 vCPU/4 GB, medium 4 vCPU/8 GB, large 8 vCPU/16 GB
- Idle pause with per-machine keep-running bypass
- Filesystem, shell, root-checkout Git, browser and agent activity events
- Disabled by default; requires a separate wildcard domain
- Not available in workspaces that use private teams