Image
- Public on GitHub Container Registry. No login needed.
- Built for
linux/amd64andlinux/arm64. - Runs as a non-root user (UID
10001). - Exposes no port.
- There is no
latesttag. Pin a version, or a digest.
Verify the signature
Each release is signed with Sigstore cosign, keyless, from the GitHub Actions workflow that builds it:Environment variables
string
required
The database to serve, with a read-only account. Always required.Accepted schemes:
postgresql, postgres, mysql, mariadb. A driver suffix such as postgresql+asyncpg is accepted and ignored. The port defaults to 5432 for PostgreSQL and 3306 for MySQL and MariaDB. URL-encode special characters in the user name and password.The value never leaves the machine. It appears in no message and no log.string
The single-use token from the dashboard. Required on the first start only. Once enrolled, the agent ignores it.
string
Required on the first start only. Use
https://api.concatflow.com. Must be https://.string
default:"/data"
Where the agent stores its credentials. Mount a persistent volume here.
The data directory
After enrolling, the data directory holds two files, both readable by the agent’s user only (0600):
During enrollment, a third file,
agent.seed, holds the private key until enrollment completes. If enrollment is interrupted, the agent reuses it on the next start, with the same token.
Losing the volume means losing the enrollment. Revoke the old agent and enroll again with a new token.
Logs
The agent logs to standard output, one line per event:Exit codes
Stopping
OnSIGTERM, the agent stops taking new requests and gives running ones up to 30 seconds to finish. Docker only waits 10 seconds by default. Add --stop-timeout 30 to docker run to let long queries finish.