Skip to content

Complete reference for all slipp commands. Commands follow a consistent pattern:

  • Singular = action (slipp run, slipp deploy)
  • Plural = manage resources (slipp runs, slipp secrets)
Terminal window
slipp [OPTIONS] COMMAND [ARGS]
OptionDescription
-v, --verboseEnable verbose logging
-o, --outputOutput format: table (default), json
-V, --versionShow version and exit
--helpShow help message

Commands for monitoring and managing deployed services.

List running services across registered projects (like docker ps).

Terminal window
slipp ps [OPTIONS]
OptionDescription
-p, --projectFilter by project name
--refreshForce re-discovery (bypass cache)
--allInclude system services
Terminal window
# List all services
slipp ps
# Filter by project
slipp ps -p myproject
# Fresh discovery
slipp ps --refresh
# JSON output
slipp ps -o json

View service logs (journalctl or container logs).

Terminal window
slipp logs <service> [OPTIONS]
OptionDescription
-f, --followFollow log output
-n, --linesNumber of lines (default: 50)
--allInclude system services in discovery
Terminal window
# View last 50 lines
slipp logs synapse
# Follow logs
slipp logs synapse -f
# Last 100 lines
slipp logs synapse -n 100

Display detailed service status (like systemctl status).

Terminal window
slipp status <service> [OPTIONS]
OptionDescription
--allInclude system services in discovery

Execute a command on VPS or in a container.

Terminal window
slipp exec "<command>"
slipp exec <service> "<command>"
OptionDescription
-u, --userOverride user (root, postgres, www-data)
Terminal window
# Execute on VPS
slipp exec "df -h"
# Execute in container
slipp exec synapse "cat /data/homeserver.yaml"
# Execute as root
slipp exec -u root "systemctl restart nginx"

Open interactive shell on VPS or container service.

Terminal window
slipp ssh [service]
OptionDescription
-u, --userOverride user
Terminal window
# SSH to VPS
slipp ssh
# Shell into container
slipp ssh synapse
# As specific user
slipp ssh -u postgres

Output host connection info (pipeable).

Terminal window
slipp host [project]
OptionDescription
--ipOutput IP only
--userOutput user only
--portOutput port only
Terminal window
# Get connection string
slipp host
# Output: slipp@192.168.1.100
# Get IP for scripting
slipp host --ip
# Output: 192.168.1.100
# Specific project
slipp host myproject --ip

Commands for local development workflows.

Execute a run profile for local development with remote infrastructure.

Terminal window
slipp run <name> [OPTIONS] [-- ARGS]
OptionDescription
--cmdCommand (creates/updates profile)
--envEnvironment variable KEY=VALUE (repeatable)
--vaultVault project(s) for secrets (repeatable)
--tunnel-outReverse tunnel local_port:domain@host
--tunnel-inForward tunnel service:port@host
Terminal window
# Create and run profile
slipp run dev \
--cmd "npm run dev" \
--tunnel-out 5173:app.example.com@myserver \
--vault myproject

Manage saved run profiles.

Terminal window
slipp runs list

Lists all saved profiles with their commands, vaults, and tunnels.

Terminal window
slipp runs remove <name>

Remove a saved run profile.

Generate complete Ansible project from codebase.

Terminal window
slipp launch [OPTIONS]
OptionDescription
-n, --nameProject name (required)
-e, --envEnvironment (default: production)
-d, --dirDirectories to scan (repeatable)
--dry-runShow what would be done
--reconfigureRe-prompt for inventory config
--proxyReverse proxy: caddy, none
Terminal window
# Generate Ansible project
slipp launch --name myapp
# Multiple directories
slipp launch --name myapp -d ./frontend -d ./backend
# Different environment
slipp launch --name myapp --env staging

Generate specific Ansible project files.

Terminal window
slipp generate dockerfile [OPTIONS]

Generate only Dockerfiles for detected services.

Terminal window
slipp generate scaffold [OPTIONS]

Generate project scaffolding without Dockerfiles.

Terminal window
slipp generate full [OPTIONS]

Generate complete project (Dockerfiles + scaffolding).


Manage Ansible tag presets for deployments.

Show a tag preset’s configuration.

Terminal window
slipp tag <preset>
Terminal window
slipp tag install
# Output:
# --tags: install-all
# --skip-tags: import-postgres

Manage tag presets.

Terminal window
slipp tags list

List all configured tag presets.

Terminal window
slipp tags add <name> [OPTIONS]
OptionDescription
-t, --tagsAnsible tags to run (comma-separated)
--skip-tagsAnsible tags to skip (comma-separated)
Terminal window
slipp tags add install --tags install-all --skip-tags import-postgres
slipp tags add setup --tags setup-all
Terminal window
slipp tags remove <name>

Remove a tag preset.


Generate and manage vault secrets.

Generate a cryptographically secure secret.

Terminal window
slipp secret [OPTIONS]
OptionDescription
-b, --bytesBytes of entropy (default: 32 = 256-bit)
--base64Output as base64 instead of hex
--ulidOutput as ULID (ignores —bytes)
--jwkOutput as RSA JWK keypair
--bitsRSA key size for —jwk (default: 2048)
Terminal window
# Generate 256-bit hex secret
slipp secret
# Output: 64 hex chars
# Base64 encoding
slipp secret --base64
# Generate JWK keypair
slipp secret --jwk
# Generate ULID
slipp secret --ulid

