Commands

spinup [alias] [options]. Inside a project directory the alias can usually be left out: spinup uses the directory's registered alias, or the config's name when the directory is not registered. Each alias command, such as my-app, accepts the same options.

Registering

Command What it does
spinup <alias> Registers the current directory, generating .spinup.yml if there is none, and installs the <alias> command. For an alias that already exists, prints its card.
spinup --init The same, step by step: choose the alias, review and edit detected commands, preview, confirm.
spinup <alias> --path <dir> Registers <dir> instead of the current directory.
spinup <alias> --relink Points the alias at the current directory, or --path. For moved checkouts and worktrees.
spinup <alias> --regenerate Rescans and replaces the config after showing what changes. Keeps the old file as .spinup.yml.bak.
spinup <alias> --edit Opens the config in $VISUAL or $EDITOR. Add --interactive to edit services with prompts, keeping comments.
spinup <alias> --remove Removes the command and the registration. The project's files are untouched.
spinup --list Registered projects with their default action and whether their config is valid.

Inspecting

Command What it does
--plan Start order, resolved directories, dependencies, readiness conditions and delays.
--graph A tree of what waits for what. Each service sits under the dependency that gates its start, with its readiness condition; other dependencies are noted as also after.
--env Environment keys, their source file, and shell overrides. Values are never shown.
--check Required tools, directories and busy ports for the selected action.
--doctor Everything --check does, plus actions, detection with the origin of each command, and notes.
--dry-run With a launch: what would run, the environment sources and busy ports. Starts nothing.

--plan, --graph, --env, --check, --doctor, --status and --list accept --json, which prints one JSON document and nothing else on stdout.

Running

Command What it does
<alias> or spinup --start <alias> Launches the default action.
spinup --start Launches the current directory's config without registering anything.
--action <name> Selects another action, for launching and for every inspection and session command.
--logs Also writes each service's output to a private log file.

Sessions

These act only on the tmux session spinup created for the project and action, and refuse any other session with the same name.

Command What it does
--status Whether the session is running, and each service's state, pid or exit status.
--attach Attaches to the session, or switches to it from inside tmux.
--restart <service> Restarts one service from the current config and waits until it is ready.
--restart Stops and relaunches the whole session.
--stop Ends the session. Stopping a session that is not running is not an error.

Maintenance

Command What it does
spinup --update [version] Replaces the binary with a verified release.
spinup --completion bash|zsh|fish Prints a shell completion script.
spinup --version Prints the version.

Global options

Option Effect
-y, --yes Answers yes to confirmations. Without a terminal, confirmations fail unless this is given.
--no-color Disables color. NO_COLOR does the same.

Exit status

Status Meaning
0 Success
1 Usage, configuration or registration error
2 --check or --doctor found the selected action cannot run
3 --status found the session is not running
n A task in a simple action exited with status n
130, 143 Stopped by Ctrl+C or SIGTERM, after every task was shut down