trustivan command. There is no client you install to talk to a
running deployment, and nothing on this page will help you scan an image from
your laptop.
That is worth stating first because most tools in this category ship exactly
such a client, and looking for one and not finding it reads as a gap rather
than a decision. The machine surface is
the HTTP API: it is the interface a pipeline
drives, it is versioned, and it is the one thing a client would wrap. Shipping a
wrapper as well would create a second surface to keep in step with the first,
with its own release cadence and its own installation problem, for no capability
the API does not already have.
What the repository does build is four server binaries. They are the operator’s
command line — the processes you run, supervise and upgrade — and this section
is their reference.
The four binaries
All four ship in one image, selected by entrypoint, so the migrations and
the sweep are guaranteed to come from the same build as the API that reads what
they wrote.
reencrypt has no page of its own because it is not a process you supervise: it
is run once, deliberately, after a new encryption key has been added to the
keyring, and it rewrites every stored ciphertext under the new key version.
Rotating the key without running it leaves data readable only under a key you
have retired — see
Rotating credentials.
api and worker are separate processes rather than one binary with a flag,
and the split is load-bearing. Scanning is the part that handles untrusted
input, holds a large cache, and takes minutes; serving the API is the part that
must stay responsive. Running them together means one scan of a large image
degrades every request, and it means you cannot scale the two independently —
which is the whole reason
the default compose file separates them.
They take no flags
api and worker accept no command-line arguments at all. Passing some is not
an error; they are ignored.
Everything is configured through the process environment, which is a deliberate
single surface rather than an omission — see
Configuration overview for why, and
Environment variables for the complete list.
The practical consequence is that a flag you might reach for has an environment
variable instead:
One consequence is worth planning for: changing any setting means restarting the
process. There is no reload signal, and no admin endpoint that writes
configuration.
Where the scanner’s own command line went
TRUSTIVAN embeds its scanning engine as a Go library, in a single adapter package. It does not shell out to a scanner binary, so there is no engine command line to pass flags through to, and no-- escape hatch that forwards arguments to it.
This matters more than it sounds. It means the scanner’s configuration surface
is exactly the set of settings TRUSTIVAN’s own configuration exposes, and an
option that is not in Scanning and concurrency
is not reachable at all. If you have used the upstream scanner directly and are
looking for a familiar flag, that is where to check whether TRUSTIVAN exposes the
equivalent — and Upstream and attribution explains
what the relationship between the two projects is and is not.
