~/docs

Container settings

Environment variables and files read by shellz run inside containers.

↗ .mdmcp

shellz run needs only the fleet token. Everything else is optional.

Fleet token

SourceNotes
/run/secrets/shellz-fleet-tokenRecommended. A file containing the szf_ token.
SHELLZ_FLEET_TOKENUsed if set, before the file. Visible to anyone who can exec into the container; shellz removes it from your app's and sessions' environments only.

Metadata

These label members in the dashboard. shellz detects most of them on its own.

VariableDefaultMeaning
SHELLZ_FLEET_PLATFORMDetectedkubernetes, ecs, cloudrun, docker, devcontainer or other
SHELLZ_POD_NAMEPOD_NAME, then the hostnameKubernetes pod name
SHELLZ_POD_NAMESPACEPOD_NAMESPACE, then the service account's namespaceKubernetes namespace
SHELLZ_NODE_NAMENODE_NAMEKubernetes node
SHELLZ_CONTAINER_NAMEThe hostname (ECS: from task metadata)Container name on Docker, ECS and other platforms
SHELLZ_IMAGEEmpty (ECS: from task metadata)Image reference to show

Platform detection, in order: KUBERNETES_SERVICE_HOST means Kubernetes, ECS_CONTAINER_METADATA_URI_V4 means ECS, K_SERVICE means Cloud Run, REMOTE_CONTAINERS or CODESPACES means a dev container, and /.dockerenv means Docker.

Behaviour

VariableDefaultMeaning
SHELLZ_DRAIN_SECONDS20How long to wait for your app to exit after a stop signal before ending remaining processes and uploading the rest of the recordings. Keep the platform's stop timeout about 10 seconds longer.

Set by shellz

Inside a recorded session, shellz sets SHELLZ_SESSION to the session ID. Don't set it yourself.

Files

PathContents
/usr/local/bin/shellzThe shellz binary
/run/shellz/broker.sockThe recorder socket (/tmp/shellz/ if /run isn't writable)
/run/shellz/status.jsonCurrent status: enrollment, fleet, sessions, upload state

The member's signing key lives only in memory; nothing secret is written to the container's filesystem.

Network

Outbound HTTPS to api.shellz.dev and ingest.shellz.dev. Nothing listens for inbound connections.