Supported combination: platform 2026.10.1rc17 · tooling 2026.10.1rc17.
Reference

Server configuration

Commands, flags, TLS, storage, and lifecycle settings for pyplines-server.

For a complete deployment walkthrough, see Install the server. The server is configured through command-line flags and the two TLS environment variables below; it does not load a server YAML configuration file.

Commands

CommandPurpose
pyplines-server versionPrint build version and commit information
pyplines-server bootstrapCreate the first administrator in a new data directory
pyplines-server migrateOpen the data directory and apply database migrations, then exit
pyplines-server startStart embedded NATS, the coordinator, and the HTTPS API

--data PATH is a persistent flag available to the commands. Its default is ./.pyplines-server, relative to the process working directory. Use an absolute persistent path for a service.

Start flags

FlagDefaultMeaning
--data./.pyplines-serverPrivate state directory
--listen:8080HTTPS bind address; the default listens on all interfaces
--tls-certPYPLINES_TLS_CERT, otherwise emptyPEM server certificate/chain
--tls-keyPYPLINES_TLS_KEY, otherwise emptyPEM private key
--nats-listen:4222Embedded NATS TLS bind address
--nats-urltls://localhost:4222NATS URL advertised to runners

Explicit TLS flags override the corresponding environment variables. TLS certificate and key are required for startup even though the flag parser supplies empty defaults. There is no plain-HTTP server mode.

--nats-listen chooses where the server listens; --nats-url tells runners where to connect. Configure the latter for the actual runner network. The default localhost is unsuitable for runners on another host or in a separate container.

HTTPS and NATS use the same certificate and key. Their client-visible names must be covered by that certificate. A reverse proxy must preserve API behavior; runners require an HTTPS origin without a path prefix and reject registration redirects. NATS remains a separate TLS connection.

The current server embeds its broker and database. These flags do not support replacing NATS with an external broker, selecting PostgreSQL, or starting multiple server replicas against one data directory.

Bootstrap flags

FlagDefaultMeaning
--usernameadminInitial administrator username
--password-fileRequiredFile containing the initial password, at least 12 characters
--if-neededfalseCreate the administrator only if no users exist

The command removes trailing CR/LF from the password file. --if-needed does not reset an existing account or password. The file must still exist and be readable when invoking bootstrap. Run bootstrap with the same data path and filesystem identity as the service, while the service is stopped.

Persistent state

Path inside --dataContents
pyplines.db and SQLite sidecar filesPlatform records, revisions, access, and execution state
encryption.keyKey needed to decrypt protected records
logs/Retained filesystem log data
nats/Embedded JetStream storage
pyplines.db.lockExclusive process lock for the database

Run only one server against this directory. The service user needs read/write access to state and read access to TLS files. Back up the complete stopped-service directory with its ownership and permissions; see maintenance.

The server does not need access to a Docker socket. It does need registry network access to inspect Actions at deployment/preparation time. Registry configuration and read credentials are managed through the operator API/CLI, separately from these startup flags.

Health and shutdown

GET /health returns status and version when the HTTP handler can reach the database; it returns HTTP 503 when the database check fails. It is not a check of runner admission, registry connectivity, or Action readiness. Use installation verification for those.

The process handles SIGTERM and SIGINT and allows up to ten seconds for HTTP shutdown. Stop operational work and settle runner executions before stopping the server. Certificate files are loaded at startup; apply replacements through a controlled restart rather than assuming automatic reload.

For the exact flags of an installed binary:

Terminal
pyplines-server --help
pyplines-server start --help
pyplines-server bootstrap --help