Presets & runners
How presets and runner images work, plus the bundled list and common env vars.
Overview
- Presets are default settings for projects: build/pre-deploy/start commands and default runner.
- Runners define the container images that projects run on, including the build and deploy commands.
How it works
- The registry catalog (
<DATA_DIR>/registry/catalog.json) defines the default runners, presets, and detection rules. - The overrides file (
<DATA)DIR>/registry/overrides.json) enables or disables specific runners/presets for your instance. - A project picks a preset (and optionally a runner override). You can always edit commands per project.
- At deploy time, /dev/push runs your build/pre-deploy/start commands inside the selected runner image.
Registry updates
/dev/push ships with a bundled registry (catalog + overrides) so new installs work offline. You can also pull remote registry updates from the devpushhq/registry repository via the admin registry refresh flow when you want the latest presets and runner metadata.
To customize the catalog or add your own runners/presets, see: Customize the registry catalog.
Bundled presets
These presets are available in the bundled catalog:
| Preset | Typical use |
|---|---|
python |
Python apps |
flask |
Flask apps |
django |
Django apps |
fastapi |
FastAPI apps |
nodejs |
Node.js apps |
bun |
Bun apps |
go |
Go apps |
php |
PHP apps |
laravel |
Laravel apps |
drupal |
Drupal apps |
Bundled runners
These runner images are in the bundled catalog:
| Runner | Runtime |
|---|---|
python-3.12 |
CPython 3.12 |
pypy-3.11 |
PyPy 3.11 |
node-20 |
Node.js 20 |
bun-1.3 |
Bun 1.3 |
go-1.25 |
Go 1.25 |
php-fpm-8.3 |
PHP 8.3 (FPM) |
php-fpm-node-8.3 |
PHP 8.3 (FPM) + Node |
frankenphp-8.3 |
PHP 8.3 (FrankenPHP) |
frankenphp-node-8.3 |
FrankenPHP + Node |
frankenphp-node-worker-8.3 |
FrankenPHP + Node (worker) |
Defaults (overrides)
By default, /dev/push enables a subset of presets and runners via the overrides file. These defaults can be changed in the admin registry settings.
Enabled by default (current bundle):
- Presets:
python,flask,django,fastapi,nodejs,php,laravel,drupal - Runners:
python-3.12,node-20,frankenphp-8.3,frankenphp-node-8.3,frankenphp-node-worker-8.3
Runner env vars
Runners receive your project environment variables. Some runners also read /dev/push‑specific env vars:
| Env var | Purpose | Default |
|---|---|---|
DEVPUSH_APP_ROOT |
Web root for PHP runners (FrankenPHP + PHP‑FPM) | /app/public |
Example (Drupal uses /app/web):
DEVPUSH_APP_ROOT=/app/web
Custom runners & presets
If you need different runtimes or detection rules, you can extend the registry catalog and overrides. See the guide: