Terminal and AI

The joppa command

Install the joppa command and drive Joppa from the terminal or a script: status, processes, services, logs, diagnostics, databases and proxy, as text or JSON.

joppa drives the running app. It does the same things as the window, from a terminal or a script.

Install

Settings › Command line › Install joppa. Joppa creates a link to the command shipped inside the app, in /usr/local/bin if possible, otherwise in ~/.local/bin. If that folder isn’t in your PATH, Settings gives you the line to add to ~/.zshrc.

joppa version

Commands

joppa                         # the full-screen app in the terminal (TUI)
joppa status                  # proxy, CA, projects and domains, services
joppa services                # services and their status
joppa start postgres          # starts a service
joppa stop redis              # stops a service
joppa logs postgres -n 200 -f # the log, streamed with -f
joppa procs                   # the projects' processes
joppa start acme              # starts the whole project (Start all)
joppa restart acme web        # restarts a process
joppa logs acme api --grep error # a process's log, filtered
joppa diagnose api.acme.test  # why this domain doesn't respond
joppa share app.acme.test     # sharing on the local network, with a QR code
joppa dbs postgres            # databases and their connection URLs
joppa proxy start             # or stop
joppa open                    # shows the Joppa window
joppa mcp                     # the MCP server (see below)
joppa uninstall               # uninstalls Joppa, this command included
Command Alias Role
joppa or joppa tui Opens the TUI
joppa status st Proxy, CA, projects, domains and their health, services
joppa services svc Services and their status
joppa start <service> Starts a service
joppa stop <service> Stops a service
joppa logs <service> log The log: -n / --lines N (100 by default), -f / --follow, --grep
joppa procs [project] ps, processes The processes of a project, or of every project that has some: status, port, domains, uptime, relaunches
joppa start <project> [process] Starts a process (and those it depends on), or the whole project
joppa stop <project> [process] Stops a process, or the whole project
joppa restart <project> [process] Restarts a process, or every one that is running or checked
joppa logs <project> [process] log The output of a process, or of all of them (prefixed with their name): -n, -f, --grep
joppa diagnose <domain|project> doctor Why a domain doesn’t respond: proxy, DNS, certificate, port, process, response
joppa share [domain|project] partager Shares a domain on the local network; --public through a tunnel (see Share a domain). With no argument: the open shares
joppa share stop <domain> Stops sharing (--public: the tunnel only)
joppa dbs <service> databases A server’s databases and their URLs
joppa db <action> <service> … Export, import, copy and snapshots of a database (see Database data)
joppa proxy start|stop Starts or stops the proxy
joppa open Shows the window
joppa mcp Runs the MCP server over stdio
joppa uninstall Uninstalls Joppa (see Uninstall)
joppa help, joppa version Help and version

Naming a service

You can refer to a service however you like: postgres, pg18, "PostgreSQL 18", its port 5432 or its ID.

Naming a project and its processes

A project is named by its name, its ID or one of its domains; a process by its name in the Processes tab (web, api, queue…). joppa start, stop and logs take a service or a project: with a single word, Joppa looks for a service first. If the word matches both a service and a project, the command says so: write the service’s port or one of the project’s domains.

joppa start and joppa restart wait for the processes to respond or crash (30 seconds at most), then show their status; a process that crashes is followed by the last lines of its log, and the command exits with 1.

joppa diagnose checks every link between the browser and the dev server, and tells you how to fix what’s missing (the details are in English, as with the diagnose MCP tool). It exits with 1 if a domain doesn’t respond.

Options

Option Effect
--json, -j JSON output, for scripts (on every command)
--launch Launches Joppa if it isn’t running, without asking
--grep <text>, -g joppa logs: only the lines that contain this text (case-insensitive)
--public joppa share: a public link through a tunnel (Joppa Pro)
--tunnel <client> joppa share: cloudflared (default), ngrok, localhost-run or pinggy; implies --public
--install joppa share --public: downloads cloudflared if it’s missing (checksum verified)
--theme nuit|jour|auto TUI theme
--no-motion Turns off animations (or JOPPA_NO_MOTION=1)
-h, -v Help, version

