Skip to content

Configuration

Every app in Plitho is configured through a plitho.yml file committed to the root of your repository. On each git push, Plitho reads this file from the pushed commit.

Minimal Example

apps:
  - name: myapp
    runtime: node
    process:
      web:
        cmd: node server.js
        server_port: 3000

Full Reference

apps:
  - name: myapp.com              # required — matches the git remote name
    runtime: node                # node | python | static | shell
    runtime_version: "20"        # optional; specific runtime version
    auto_restart: true           # restart on deploy (default true)
    threads: 2                   # worker threads (python only)

    process:
      web:                       # HTTP-facing process (required)
        cmd: "node server.js"
        server_port: "3000"
        workers: 2
        enabled: true
      worker:                    # optional background process
        cmd: "node worker.js"
        workers: 1

    env:
      NODE_ENV: production
      DATABASE_URL: postgres://...

    scripts:
      release:
        - npm run build
      predeploy:
        - npm ci
      postdeploy:
        - echo "deployed"
      destroy:
        - echo "cleanup"

    nginx:
      include_file: /etc/nginx/snippets/myapp.conf

Note

Domain configuration (server_name, https_only) and resource limits (resources) are managed through the Plitho dashboard, not plitho.yml. See the Apps and Resources docs.

Sections

Section Description
Runtimes Node.js, Python, Static, and Shell — which to choose and how they work
Environment Variables Secrets and config vars for your app
Scripts Build steps, migrations, and cleanup hooks
Resources CPU and memory limits (set via dashboard)