towbar.yml, then discovers app, Compose, and resource files under
.towbar/. Each file declares one workload. Branch mappings and credential
values stay in Towbar instead of Git.
Download the root example and
app example. Editor schemas are available for
the root, apps,
Compose, and resources.
Declare environments
The root file names the environments available to entity files. Enable previews only for environments that should accept eligible pull requests:towbar.yml
Declare an app
Common fields apply to every selected environment. Each entry underenvironments adds or overrides environment-specific values:
.towbar/apps/web.app.yml
id, name, secrets, preview, and resource type remain
at entity level and cannot be overridden.
An entity’s id remains stable across file moves and display-name changes.
Removing an entity or one of its environment entries archives that instance
after a successful sync. A failed sync preserves the last valid configuration
and saved secret values.
Deploy automatically
SetautoDeploy: true to deploy whenever a mapped-branch commit changes the
workload. Use autoDeploy.inputs to limit an app to relevant repository paths:
.towbar/apps/web.app.yml
Declare secret names
Commit the required key names, then enter their values in Towbar:.towbar/apps/web.app.yml
secrets.runtime. New keys sync as unset, retained keys
keep their values, and removed declarations delete their stored values for the
synced environment. A missing value blocks deployment rather than sync. See
Shared secrets for references and reveal controls.
Join a private network
Apps and resources can share a Docker network. Resource aliases default to the resource ID; an SSH tunnel binds only to server loopback:.towbar/resources/postgres.resource.yml
Enable previews
Enable previews intowbar.yml, then opt each app in with its base domain and
optional expiry:
.towbar/apps/web.app.yml
preview:<environment> and never fall back to persistent environment values.
Resources do not create previews. See Preview environments.
Add domains and TLS
Put domains in the environment that owns them. Keeptls common when all
environments use the same certificate mode:
.towbar/apps/web.app.yml
Persistent app storage
Declare Docker-managed named volumes undercontainer.volumes. A persistent
volume requires a recreate rollout because it has one writer:
.towbar/apps/files.app.yml
.towbar/apps/files.app.yml
previous-container imports the directory from the stopped previous container;
image initializes it from the new image. The choice applies only to a new
volume. A missing known volume blocks deployment instead of silently creating
empty storage.
Persistent storage remains on its server. Towbar blocks reassignment after an
app has storage history and does not back up or copy app volumes. Use storage or
infrastructure tooling appropriate for the server.
Schedule an application job
Each job runs a command from the deployed app image with the app’s runtime secrets, network, limits, and volumes:.towbar/apps/web.app.yml
jobs list; set jobs: [] to disable jobs in one environment. See
Scheduled jobs for execution and retry behavior.
Forward logs
Reference one or more configured log-forwarding integrations by name:.towbar/apps/web.app.yml
[] to disable forwarding in one
environment. Credentials stay in Towbar. See
Log forwarding for provider setup and delivery
limits.
