Skip to content

CLI Commands

Full reference for every norn command.

status

List all apps with their health, current commit, endpoints, and services.

bash
norn status

Displays a table of all discovered apps with live health indicators.

app

Detailed view of a single app including processes, recent deployments, and infrastructure.

bash
norn app <id>
ArgumentDescription
idApp name (from infraspec name field)

deploy

Deploy an app at a specific git ref with live pipeline progress.

bash
norn deploy <app> [ref]
ArgumentDefaultDescription
appApp name
refHEADGit ref (commit SHA, branch, tag)

Connects to the WebSocket and renders a real-time progress display showing each pipeline step. The saga ID is printed on completion for later inspection.

restart

Perform a rolling restart of all allocations for an app.

bash
norn restart <app>

Triggers a rolling restart via Nomad. Renders a spinner until all allocations are healthy.

rollback

Rollback to the previous successful deployment.

bash
norn rollback <app>

Finds the last successful deployment and re-deploys its image tag.

scale

Scale a specific task group to a given count.

bash
norn scale <app> <group> <count>
ArgumentDescription
appApp name
groupTask group / process name
countTarget instance count

INFO

Nomad's Jobs().Scale() takes *int, not *int64.

logs

Stream live logs from a running app.

bash
norn logs <app>

Opens a fullscreen, scrollable log viewer (Bubble Tea TUI). Press q or Ctrl+C to exit.

health

Check the health of all backing services (Nomad, Consul, PostgreSQL, S3).

bash
norn health
# alias:
norn doctor

Displays a checklist of service statuses with pass/fail indicators.

stats

Display deployment and cluster statistics.

bash
norn stats

Shows total apps, recent deployments, active allocations, and other cluster metrics.

secrets

Manage SOPS-encrypted secrets for an app.

bash
# List secret keys
norn secrets <app>

# Set a secret
norn secrets set <app> KEY=VALUE

# Delete a secret
norn secrets delete <app> KEY
SubcommandDescription
(none)List secret key names (values are not shown)
setSet or update a secret key-value pair
deleteRemove a secret

snapshots

Manage PostgreSQL database snapshots.

bash
# List snapshots
norn snapshots <app>

# Restore a snapshot
norn snapshots <app> restore <timestamp>
SubcommandDescription
(none)List available snapshots with timestamps
restoreRestore from a snapshot at the given timestamp

cron

Manage cron (periodic batch) jobs.

bash
norn cron <app> [subcommand]
SubcommandDescription
(none)Show cron status and schedule
triggerManually trigger a cron job immediately
pausePause a periodic job
resumeResume a paused periodic job
schedule <expr>Update the cron expression

invoke

Invoke a function process.

bash
norn invoke <app> --process=<name> --body='{"key":"value"}'
FlagShortDescription
--process-pProcess name to invoke (required)
--body-bJSON body or @file to read from file

Returns the execution ID and job ID. The function runs as a one-shot Nomad batch job.

saga

View the saga event log.

bash
# View events for a specific saga
norn saga <saga-id>

# Recent events filtered by app
norn saga --app=myapp --limit=50
FlagShortDefaultDescription
--app-aFilter events by app name
--limit-l20Maximum number of events to show

validate

Validate infraspec files for syntax and configuration errors.

bash
# Validate a single app
norn validate <app>

# Validate all discovered apps
norn validate

Reports errors and warnings for each infraspec field.

endpoints

List an app's configured endpoints with their cloudflared status.

bash
norn endpoints <app>

Output shows each endpoint with a status indicator:

endpoints for signal-sideband

  ● sideband.slopistry.com    active
  ○ api.slopistry.com         inactive
  • active — hostname is routed in cloudflared
  • inactive — hostname is not in cloudflared ingress
  • ? unknown — cloudflared config is unavailable (dev mode)

endpoints toggle

Toggle a single endpoint on or off in cloudflared.

bash
norn endpoints toggle <app> <hostname>
ArgumentDescription
appApp name
hostnameThe hostname to toggle (e.g. sideband.slopistry.com)

Determines the current state from the cloudflared ingress list and flips it. If the endpoint is active, it will be disabled; if inactive, it will be enabled.

$ norn endpoints toggle signal-sideband sideband.slopistry.com
toggling sideband.slopistry.com → disabled

╭──────────────────────╮
│ cloudflared updated  │
╰──────────────────────╯

forge

Set up cloudflared tunnel routing for all of an app's endpoints at once.

bash
norn forge <app>

Configures cloudflared ingress rules based on the app's endpoints in its infraspec. Use norn endpoints toggle for per-hostname control.

teardown

Remove cloudflared tunnel routing for all of an app's endpoints at once.

bash
norn teardown <app>

Removes the app's entries from the cloudflared ingress configuration. Use norn endpoints toggle for per-hostname control.

version

Display CLI version and API endpoint.

bash
norn version

Global Flags

FlagDescription
--apiOverride the Norn API URL (default: NORN_URL or http://localhost:8800)