Gokrazy – Go Appliances

A minimalist operating system called Gokrazy aims to turn devices like Raspberry Pis into single‑purpose “appliances” by running an almost entirely Go-based userspace on top of the Linux kernel. Commenters compare it to unikernels, Talos Linux, LinuxKit, u-root, and Elixir’s Nerves, highlighting benefits such as a smaller attack surface, straightforward deployment, and strong memory safety relative to C. The main point of contention is whether Go’s garbage-collected runtime is suitable for low-memory or latency-sensitive environments, with several real-world examples suggesting it performs well on modest hardware when applications are written carefully.

Overall reaction to gokrazy

  • Strong interest in the idea of “Go appliances”: a minimal Linux kernel with a Go-only userspace for single-purpose devices.
  • Several commenters see it as an ideal fit for Raspberry Pi–class hardware and “the right way” to do Pi projects, especially when running just one application.
  • Some think binding the concept tightly to Go is a design mistake and would prefer a more language-agnostic approach.

Related and similar projects

  • Multiple comparisons to other minimal or specialized OS/userland approaches:
    • Talos Linux and Bottlerocket OS (Go-heavy or Go-based userspaces for servers/Kubernetes).
    • LinuxKit, u-root (Go userland / container-based minimal systems).
    • TinyGo and TamaGo (Go for microcontrollers or bare metal).
    • Unikernels (OSv, NanoVMs/OPS) and MirageOS, plus Android as a “Java userspace” analogy.
    • Elixir Nerves framework for embedded systems (noted for OTA and blue/green deploys).

Memory usage, GC, and “low-powered” devices

  • One side claims Go is poorly suited to low-memory/IoT targets, arguing:
    • Go’s GC needs “lots” of RAM or careful tuning (GOGC, GOMEMLIMIT, MADV_DONTNEED).
    • Performance degrades sharply under memory pressure.
  • Others strongly disagree, citing:
    • Many production Go services running comfortably within 50–128MB limits.
    • Multiple services and databases running on 512MB–4GB servers without GC issues.
    • Successful gokrazy usage on a Raspberry Pi Zero 2 W (512MB) for motion-detection camera workloads.
  • TinyGo is discussed as a better fit for true microcontrollers but is described as a “dialect” of Go with reduced language/runtime support.

Networking and performance

  • One commenter claims Go’s networking stack performs poorly over lossy, high-latency links.
  • Others challenge this, note that Go uses the OS networking stack, and report good real-world throughput (thousands to tens of thousands of RPS) under modest memory budgets.
  • Some report good performance even on older single-core Pis, though ARMv6 support details are contested.

Deployment model and security

  • Concern is raised about having a Go compiler on production devices.
  • Clarified that gokrazy builds images elsewhere (e.g., on a PC/CI) and deploys them; the target device does not contain the Go toolchain.
  • Compared to “lightweight Linux + SSH + Ansible,” gokrazy is seen as even more minimal, though it still relies on the Linux kernel.

Use cases and appeal

  • Strong appeal for “one-process machines” with tiny attack surface; some see this as the opposite of container-heavy setups.
  • Interest in using gokrazy for personal/home projects, servers, and appliances; some see execution and long-term maintenance as the hard part rather than the concept.