ADR 0001 - Implementation language

Decisionstable
On this page

Status

Stable. The Go implementation is complete across all milestones.

Context

The tool must be a single static binary that runs on any distro, in scratch containers, and in agent sandboxes, with no runtime dependency. It is concurrency-heavy: multi-chroot log tailing, state polling, and TUI rendering are a goroutine-and-channel problem. It needs a small dependency surface and easy cross-compilation for a solo maintainer.

Decision

Implement in Go. Cobra provides the command framework, Bubble Tea provides the TUI, the standard library covers HTTP and gzip, and BurntSushi/toml handles the layered configuration file. GoReleaser handles release packaging.

A fallback to a Python-based stack (Textual plus the official client) is documented as a trigger if API-client parity turns out to be expensive, but is not the default.

Consequences

  • Portability and a single static binary are satisfied directly.
  • The concurrency model matches the domain.
  • The API client must be written (or generated from the served Swagger document), kept behind an interface for testability.