Manage vault secrets.

Terminal window
slipp secrets list [target] [secret_name]

List secrets in a vault, or show available vaults if no target specified.

Terminal window
# Show available vaults
slipp secrets list
# List secrets in project vault
slipp secrets list myproject
# Get template string for specific secret
slipp secrets list myproject db_password
# Output: {{ db_password }}
Terminal window
slipp secrets add <name> [target] [OPTIONS]
OptionDescription
-b, --bytesBytes of entropy (default: 32)
--jwkGenerate RSA JWK keypair
--bitsRSA key size for —jwk (default: 2048)
Terminal window
# Add random secret to current project vault
slipp secrets add vault_db_password
# Add to specific project
slipp secrets add vault_api_key myproject
# Add JWK keypair
slipp secrets add vault_signing_key --jwk
Terminal window
slipp secrets sync <path> [OPTIONS]

Scan YAML for {{ vault_* }} references and auto-generate secrets.

OptionDescription
-b, --bytesBytes of entropy (default: 32)
-f, --forceOverwrite existing vault.yml
Terminal window
slipp secrets sync inventory/host_vars/myhost/vars.yml
# Creates vault.yml with generated secrets for all {{ vault_* }} refs

Container image operations.

Push local container image to VPS via SSH.

Terminal window
slipp image push <image> [OPTIONS]
OptionDescription
--hostTarget host/project
-n, --nameRename image on VPS
Terminal window
# Push image
slipp image push myapp:latest
# Push to specific project host
slipp image push myapp:latest --host myproject
# Rename on push
slipp image push myapp:v1.2.3 --name myapp:latest

List container images on VPS.

Terminal window
slipp images list [OPTIONS]
OptionDescription
--hostTarget host/project
-f, --filterFilter by name pattern
Terminal window
# List all images
slipp images list
# Filter by pattern
slipp images list --filter "myapp*"

Project and configuration management.

Manage registered projects.

Terminal window
slipp projects list

List all registered projects with their paths.

Terminal window
slipp projects add <name> [OPTIONS]

Register the current directory as a project.

Terminal window
slipp projects remove <name>

Unregister a project.

Show current project configuration.

Terminal window
slipp config

Displays:

  • Project name, inventory, playbook, vault paths
  • Hosts from inventory
  • Global registry status

Supports -o json for machine-readable output.


VPS bootstrap operations for initial setup.

Create slipp service account on VPS.

Terminal window
slipp bootstrap account <host> [OPTIONS]
OptionDescription
--root-userRoot user for initial connection (default: root)
--ssh-keySSH private key path
-p, --portSSH port (default: 22)
--userService account name (default: slipp)
--dry-runShow what would be done
Terminal window
slipp bootstrap account 192.168.1.100 --port 22
# Dry run first
slipp bootstrap account myserver.com --dry-run

This command:

  1. Creates the slipp user account
  2. Copies SSH keys from root
  3. Configures passwordless sudo
  4. Verifies the setup

Setup dev proxy infrastructure for --tunnel-out.

Terminal window
slipp bootstrap proxy <host> [OPTIONS]
OptionDescription
-e, --emailEmail for Let’s Encrypt certificates (required)
-p, --fallback-portPort for existing HTTPS service (default: 9443)
Terminal window
slipp bootstrap proxy myproject --email admin@example.com

Installs Caddy dev proxy for routing production domains to local tunnels.

Setup container registry authentication on VPS.

Terminal window
slipp bootstrap registry ghcr [OPTIONS]
OptionDescription
--hostTarget host/project
-u, --userGitHub username
-t, --tokenGitHub PAT (or set GITHUB_TOKEN)
Terminal window
slipp bootstrap registry dockerhub [OPTIONS]
OptionDescription
--hostTarget host/project
-u, --userDocker Hub username
-t, --tokenDocker Hub token (or set DOCKER_TOKEN)
Terminal window
# GitHub Container Registry
slipp bootstrap registry ghcr --user myuser
# Docker Hub
slipp bootstrap registry dockerhub --user myuser

Execute Ansible playbook to deploy services.

Terminal window
slipp deploy [target] [preset] [OPTIONS]
ArgumentDescription
targetEnvironment name or tag preset (default: production)
presetTag preset when using slipp deploy <env> <preset>
OptionDescription
-n, --nameProject name (creates/updates slipp.yaml)
--dry-runShow what would be done
-i, --inventoryCustom inventory file path
--playbookCustom playbook file path
--vaultPath to vault file
-r, --requirementsPath to requirements.yml
--rolesRole search directories (repeatable)
--galaxy-pathInstall path for external roles
--force-requirementsForce reinstall roles
-t, --tagsAnsible tags to run
--skip-tagsAnsible tags to skip
Terminal window
# Deploy with defaults
slipp deploy
# Use tag preset
slipp deploy install
# Deploy to staging with preset
slipp deploy staging install
# First-time setup
slipp deploy --name myproject -i inventory/hosts
# Dry run
slipp deploy --dry-run