Boat capability coverage
Raft is an independent open-source alternative to boat.dev. ✅ supported · ❌ unavailable through the compared product · ❓ not established by Boat's documentation.
A shared checkmark means both offer the workflow, not identical behavior or isolation.
Tests verify Raft behavior, not hosted Boat infrastructure. See verification for evidence.
| Capability | Boat | Raft | Raft limits and differences |
|---|---|---|---|
| Self-hosted runtime on operator hardware | ❌ | ✅ | Boat is a hosted service. Raft runs Incus on hosts controlled by the operator |
| Native ARM64 workspaces | ❌ | ✅ | Boat documents all machine sizes as x86_64; Raft also supports native ARM64 |
| Create/list/inspect/delete | ✅ | ✅ | Qualified handles, explicit locations, native Incus metadata. Single operator; no organization/account API |
| Stop/resume | ✅ | ✅ | Stops processes, retains disk; resume requires TTL. Shared-kernel containers, not Boat VMs |
| Running lifetime | ✅ | ✅ | Host-enforced TTL; extend resets deadline without restart. Long locked transactions delay expiry checks |
| Sizing | ✅ | ✅ | Create-time 1/2 CPUs and 1/2/4 GiB choices. No resizing on resume/fork; Boat offers larger sizes |
| Host capacity recommendations | ❌ | ✅ | Raft reports host CPU/RAM budgets, active allocations, saved slots and disk headroom. Boat limits describe hosted plan credits and concurrency, not operator-host sizing. Raft enforces four saved boxes per host |
| Hosted credit and start-rate limits | ✅ | ❌ | Boat reports plan credits, concurrency and start rates. Raft has no billing service |
| Resize on resume/fork | ✅ | ❌ | Native admin configuration is outside the Raft CLI contract |
| Usage | ✅ | ✅ | Cgroup memory, CPU counters, shared pool space. No billing meter or per-box disk accounting |
| Root terminal | ✅ | ✅ | PTY over host SSH and native Incus exec. No directly exposed guest SSH endpoint |
| Synchronous exec | ✅ | ✅ | Literal argv and preserved exit code. Shell syntax requires an explicit shell |
| Detached exec | ✅ | ✅ | Guest systemd unit, status, logs, cancellation. No process checkpoint or restart after stop |
| File transfer | ✅ | ✅ | Binary file upload/download. No recursive SCP interface |
| Named snapshots | ✅ | ✅ | Create/list/restore with stopped source, checked inside the lifecycle lock. No running snapshot consistency guarantee |
| Deploy/delete named snapshots | ✅ | ❌ | No new --from or snapshot deletion command; destroy removes the box and its snapshots |
| Fork | ✅ | ✅ | Same-host stopped filesystem copy. Copies filesystem secrets; no cross-host fork command |
| Portable recovery | ❓ | ✅ | Raft exports/imports whole native instances including snapshots. Boat documents snapshot file downloads; importing a portable whole-instance archive is not established. Raft backup storage is manual; no scheduled off-host uploads |
| Docker | ✅ | ✅ | Guest daemon with real image builds. Container nesting uses host kernel |
| Native development images | ✅ | ✅ | Boat: Ubuntu x86_64 machines. Raft: published native Debian ARM64/AMD64 images with pinned fingerprints and clean-archive inspection |
| Development tools | ✅ | ✅ | 31 real developer-user checks. Debian/Chromium, not identical Ubuntu/Chrome versions; VS Code, Ghostty and GitHub CLI are not bundled; version-manager coverage differs |
| Private forward | ✅ | ✅ | Foreground authenticated SSH tunnel to controller loopback. Guest service must listen on its managed NIC; no reverse forwarding |
| Public workspace hosting | ✅ | ❌ | Missing. Deferred; requires a defined ingress and access policy |
| Desktop | ✅ | ✅ | On-demand noVNC, framebuffer, pointer and browser transport checks. See verification for desktop interaction coverage |
| Browser-only streaming | ✅ | ❌ | Missing. Full desktop only; browser confinement deferred |
| Network separation | ❓ | ✅ | Raft tests host/private/metadata and IPv4/IPv6 peer restrictions with startup-gated filtering. Boat's equivalent filtering policy is not established; its VM boundary is listed separately |
| Bounded host storage pool | ❓ | ✅ | Raft configures a shared 60 GiB Btrfs host pool and rejects size drift. Boat does not document an operator-managed host storage pool |
| Strict per-box disk allocation | ✅ | ❌ | Nested subvolumes prevent claiming strict quotas; no independent Boat-sized disks |
| VM kernel isolation | ✅ | ❌ | VM deployment not implemented |
| Nested KVM / Android emulator acceleration | ✅ | ❌ | Boat documents KVM on standard hosts; overflow cloud VMs lack it. Raft has no guest KVM device or VM mode |
| External guest SSH | ✅ | ❌ | Boat supports a public IP or an SSH endpoint; public IPv4 is not guaranteed. Raft uses host-mediated private access |
| Named environments and secrets | ✅ | ❌ | Files/configuration can be prepared explicitly. No environment registry or secret-injection service |
| Organizations | ✅ | ❌ | Boat shares billing and plan limits; resources stay with their creator. Raft is single-operator |
| Lifecycle webhooks | ✅ | ❌ | Missing. Deferred until an external consumer needs them |
| Automatic deletion/retention | ✅ | ❌ | Explicit destroy; expiry retains disk. No delete-on-stop mode |
| Dashboard | ✅ | ❌ | Missing. CLI and private desktop cover current workflow |
| SDK/API keys | ✅ | ❌ | Host SSH authentication. No remote Raft service API |
| CLI-wide JSON mode | ✅ | ❌ | Boat supports JSON/JSONL for most commands; argument errors may use stderr. Raft provides JSON for list/info/usage/limits only |
| Snapshot file browsing/download | ✅ | ❌ | Full native archives only; no Raft snapshot tree or selected-file interface |
| CLI self-update/completions | ✅ | ❌ | Standard Python package installation/help. No update channel or dynamic shell completions |
| Managed agents | ✅ | ❌ | Not implemented. No prompt/events/steer/interrupt/conversation API |
Reference check
Checked on 2026-10-06 against Boat's CLI reference, machine capabilities, SSH/file access, snapshots, and billing and limits.
Raft command parser and test suites were verified at commit 27b08c1. Both native architectures and disposable AMD64 host tests passed in run 37496577945. This audit compares documented features, not a live differential test against Boat. Managed agent workflows remain out of scope.
Key workflow gaps are recursive file transfers and resizing on resume/fork. Public hosting, VM isolation, organization sharing, and remote APIs require additional infrastructure. noVNC tests do not establish parity for Boat frame rate, browser confinement or application set.