Commands
Tarsail commands use this shape:
tarsail [global options] <command> [command options]Global options
Section titled “Global options”| Option | Value | Description |
|---|---|---|
--config | path | Path to the Tarsail config file. Default: tarsail.yml. |
--identity-file | path | SSH private key file used for remote access. |
--ssh-key | path | Alias for --identity-file. |
--ask-password | boolean | Prompt once for the remote user’s SSH password. |
--verbose | boolean | Show verbose command output where available. |
--yes | boolean | Answer yes to confirmation prompts that support it. |
-v, --version | boolean | Show Tarsail version and exit. |
--identity-file and --ask-password cannot be used together.
--identity-file supports ~/ expansion and is resolved to an absolute path before use.
Create a minimal config file.
tarsail initWith a custom path:
tarsail --config tarsail.production.yml initinit refuses to overwrite an existing config file.
It detects a Compose file in this order:
compose.yamlcompose.ymldocker-compose.yamldocker-compose.yml
If none is found, it writes compose.yaml.
Generated config:
project: my-app
target: name: prod host: example.com user: deploy port: 22 path: /opt/my-app
compose: file: compose.yaml
deploy: keep_releases: 3doctor
Section titled “doctor”Check local and remote deployment readiness.
tarsail doctorCommon forms:
tarsail --config tarsail.production.yml doctortarsail --identity-file ~/.ssh/my-app-deploy-key doctortarsail --ask-password doctorLocal checks:
- config loads;
- Compose file exists;
- Docker command is available;
- Docker Compose is available;
- Docker daemon is reachable;
- Compose images are discoverable.
Remote checks:
- SSH connects;
- target path is writable;
- required shared files exist;
- Docker is available;
- Docker Compose is available.
doctor may create the basic remote target layout when checking path writability:
releases/incoming/shared/deploy
Section titled “deploy”Build, bundle, upload, load, activate, and start the app.
tarsail deployCommon forms:
tarsail --identity-file ~/.ssh/my-app-deploy-key deploytarsail --ask-password deploytarsail --config tarsail.production.yml --ask-password deploySteps:
- check local environment;
- check remote server;
- upload configured env and secret files;
- build images;
- create bundle;
- upload bundle;
- load images;
- start Compose app;
- read status.
The generated release ID is available to local and remote Compose as TARSAIL_RELEASE_ID.
status
Section titled “status”Show remote Docker Compose status for the active release.
tarsail statusEquivalent remote operation:
cd <target.path>docker compose -p <project> --env-file current/.tarsail.env --env-file shared/.env -f current/compose.yaml psThe shared env file is included only when compose.env_file is configured.
Show remote Compose logs.
tarsail logsService-specific logs:
tarsail logs webOptions:
| Option | Value | Description |
|---|---|---|
--tail | number | Number of log lines to show. Default: 200. Allowed range: 1 to 10000. |
-f | boolean | Follow logs. |
Examples:
tarsail logs --tail 100tarsail logs --tail 500 webtarsail logs -f webService name validation allows letters, numbers, dot, underscore, and hyphen.
rollback
Section titled “rollback”Reactivate the previous release.
tarsail rollbackRollback:
- reads the current release from the
currentsymlink; - chooses the previous valid release by release metadata;
- loads images from that release;
- updates
current; - runs Compose;
- prints status.
Rollback does not restore data stores, Docker volumes, shared/ files, or external services.
Delete old non-current release directories.
tarsail pruneSkip confirmation:
tarsail prune --yesor:
tarsail --yes pruneThe number of kept releases comes from:
deploy: keep_releases: 3Allowed range for keep_releases is 1 to 20.
version
Section titled “version”Show the installed Tarsail version.
tarsail versionRelease binaries use a date-plus-hash version string such as 20260622-194500-a1b2c3d4e5f6.
Equivalent:
tarsail -vtarsail --versionVerbose version output includes commit and build time when the binary was built by the GitHub Release workflow:
tarsail --verbose versionShow command usage:
tarsail helptarsail --helptarsail -h