How mightymoud/sidekick works
Sidekick is a CLI for provisioning a VPS and deploying Dockerfile-based applications to it. The main workflow is init (prepare the server and its Docker/Traefik environment), launch (build and transfer an app, then configure routing), and deploy (ship later versions); preview deployments add commit-specific environments that can be listed or removed. Local configuration, SSH access, and secret handling support these workflows. The README documents SSL, load balancing, and SOPS-backed secrets. Some command implementations are unsampled, so links to those subsystems are limited to documented behavior.
Main entry points: preview.go Preview deploy · root.go Command router · launch.go Launch app · deploy.go Deploy version
Components 21
CLI workflows
- CLI entry
main.go - Command router
cmd/root.go - Progress interface
render/tui.go
Application deployment
- Launch app
cmd/launch/launch.go - Deploy version
cmd/deploy/deploy.go - Preview deploy
cmd/preview/preview.go - List previews
cmd/preview/list/list.go - Remove preview
cmd/preview/remove/remove.go - Local Docker
VPS and access
- VPS init
cmd/initialize/initialize.go - SSH access
utils/auth.go - Remote setup scripts
utils/scripts.go
Configuration and secrets
- Config commands
cmd/config - App configuration
utils/config.go - CLI configuration
cmd/root.go - SOPS and age
Other components
- CLI user
- Target VPS
- Remote Docker
- Traefik routing
- Domains and SSL
Connections 40
- CLI user → CLI entry: runs command
- CLI entry → Command router: executes
- Command router → VPS init: dispatches init
- Command router → Launch app: dispatches launch
- Command router → Deploy version: dispatches deploy
- Command router → Preview deploy: dispatches preview
- Command router → Config commands: dispatches config
- Preview deploy → List previews: dispatches list
- Preview deploy → Remove preview: dispatches remove
- Command router → CLI configuration: loads settings
- Config commands → CLI configuration: manages settings
- Launch app → App configuration: writes app config
- Deploy version → App configuration: reads app config
- Preview deploy → App configuration: reads app config
- List previews → App configuration: reads previews
- Remove preview → App configuration: updates previews
- VPS init → SSH access: connects by SSH
- Launch app → SSH access: connects by SSH
- Deploy version → SSH access: connects by SSH
- Preview deploy → SSH access: connects by SSH
- Remove preview → SSH access: connects by SSH
- VPS init → Remote setup scripts: runs setup scripts
- VPS init → Target VPS: provisions
- Launch app → Local Docker: builds image
- Deploy version → Local Docker: builds image
- Preview deploy → Local Docker: builds image
- Launch app → Target VPS: transfers app
- Deploy version → Target VPS: transfers release
- Preview deploy → Target VPS: transfers preview
- Remove preview → Target VPS: removes preview
- Launch app → SOPS and age: encrypts secrets
- Deploy version → SOPS and age: refreshes secrets
- Preview deploy → SOPS and age: encrypts secrets
- Target VPS → Remote Docker: runs containers
- Target VPS → Traefik routing: hosts routing
- Traefik routing → Domains and SSL: serves HTTPS
- VPS init → Progress interface: reports stages
- Launch app → Progress interface: reports stages
- Deploy version → Progress interface: reports stages
- Preview deploy → Progress interface: reports stages