Share a domain

joppa share does from the terminal what the Share window does (see Share a site). The share lives in the app: it stays open after the command, until joppa share stop or until Joppa quits.

joppa share app.acme.test                    # http://192.168.1.20:41306 and its QR code
joppa share acme                             # the project's first enabled domain
joppa share app.acme.test --public           # https://….trycloudflare.com (Joppa Pro)
joppa share app.acme.test --public --install # downloads cloudflared first if it's missing
joppa share app.acme.test --tunnel pinggy    # or ngrok, localhost-run
joppa share                                  # the shared domains
joppa share stop app.acme.test               # closes the local network share and the tunnel
joppa share stop app.acme.test --public      # the tunnel only

In a terminal, the address shows with a QR code to scan. With --public, the command waits for the tunnel to get its address (50 seconds at most); if it closes before that, the command shows its last messages and exits with 1.

Database data

joppa db does from the terminal what Export…, Import…, Duplicate… and Snapshots… do on a service’s page (see Databases). The server must be running; relative paths start from the current folder.

joppa db export postgres acme                       # ./acme-2026-10-23.sql.gz
joppa db export mysql shop ~/shop.sql               # .sql, .sql.gz or .dump (PostgreSQL)
joppa db import postgres ~/acme.sql.gz              # into the acme database (from the file name)
joppa db import postgres ~/acme.dump --into acme_test
joppa db import postgres ~/joppa-postgres-17-2026-10-20.sql --replace   # a whole server
joppa db clone postgres acme acme_feature
joppa db snapshot postgres acme --name "before the migration"
joppa db snapshots postgres acme                    # id, date, size, name
joppa db restore postgres acme 20261023-142501
Command Does
joppa db export <service> <database> [file] Exports a database; the format follows the extension (.sql.gz by default)
joppa db import <service> <file> Imports a .sql, .sql.gz, .dump or the export of a whole server; --into <database> picks the database, --replace replaces one that exists
joppa db clone <service> <database> <copy> Copies a database on the same server
joppa db snapshot <service> <database> Takes a snapshot (Joppa Pro); --name <name> names it
joppa db snapshots <service> <database> The snapshots of a database, newest first
joppa db restore <service> <database> <snapshot> Brings the database back to a snapshot (Joppa Pro), after a snapshot of what it holds now

Without --replace, an import that would replace a database stops before touching anything and suggests another name. PostgreSQL extensions missing from the server are flagged before the import.

Uninstall

joppa uninstall does what Settings › Uninstall does: it shows what Joppa installed on the machine, then removes it once you confirm. The joppa command itself goes with the rest. By default everything that is there is removed except the services’ data; Joppa’s folder and the app are deleted once Joppa has quit. See Files and folders › Removing everything.

joppa uninstall --dry-run            # shows what would go, removes nothing
joppa uninstall                      # asks for confirmation (o/N)
joppa uninstall --yes --volumes      # no question, services' data included
joppa uninstall -y --keep license,app
Option Effect
--dry-run Shows the list, removes nothing
--yes, -y Doesn’t ask for confirmation (required outside a terminal)
--volumes Also deletes the services’ data (volumes), and their containers
--keep <pieces> Keeps items: mcp, cli, shell, containers, volumes, ca, dns, license, data, app

If a step fails (password cancelled, runtime stopped…), the others go on, but Joppa’s folder and the app are kept and the command exits with 1: fix it, then run joppa uninstall again.

In a script

# Launch Joppa if needed, then start PostgreSQL before the tests
joppa start postgres --launch
joppa services --json | jq .

# Start the project and fail if a process crashes
joppa start acme --json | jq '.processes[] | {name, status}'

Exit codes

Code Meaning
0 Success
1 Error; also a process that crashes on startup, or a domain that joppa diagnose finds broken
2 Bad command or option
3 Joppa isn’t running

How it works

The app writes a control.json file in its config folder (a port and a token, readable only by you). The command uses it to talk to the app’s local API. If Joppa isn’t running, joppa says so and offers to launch it.

getjoppa.com › support

Loading

Not going through? Write to [email protected]. Just a question: [email protected].