Skip to main content

CLI compatibility

Miren commands use singular categories with explicit verbs. Categories such as miren route, miren cluster, miren deployment, and miren target print help; use list to see their objects.

Command names​

Previous formPreferred formCompatibility
deploydeployment createPermanent alias
rollbackapp rollbackPermanent alias
topsandbox topPermanent alias
login, logoutcloud login, cloud logoutPermanent aliases
serverserver startPermanent alias; existing systemd units still work
admin METHODapp admin run METHODPermanent alias
admin --listapp admin listExisting form remains supported
app / app --watchapp status / app watchDashboard retained with warning for one release
appsapp listDeprecated alias for one release
app attach, app runs, app runs cancelrun attach, run list, run cancelDeprecated aliases for one release
app versionsapp history --versionsOld output retained with warning for one release
deploy cancel -d IDdeployment cancel IDOld name and flag retained with warnings
deploy target add/list/removetarget add/list/removeDeprecated aliases for one release
addon destroy, secret destroyaddon delete, secret deleteDeprecated aliases for one release
route remove, runner removeroute delete, runner deleteDeprecated aliases for one release
sandbox-pooldebug sandbox-poolOld subcommands retained with warnings
download releaseserver download-releaseDeprecated alias for one release
top --app NAMEapp top -a NAMEOld flag retained with warning
route set HOST APProute set HOST -a APPPositional app retained with warning
app delete APPapp delete -a APPPositional app retained with warning

When a legacy positional app disagrees with --app or MIREN_APP, app delete and route set refuse to run. Remove the conflicting selector rather than relying on one to silently override the other.

app status --graph adds a one-time resource snapshot. app watch is live only when stdout is a terminal; piped output prints once and exits. app pool-size [COUNT] --service web shows or changes an active service's desired sandbox count. Autoscaling can subsequently change that count; use fixed concurrency in app.toml for a persistent setting.

app history --ephemeral lists preview versions, including versions without deployment records. Existing app versions JSON retains its shape, with an optional short_id added when available. List output includes short IDs for use in subsequent commands, falling back to full IDs for older servers.

Choosing a cluster​

All app-centric commands follow the same deployment target selection rules. -C and MIREN_CLUSTER select a target when deploy.toml exists. Target order no longer supplies a default, and per-app pins in app-state.toml are ignored but not deleted.

If -a, MIREN_APP, or a legacy positional app names a different app from the directory's app.toml, the command ignores that directory's deploy targets. -C then names a configured cluster or direct address, and ordinary app commands may use the global active cluster. Explicitly naming the directory's own app keeps its target selection rules.

Deploy keeps the source directory's targets even with a different -a, preserving deploy -a NAME --target TARGET and rejecting clusters outside those targets. An unnamed app.toml also keeps its directory's targets rather than treating every explicitly selected app as unrelated.

Without targets, other app commands may use the global active cluster. Deploy requires explicit selection, a sole configured cluster, or a picker; ambiguous unattended deploys fail rather than silently using the global active cluster. cluster switch changes only the global active cluster.

With no configured clusters, cluster-backed commands explain how to run miren cluster add rather than implicitly dialing the default local development address. For direct-address development without client configuration, pass --server-address 127.0.0.1:8443 explicitly. This does not bypass an invalid or ambiguous deployment-target selection. JSON deploy modes require an unambiguous selection and never open a picker, even on a terminal.

Confirmation and JSON​

Use --yes to skip confirmations. On deploy and app, sandbox, env, addon, and secret deletion, the old confirmation-skipping -f/--force remains a deprecated alias for one release. Runner deletion's --force still overrides its active-sandbox safety check; it does not skip confirmation.

Route deletion, cluster removal, and runner deletion now confirm on an interactive terminal. For one release, unattended calls to these commands continue without --yes, warning that it will be required in the next release. Commands that already required confirmation refuse unattended deletion unless --yes (or its deprecated force alias) is supplied.

Every transition warning goes to stderr so JSON on stdout stays parseable. Use --json or --format json; admin's -j remains supported with a warning.