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 map
Section titled “Module map”| 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 |
How the repository is laid out
Section titled “How the repository is laid out”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.kitnever imports a nested module. - Code only moves into
kitonce it has a concrete contract that more than one module needs. - Each module is tagged independently, for example
updater/v0.11.4orsys/crypto/v0.3.0.
Stability
Section titled “Stability”Next steps
Section titled “Next steps”InstallationToolchain requirements and adding a module to your project.