Skip to content

CLI reference

text
sshpod [list]
sshpod up <workspace> [--provider <name>] [--config <path>]
sshpod down <workspace> [--provider <name>]
sshpod provider list
sshpod provider add <name> --type local [--podman <command>]
sshpod provider add <name> --type ssh --host <ssh-config-host> [--podman <command>] [--ssh-arg <arg>]...
sshpod provider delete <name>
sshpod doctor

The command surface is intentionally small. sshpod with no subcommand is equivalent to sshpod list; an unknown subcommand is an error.

list

List configured workspaces and their status.

sh
sshpod list
sshpod          # same thing

Output is tab-separated, one row per workspace, with per-provider states joined by commas:

text
WORKSPACE   PROVIDERS      STATUS
myproject   local,sandbox  running:local,not-created:sandbox
StateMeaning
runningThe container exists and is running.
stoppedThe container exists and is stopped.
not-createdThe target is configured but no container exists yet.
unreachableThe provider could not be contacted (SSH exit 255).
errorThe provider answered, but the state could not be determined.

up

Create or start a workspace.

sh
sshpod up <workspace> [--provider <name>] [--config <path>]
FlagMeaning
--provider <NAME>Provider target to use. Required when the workspace has several targets and stdin is not a TTY.
--config <PATH>Select a discovered devcontainer.json by workspace-relative path. Saved to the workspace target.

The first up binds the workspace name to the current directory. Output:

text
Workspace "myproject" created and started on provider "local" (sshpod-myproject-local)

or, when the container already existed:

text
Workspace "myproject" started on provider "local" (sshpod-myproject-local)

down

Stop a workspace without deleting it.

sh
sshpod down <workspace> [--provider <name>]

down takes no --config; passing it is an error.

text
Workspace "myproject" stopped on provider "local" (sshpod-myproject-local)
Workspace "myproject" was already stopped on provider "local" (sshpod-myproject-local)

provider

Manage local and SSH providers. A subcommand is required.

sh
sshpod provider list
sshpod provider add <name> --type <local|ssh> [--host <h>] [--podman <cmd>] [--ssh-arg <arg>]...
sshpod provider delete <name>
FlagMeaning
--type <local|ssh>Required. No other values are accepted.
--host <SSH_CONFIG_HOST>OpenSSH host or alias. Required for an SSH provider.
--podman <COMMAND>Podman-compatible executable or path. Defaults to podman.
--ssh-arg <ARG>OpenSSH argument to store; may be repeated. Leading hyphens are allowed.
text
NAME      TYPE    HOST      PODMAN   DEFAULT
local     local   -         podman   yes
sandbox   ssh     sandbox   podman   -
text
Added provider "sandbox" to /home/me/.config/sshpod/config.yaml
Deleted provider "sandbox"; existing containers and source directories were not deleted

See Providers for the details behind each field.

doctor

Check that the local Podman CLI can run, and report its version.

sh
sshpod doctor
text
Podman CLI: podman version 5.3.1
Local executable check passed. Runtime and remote connectivity were not checked.

This is a local check only. It does not contact SSH providers and does not verify a remote Podman.

Version

sh
sshpod -V          # sshpod 0.1.0
sshpod --version   # sshpod 0.1.0 - <git commit>

--version includes the source Git commit when it was available at build time. Builds contain no timestamp.

Released under the BSD-3-Clause License