hoophq/hoopsidecar, published in two flavours that
differ only in the rootfs underneath.
Choosing a flavour
Both are multi-architecture manifests covering
linux/amd64 and linux/arm64.
Pin an explicit version in production rather than using latest.
Every version, its changelog and its release date are published on the hoophq/hoop releases page. Image tags, chart versions and binary downloads all use the same version numbers.
How they differ
Both contain the
hoop binary and nothing else — no database clients, no shell
tooling. The relay speaks the wire protocols itself and never execs a client,
so it needs none of that.
Pick the default when you want to debug in place, -distroless when you want
zero OS-package CVEs. The Ubuntu flavour carries no suffix and latest points
at it, so the tag someone reaches for without thinking is the one they can get
a shell in.
What is set
Neither image needs a command or an argument to start the relay.
The config path is a default, not a requirement. Mount your config there and
the container needs no arguments and no extra environment:
Set
HOOP_SIDECAR_CONFIG to an empty string to run against a Control Plane. A path naming a file that does not exist is an error, not a reason to fall through to the handshake. The Helm chart does this for you.Running it with Docker Compose
The process needs no privileges, so run it as a non-root user. Expose the admin port to your scraper, never the data lanes:docker-compose.yml
Environment
The relay reads four variables, and the Helm chart sets all four:
Anything else a config references — an analyzer provider’s API key, for
instance — is an ordinary environment variable you add yourself.
No model on disk
Neither flavour carries an ML model, and neither needs one. 51 of the 54 entity types are pattern-and-checksum detections that run with no weights and no configuration at all: omit thepii section entirely and every one of them is
live — the section narrows that set rather than creating it.
The three statistical types (PERSON, LOCATION, NRP) are the exception.
They are refused by name when a config asks for them, and mounting weights
changes nothing, because the detector these images build does not include the
model that reads them.
Building your own
The Dockerfile isDockerfile.sidecar in hoophq/hoop. It builds from the published release tarball rather than from source, so it needs no Go toolchain and no credentials:
--target produces default, the same flavour the unsuffixed
tag and latest point at.
Both stages are a stock rootfs plus the hoop binary, and nothing published
under hoophq/hoopsidecar carries a bundled database clients, no third-party tooling.
A stage that installed any would put those layers into the repository permanently.
Preserve that if you add one.