The Appwrite CLI is now written in Go
Appwrite has rewritten its CLI from TypeScript/Node to Go, shipping a single native binary with no runtime dependencies. Key improvements: startup time drops from 207.6 ms to 11.1 ms (up to 22.5× faster), installation shrinks from 330 npm packages (209 MB) to 2 packages (13 MB), and peak memory during push drops from 283.5 MB to 28 MB by streaming archives via io.SectionReader instead of buffering. The binary size goes from 66 MB (Bun) to 14 MB. All user-facing interfaces — flags, exit codes, appwrite.config.json schema, --json output, and install paths — remain unchanged. The post explains why Go was chosen over Rust (goroutines fit the parallel network workload, existing Go SDK, easy cross-compilation, lower contributor learning curve), and details the nine-phase project process including a Phase 0 go/no-go gate, running the existing 2,754-line TypeScript E2E test suite against the new binary, and a command-by-command diff that caught critical bugs like --enabled false sending true and missing code signatures on darwin/amd64.