CLI Reference
Complete reference for all slipp commands. Commands follow a consistent pattern:
- Singular = action (
slipp run,slipp deploy) - Plural = manage resources (
slipp runs,slipp secrets)
slipp [OPTIONS] COMMAND [ARGS]Global Options
Section titled “Global Options”| Option | Description |
|---|---|
-v, --verbose | Enable verbose logging |
-o, --output | Output format: table (default), json |
-V, --version | Show version and exit |
--help | Show help message |
Operations
Section titled “Operations”Commands for monitoring and managing deployed services.
List running services across registered projects (like docker ps).
slipp ps [OPTIONS]| Option | Description |
|---|---|
-p, --project | Filter by project name |
--refresh | Force re-discovery (bypass cache) |
--all | Include system services |
# List all servicesslipp ps
# Filter by projectslipp ps -p myproject
# Fresh discoveryslipp ps --refresh
# JSON outputslipp ps -o jsonView service logs (journalctl or container logs).
slipp logs <service> [OPTIONS]| Option | Description |
|---|---|
-f, --follow | Follow log output |
-n, --lines | Number of lines (default: 50) |
--all | Include system services in discovery |
# View last 50 linesslipp logs synapse
# Follow logsslipp logs synapse -f
# Last 100 linesslipp logs synapse -n 100status
Section titled “status”Display detailed service status (like systemctl status).
slipp status <service> [OPTIONS]| Option | Description |
|---|---|
--all | Include system services in discovery |
Execute a command on VPS or in a container.
slipp exec "<command>"slipp exec <service> "<command>"| Option | Description |
|---|---|
-u, --user | Override user (root, postgres, www-data) |
# Execute on VPSslipp exec "df -h"
# Execute in containerslipp exec synapse "cat /data/homeserver.yaml"
# Execute as rootslipp exec -u root "systemctl restart nginx"Open interactive shell on VPS or container service.
slipp ssh [service]| Option | Description |
|---|---|
-u, --user | Override user |
# SSH to VPSslipp ssh
# Shell into containerslipp ssh synapse
# As specific userslipp ssh -u postgresOutput host connection info (pipeable).
slipp host [project]| Option | Description |
|---|---|
--ip | Output IP only |
--user | Output user only |
--port | Output port only |
# Get connection stringslipp host# Output: slipp@192.168.1.100
# Get IP for scriptingslipp host --ip# Output: 192.168.1.100
# Specific projectslipp host myproject --ipDevelopment
Section titled “Development”Commands for local development workflows.
Execute a run profile for local development with remote infrastructure.
slipp run <name> [OPTIONS] [-- ARGS]| Option | Description |
|---|---|
--cmd | Command (creates/updates profile) |
--env | Environment variable KEY=VALUE (repeatable) |
--vault | Vault project(s) for secrets (repeatable) |
--tunnel-out | Reverse tunnel local_port:domain@host |
--tunnel-in | Forward tunnel service:port@host |
# Create and run profileslipp run dev \ --cmd "npm run dev" \ --tunnel-out 5173:app.example.com@myserver \ --vault myproject# Run saved profileslipp run dev
# Pass additional argsslipp run dev -- --port 3000
# Override at runtimeslipp run dev --env DEBUG=trueManage saved run profiles.
runs list
Section titled “runs list”slipp runs listLists all saved profiles with their commands, vaults, and tunnels.
runs remove
Section titled “runs remove”slipp runs remove <name>Remove a saved run profile.
launch
Section titled “launch”Generate complete Ansible project from codebase.
slipp launch [OPTIONS]| Option | Description |
|---|---|
-n, --name | Project name (required) |
-e, --env | Environment (default: production) |
-d, --dir | Directories to scan (repeatable) |
--dry-run | Show what would be done |
--reconfigure | Re-prompt for inventory config |
--proxy | Reverse proxy: caddy, none |
# Generate Ansible projectslipp launch --name myapp
# Multiple directoriesslipp launch --name myapp -d ./frontend -d ./backend
# Different environmentslipp launch --name myapp --env staginggenerate
Section titled “generate”Generate specific Ansible project files.
generate dockerfile
Section titled “generate dockerfile”slipp generate dockerfile [OPTIONS]Generate only Dockerfiles for detected services.
generate scaffold
Section titled “generate scaffold”slipp generate scaffold [OPTIONS]Generate project scaffolding without Dockerfiles.
generate full
Section titled “generate full”slipp generate full [OPTIONS]Generate complete project (Dockerfiles + scaffolding).
Manage Ansible tag presets for deployments.
Show a tag preset’s configuration.
slipp tag <preset>slipp tag install# Output:# --tags: install-all# --skip-tags: import-postgresManage tag presets.
tags list
Section titled “tags list”slipp tags listList all configured tag presets.
tags add
Section titled “tags add”slipp tags add <name> [OPTIONS]| Option | Description |
|---|---|
-t, --tags | Ansible tags to run (comma-separated) |
--skip-tags | Ansible tags to skip (comma-separated) |
slipp tags add install --tags install-all --skip-tags import-postgresslipp tags add setup --tags setup-alltags remove
Section titled “tags remove”slipp tags remove <name>Remove a tag preset.
Secrets
Section titled “Secrets”Generate and manage vault secrets.
secret
Section titled “secret”Generate a cryptographically secure secret.
slipp secret [OPTIONS]| Option | Description |
|---|---|
-b, --bytes | Bytes of entropy (default: 32 = 256-bit) |
--base64 | Output as base64 instead of hex |
--ulid | Output as ULID (ignores —bytes) |
--jwk | Output as RSA JWK keypair |
--bits | RSA key size for —jwk (default: 2048) |
# Generate 256-bit hex secretslipp secret# Output: 64 hex chars
# Base64 encodingslipp secret --base64
# Generate JWK keypairslipp secret --jwk
# Generate ULIDslipp secret --ulidsecrets
Section titled “secrets”Manage vault secrets.
secrets list
Section titled “secrets list”slipp secrets list [target] [secret_name]List secrets in a vault, or show available vaults if no target specified.
# Show available vaultsslipp secrets list
# List secrets in project vaultslipp secrets list myproject
# Get template string for specific secretslipp secrets list myproject db_password# Output: {{ db_password }}secrets add
Section titled “secrets add”slipp secrets add <name> [target] [OPTIONS]| Option | Description |
|---|---|
-b, --bytes | Bytes of entropy (default: 32) |
--jwk | Generate RSA JWK keypair |
--bits | RSA key size for —jwk (default: 2048) |
# Add random secret to current project vaultslipp secrets add vault_db_password
# Add to specific projectslipp secrets add vault_api_key myproject
# Add JWK keypairslipp secrets add vault_signing_key --jwksecrets sync
Section titled “secrets sync”slipp secrets sync <path> [OPTIONS]Scan YAML for {{ vault_* }} references and auto-generate secrets.
| Option | Description |
|---|---|
-b, --bytes | Bytes of entropy (default: 32) |
-f, --force | Overwrite existing vault.yml |
slipp secrets sync inventory/host_vars/myhost/vars.yml# Creates vault.yml with generated secrets for all {{ vault_* }} refsImages
Section titled “Images”Container image operations.
image push
Section titled “image push”Push local container image to VPS via SSH.
slipp image push <image> [OPTIONS]| Option | Description |
|---|---|
--host | Target host/project |
-n, --name | Rename image on VPS |
# Push imageslipp image push myapp:latest
# Push to specific project hostslipp image push myapp:latest --host myproject
# Rename on pushslipp image push myapp:v1.2.3 --name myapp:latestimages list
Section titled “images list”List container images on VPS.
slipp images list [OPTIONS]| Option | Description |
|---|---|
--host | Target host/project |
-f, --filter | Filter by name pattern |
# List all imagesslipp images list
# Filter by patternslipp images list --filter "myapp*"Management
Section titled “Management”Project and configuration management.
projects
Section titled “projects”Manage registered projects.
projects list
Section titled “projects list”slipp projects listList all registered projects with their paths.
projects add
Section titled “projects add”slipp projects add <name> [OPTIONS]Register the current directory as a project.
projects remove
Section titled “projects remove”slipp projects remove <name>Unregister a project.
config
Section titled “config”Show current project configuration.
slipp configDisplays:
- Project name, inventory, playbook, vault paths
- Hosts from inventory
- Global registry status
Supports -o json for machine-readable output.
Bootstrap
Section titled “Bootstrap”VPS bootstrap operations for initial setup.
bootstrap account
Section titled “bootstrap account”Create slipp service account on VPS.
slipp bootstrap account <host> [OPTIONS]| Option | Description |
|---|---|
--root-user | Root user for initial connection (default: root) |
--ssh-key | SSH private key path |
-p, --port | SSH port (default: 22) |
--user | Service account name (default: slipp) |
--dry-run | Show what would be done |
slipp bootstrap account 192.168.1.100 --port 22
# Dry run firstslipp bootstrap account myserver.com --dry-runThis command:
- Creates the
slippuser account - Copies SSH keys from root
- Configures passwordless sudo
- Verifies the setup
bootstrap proxy
Section titled “bootstrap proxy”Setup dev proxy infrastructure for --tunnel-out.
slipp bootstrap proxy <host> [OPTIONS]| Option | Description |
|---|---|
-e, --email | Email for Let’s Encrypt certificates (required) |
-p, --fallback-port | Port for existing HTTPS service (default: 9443) |
slipp bootstrap proxy myproject --email admin@example.comInstalls Caddy dev proxy for routing production domains to local tunnels.
bootstrap registry
Section titled “bootstrap registry”Setup container registry authentication on VPS.
bootstrap registry ghcr
Section titled “bootstrap registry ghcr”slipp bootstrap registry ghcr [OPTIONS]| Option | Description |
|---|---|
--host | Target host/project |
-u, --user | GitHub username |
-t, --token | GitHub PAT (or set GITHUB_TOKEN) |
bootstrap registry dockerhub
Section titled “bootstrap registry dockerhub”slipp bootstrap registry dockerhub [OPTIONS]| Option | Description |
|---|---|
--host | Target host/project |
-u, --user | Docker Hub username |
-t, --token | Docker Hub token (or set DOCKER_TOKEN) |
# GitHub Container Registryslipp bootstrap registry ghcr --user myuser
# Docker Hubslipp bootstrap registry dockerhub --user myuserDeploy
Section titled “Deploy”Execute Ansible playbook to deploy services.
slipp deploy [target] [preset] [OPTIONS]| Argument | Description |
|---|---|
target | Environment name or tag preset (default: production) |
preset | Tag preset when using slipp deploy <env> <preset> |
| Option | Description |
|---|---|
-n, --name | Project name (creates/updates slipp.yaml) |
--dry-run | Show what would be done |
-i, --inventory | Custom inventory file path |
--playbook | Custom playbook file path |
--vault | Path to vault file |
-r, --requirements | Path to requirements.yml |
--roles | Role search directories (repeatable) |
--galaxy-path | Install path for external roles |
--force-requirements | Force reinstall roles |
-t, --tags | Ansible tags to run |
--skip-tags | Ansible tags to skip |
# Deploy with defaultsslipp deploy
# Use tag presetslipp deploy install
# Deploy to staging with presetslipp deploy staging install
# First-time setupslipp deploy --name myproject -i inventory/hosts
# Dry runslipp deploy --dry-run