Reference

pushify.yaml

Declare how your app builds and runs next to the code. Anything set here wins over the dashboard on the next deploy — and it travels with the repository, so a "Deploy to Pushify" click or a teammate's fork gets the same setup.

Complete example

# pushify.yaml — lives at the root of your repository
framework: nextjs
install: pnpm install --frozen-lockfile
build: pnpm build
start: pnpm start
port: 3000

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

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

workers:
  - name: queue
    command: node worker.js
  • The file is read from the repository root on every deploy. Unknown keys are rejected so typos surface as a build error instead of silently doing nothing.
  • Every field is optional. Leave one out and the dashboard value (or auto-detection) applies.
  • Cron, volumes and workers are synced declaratively: what is in the file is what exists after the deploy.

Fields

framework

string

Skip auto-detection and force a build strategy: nextjs, react, vue, nuxt, svelte, astro, remix, nodejs, python, django, go, laravel, rails, static… If you have a Dockerfile, it still wins.

install

string

Dependency install command run before build (e.g. pnpm install --frozen-lockfile).

build

string

Build command. Its dependency layer is cached between deploys.

start

string

Process command for the web container.

output

string

Output directory for static sites (e.g. dist, out, build).

port

number

Port your process listens on (1–65535). Pushify routes HTTPS traffic to it.

cron[]

Up to 20 scheduled commands, each executed inside your app container.

name

string · required

Unique within the project. Shown in the Cron tab and run history.

schedule

string · required

5-field cron expression ("*/15 * * * *"). Validated at deploy.

command

string · required

Shell command run via docker exec in the running container.

timezone

string

IANA zone for the schedule (default UTC), e.g. Europe/Istanbul.

timeoutSeconds

number

5–3600. The run is killed past this. Default from the dashboard.

volumes[]

Up to 10 named volumes that survive deploys, restarts and rollbacks.

name

string · required

Lowercase letters, digits and dashes, max 32 chars. Unique within the project.

path

string · required

Absolute mount path inside the container (e.g. /app/uploads).

workers[]

Background processes started from the same image after each successful deploy — queues, schedulers, consumers.

name

string · required

Lowercase, dashes allowed, max 40 chars. Container becomes pushify-<project>-worker-<name>.

command

string · required

Command override for the worker container (e.g. node worker.js, celery -A app worker).