Awesome-omni-skill bosun
Get started with Bosun -- what it is, how to set it up, and how to use it
git clone https://github.com/diegosouzapw/awesome-omni-skill
T=$(mktemp -d) && git clone --depth=1 https://github.com/diegosouzapw/awesome-omni-skill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/devops/bosun" ~/.claude/skills/diegosouzapw-awesome-omni-skill-bosun && rm -rf "$T"
skills/devops/bosun/SKILL.mdGuide the user through getting started with Bosun and help them understand how it works. Use resource files for deep dives into specific topics.
What is Bosun?
Bosun is a single-binary CLI tool that brings GitOps workflows to homelab Docker Compose deployments. Write short manifest files, bosun generates Docker Compose + Traefik + Gatus configs. Push to git, bosun reconciles your server automatically. No Kubernetes required.
The pitch: Write a 10-line manifest, get a fully configured service with routing, monitoring, health checks, and compose orchestration -- all deployed automatically when you push to git.
Nautical Terminology
Everything uses nautical/Below Deck naming:
| Term | Meaning |
|---|---|
| Yacht | Your server running Docker Compose |
| Crew | Your containers |
| Captain | GitHub (gives orders via webhooks) |
| Manifest | Service definitions (what to deploy) |
| Provisions | Reusable config templates (how to deploy) |
| Radio | Webhook/tunnel for receiving push events |
| Bosun | The CLI tool itself (receives orders, deploys crew) |
Prerequisites
Before setting up Bosun, ensure the following are installed:
- Docker + Docker Compose v2 --
to verifydocker compose version - Git -- for repository operations
- SOPS + Age -- for secret encryption (
to generate keys,age-keygen
CLI for encryption)sops - Go 1.24+ -- only if building from source
- Linux or macOS -- tested on Unraid, Debian, Ubuntu, macOS
- Tailscale (optional) -- for webhook tunnel via
bosun radio
Installation
Pick one method:
# Quick install (recommended) -- downloads, verifies checksum, installs to /usr/local/bin curl -fsSL https://raw.githubusercontent.com/cameronsjo/bosun/main/scripts/install.sh | bash # Via Go go install github.com/cameronsjo/bosun/cmd/bosun@latest # From source git clone https://github.com/cameronsjo/bosun.git cd bosun && make build # output at build/bosun
Update an existing install:
bosun update # Update to latest release bosun update --check # Check for updates without installing
Initial Setup
-
Generate an Age encryption key (if not already done):
age-keygen -o ~/.config/sops/age/keys.txt -
Create
in the project root with the public key from step 1..sops.yaml -
Initialize the project:
bosun init # Interactive setup wizard bosun init --yes # Non-interactive (for CI/CD) bosun init my-homelab # Initialize in a new directory -
Run pre-flight checks:
bosun doctorValidates Docker, Git, SOPS, Age key, manifest directory, and webhook status.
-
Start your services:
bosun yacht up
Command Groups at a Glance
| Group | Commands | Purpose |
|---|---|---|
| Setup | , , | Project creation, health checks, updates |
| Yacht | | Manage Docker Compose stacks |
| Crew | | Manage individual containers |
| Manifest | , , , , , | Build and validate service configs |
| GitOps | , , , | Automated deployment pipeline |
| Radio | | Webhook and tunnel connectivity |
| Alerts | | Deploy notification testing and status |
| Diagnostics | , , , | Health monitoring and debugging |
| Emergency | , , | Error triage, rollback, force-remove, backup restore |
| Utilities | , | Self-update, shell completions |
For complete command details with all flags and examples, see
@resources/commands.md.
Core Workflow
For manual deployments:
bosun provision mystack # Render manifest -> compose/traefik/gatus files bosun provision mystack -n # Preview without writing (dry run) bosun yacht up # Start/update services bosun crew list # Verify containers are running bosun drift --live # Check for drift between config and running state
For automated GitOps:
bosun daemon # Run long-lived daemon (webhook + polling) # ... push changes to git ... # Bosun automatically: pulls repo -> decrypts secrets -> templates configs -> deploys bosun trigger # Or manually trigger reconciliation bosun drift # Check for drift between deploys
For full GitOps setup details, see
@resources/gitops.md.
Writing Service Manifests
A manifest describes what to deploy. Provisions describe how. Bosun renders both into Docker Compose, Traefik, and Gatus configs.
Minimal example (a web app with routing and monitoring):
# manifest/services/myapp.yml name: myapp provisions: [container, reverse-proxy, monitoring] config: image: ghcr.io/org/myapp:latest port: 3000 subdomain: myapp domain: example.com
Full example (web app with Postgres sidecar, health checks, and homepage entry):
name: norish provisions: [container, healthcheck, homepage, reverse-proxy, monitoring] config: image: ghcr.io/norishapp/norish:latest port: 3000 subdomain: recipes domain: example.com group: Apps icon: mdi-food description: Recipe manager services: postgres: version: 17 db: norish db_password: "{{ $secrets.apps.norish.db_password }}"
For the complete manifest schema, variable interpolation rules, and provision types, see
@resources/manifests.md.
Configuration
Bosun finds its project root by searching upward from the current directory for:
orbosun.yaml
config filebosun.yml
directory withbosun/docker-compose.yml
ormanifest/
directorymanifests/
For the full config file reference and environment variables, see
@resources/configuration.md.
Common Tasks
| Task | Command |
|---|---|
| Start all services | |
| Start specific services | |
| Check container health | |
| View container logs | |
| Preview rendered config | |
| Show diff before applying | |
| Run one-shot deploy | |
| Dry-run deploy | |
| Check for drift | |
| View recent errors | |
| Rollback to snapshot | |
| Force-remove stuck container | |
| Scaffold new service | |
| Validate manifests | |
| Check system health | |
| Restore from backup | or |
| Test alert providers | |
| Set up shell completions | |
Troubleshooting Quick Reference
| Problem | Fix |
|---|---|
| "project root not found" | Ensure you're inside a bosun project, or use |
| "connect to docker" | Check Docker is running (), check socket permissions |
| "sops decrypt failed" | Verify , check age key at |
| "docker compose: command not found" | Install Docker Compose v2: |
| SSH failures (remote deploy) | Test , check |
Run
bosun doctor to diagnose most setup issues.
Pirate Mode (Easter Egg)
All commands have nautical aliases. Run
bosun yarr to see them:
| Command | Alias |
|---|---|
| |
| |
| , , |
| |
| |
| |
| |
| |
| |
Key Project Files
When working on Bosun itself:
| Path | Purpose |
|---|---|
| CLI entry point |
| Cobra command definitions (one file per command) |
| YAML rendering engine for service manifests |
| GitOps engine (clone, decrypt, template, deploy) |
| Docker SDK wrapper |
| Configuration loading and project discovery |
| Build, test, lint, CI targets ( for full list) |
Development
make build # Build binary -> build/bosun make test # Run tests make test-cover # Run tests with coverage report make lint # Run linter (requires golangci-lint) make ci # Run full CI pipeline locally via Dagger make run ARGS="doctor" # Run without building
Resource Files
For deeper information on specific topics:
-- Every CLI command with flags, examples, and behavior@resources/commands.md
-- Manifest system: schemas, provisions, stacks, interpolation@resources/manifests.md
-- GitOps pipeline: daemon, reconciliation, webhooks, drift@resources/gitops.md
-- Config file reference, environment variables, project structure@resources/configuration.md