Skip to content

Apps

Manage your deployed applications — start, stop, reload, scale, and monitor.

Apps List

The Apps page shows all your deployed applications.

Apps list

Column Description
Name App name (matches plitho.yml name)
Status RUNNING, STOPPED, or DEPLOYING
Runtime node, python, static, or shell
Port The port the app listens on
Revision Git commit hash (first 7 chars)

Creating an App

  1. Go to AppsNEW APP
  2. Enter a name for your app
  3. Click CREATE APP

Create app

This creates a git remote. Add it to your repo:

git remote add plitho ssh://plitho@your-server:2222/myappname

App Detail

Click Manage on any app to see its detail page.

App detail

Tabs

Tab What's there
Overview App status, actions, process info
Domain Custom domains and SSL
Resources CPU and memory limits
Environment Environment variables
Logs Real-time log streaming
Deployments Deployment history
Metrics CPU and memory usage charts
Danger Zone Delete app

Actions

Action What it does
Stop Stops the app process
Start Starts or redeploys the app
Reload Restarts the app process without a full redeploy

How Processes Work

Each app can have multiple process types. The most common is web (HTTP-facing), but you can also run worker processes for background tasks.

Web Process

The web process is your HTTP server. It receives traffic from nginx.

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

Key details:

  • Only the web process gets a port assigned
  • nginx proxies traffic to this port
  • If no server_port is specified, Plitho auto-assigns one from 20000-30000
  • The port is stored and reused across deploys

Worker Process

Worker processes run background tasks. They don't receive HTTP traffic.

apps:
  - name: myapp
    process:
      web:
        cmd: node server.js
        server_port: 3000
      worker:
        cmd: node worker.js
        workers: 2

Key details:

  • Workers don't get a port
  • They run the same command multiple times if workers > 1
  • Useful for job queues, cron workers, background processing

Cron Process

Cron processes run on a schedule. The cmd is a cron expression followed by the command.

apps:
  - name: myapp
    process:
      web:
        cmd: node server.js
        server_port: 3000
      cron:
        cmd: "0 * * * * node cleanup.js"

Key details:

  • Only one cron worker is allowed (workers is always 1)
  • The cmd must be a valid cron expression followed by the command
  • Format: minute hour day-of-month month day-of-week command

Disabling Processes

You can disable specific processes:

apps:
  - name: myapp
    process:
      web:
        cmd: node server.js
        server_port: 3000
      worker:
        cmd: node worker.js
        enabled: false

Scaling

Scale the number of workers for a process:

ssh -p 2222 plitho@your-server scale myapp web=4

Or via the API:

curl -X POST https://your-server/api/apps/myapp/scale?web=4

Key details:

  • Scaling affects the number of systemd service instances
  • Each worker gets its own process
  • The web process shares the same port (nginx load-balances)
  • Scaling is persisted across deploys

Port Management

Auto-Assignment

When server_port is omitted, Plitho auto-assigns a port from 20000-30000. The port is:

  • Assigned once and reused across deploys
  • Stored in the database
  • Injected as the PORT environment variable
  • Used in the nginx proxy config

Explicit Ports

You can specify a port explicitly:

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

Key details:

  • Plitho checks for port collisions before starting
  • If the port is taken, the deploy fails with an error
  • The port must be in the range 1-65535

Port Ranges

Resource Range Notes
Apps 20000-30000 Auto-assigned or explicit
Valkey 6379+ Auto-assigned
Data services 30000+ Type-specific ranges

Logs

View real-time logs from your app:

  1. Go to your app → Logs tab
  2. Logs stream automatically
  3. Use the filter to search output

App logs

Logs survive redeployments — you can always see what your app outputted.

Metrics

View CPU and memory usage over time:

  1. Go to your app → Metrics tab
  2. Select a time range (1 hour, 6 hours, 24 hours, 7 days, 30 days)
  3. View per-process charts

App metrics

Deployment History

View past deployments:

  1. Go to your app → Deployments tab
  2. See deployment status, timestamp, and revision
  3. Click on a deployment to see detailed events

App deployments

Persistent Data

Your app has a persistent data/ directory that survives redeployments. Use it for:

  • Uploaded files
  • SQLite databases
  • Cache files
  • Any data that shouldn't be lost on deploy

Access it in your app code as the current working directory, or via SSH.

Deleting an App

Danger

This permanently deletes the app, its git repository, and all data.

  1. Go to your app → Danger Zone tab
  2. Click Delete
  3. Confirm

Danger zone