Skip to content

Introduction

What the go.getarcane.app modules are and how they are organized.

The go.getarcane.app modules are a set of reusable Go modules for Docker tooling, root-confined filesystem access, streaming, and system probes. They live in the getarcaneapp/kit repository.

Application-specific concerns such as settings, persistence, and notifications are passed in through small interfaces, so the modules fit into any Go application.

Module Import path Use it for
kit go.getarcane.app/kit Shared helpers used by the other modules
acfs go.getarcane.app/acfs Filesystem access that can never escape a root directory
docker go.getarcane.app/docker Day-to-day Docker Engine API helpers
docker/compat go.getarcane.app/docker/compat Working against older daemons and Podman
docker/convert go.getarcane.app/docker/convert docker run → Compose conversion
builds go.getarcane.app/builds BuildKit builds via Docker or Depot
updater go.getarcane.app/updater Keeping containers on current images
streams go.getarcane.app/streams Live streams, event fan-out, log capture
sys/bytes go.getarcane.app/sys/bytes Parsing and printing byte sizes
sys/cgroup go.getarcane.app/sys/cgroup Container resource limits and identity
sys/crypto go.getarcane.app/sys/crypto Encrypting stored secrets

kit is the root module of the repository. Every other module is a nested module with its own go.mod:

  • Nested modules may import kit. kit never imports a nested module.
  • Code only moves into kit once it has a concrete contract that more than one module needs.
  • Each module is tagged independently, for example updater/v0.11.4 or sys/crypto/v0.3.0.