Reference

pushify.yaml

Declare how your app builds and runs, next to the code. The file wins over dashboard settings on every deploy.

pushify.yamlevery key, in one file
# pushify.yaml — at the root of your repository
framework: nextjs
install: pnpm install --frozen-lockfile
build: pnpm build
start: pnpm start
port: 3000
# output: dist        # static sites only

cron:
  - name: nightly-report
    schedule: "0 3 * * *"
    timezone: Europe/Berlin
    command: node scripts/report.js
    timeoutSeconds: 600

volumes:
  - name: uploads
    path: /app/uploads

workers:
  - name: queue
    command: node worker.js

How it is read

Four rules

Where it lives

pushify.yaml or pushify.yml, in the project’s root directory or the repo root.

Every field is optional

Leave one out and the dashboard value applies. Secrets stay in the dashboard.

Invalid files are skipped

An unknown key or bad value logs a warning; the deploy continues without the file.

Added, never removed

Production deploys create or update cron, volumes and workers by name. Nothing is deleted; new ones past the limit are skipped.

Fields

Every key the file accepts

<root>

Build and run

Top-level keys. Commands must fit on one line.

frameworkstring
Skip auto-detection and pin a build strategy: nextjs, react, vue, nuxt, svelte, astro, remix, nodejs, python, django, go, laravel, rails, static… An unknown value falls back to auto-detection. A Dockerfile in the repo still wins.
installstring
Dependency install command run before build (e.g. pnpm install --frozen-lockfile).
buildstring
Build command. Its dependency layer is cached between deploys.
startstring
Process command for the web container.
outputstring
Output directory for static sites, relative to the repo (e.g. dist, out, build).
portnumber
Port your process listens on (1–65535). Pushify routes HTTPS traffic to it.

cron[]

Scheduled commands

Up to 10 per project, counting those added in the dashboard. Each runs inside your app container.

namestring · required
Unique within the project. Shown in the Cron tab and run history.
schedulestring · required
5-field cron expression ("*/15 * * * *"). Validated at deploy.
commandstring · required
Shell command run via docker exec in the running container.
timezonestring
IANA zone for the schedule (default UTC), e.g. Europe/Berlin.
timeoutSecondsnumber
10–600. The run is killed past this. New jobs default to 120.

volumes[]

Persistent volumes

Up to 5 per project, counting those added in the dashboard. They survive deploys, restarts and rollbacks.

namestring · required
Lowercase letters, digits and dashes, starting with a letter or digit; max 31 chars. Unique within the project.
pathstring · required
Absolute mount path inside the container (e.g. /app/uploads). System paths such as /etc or /proc are refused.

workers[]

Background workers

Up to 5 per project, counting those added in the dashboard. Started from the same image after each successful deploy.

namestring · required
1–40 lowercase letters, digits or dashes, no dash at either end. Container becomes pushify-<project>-worker-<name>.
commandstring · required
Command override for the worker container (e.g. node worker.js, celery -A app worker).

See also

Related pages

Deploy to Pushify button

A one-click deploy link for your README.

Zero-downtime deploys

What happens between the build and the traffic switch.

API documentation

The HTTP API behind the dashboard and the CLI.