Whoosh...
and deployed.
A single-binary, no-deps, deployment tool.
# single binary# no agent on targets# SSH or local# tasks & hooks# rollback
Features
Everything in one binary
Single binary, no agent
One static Go binary runs from your laptop or CI. Targets need only git, tar and a POSIX shell - there is no daemon, agent or runtime to install on them.
Separated releases
Timestamped releases under deploy_to, shared files/dirs symlinked into each, an atomic `current` swap, pruning, and one-command rollback.
SSH or local
Run over a real SSH connection (golang.org/x/crypto/ssh, no openssh needed) or directly on the box with local: true. Both transports mix freely in one stage.
Tasks & hooks
A cmds, scripts, deps, roles, per-task env - wired to lifecycle phases with before/after hooks.
Templating built in
Go templates with sprig in commands and scripts, and the whole deploy context exported to the shell as $RELEASE_PATH, $HOST, $STAGE, … too.
Dynamic inventory & AWS
A bundled aws plugin discovers EC2 hosts from tags, bakes AMIs, rolls ASGs, and renders dotenv files from SSM Parameter Store or Secrets Manager.
Secret redaction
Command echoes, host output, dry-run plans and logs are scrubbed for known secret formats, mark any value sensitive to mask it everywhere whoosh prints.
Safe by default
Offline validate, --dry-run plans that touch no host, host-key verification, a per-stage deploy lock, and a configurable unreachable-host policy.
All sections
Browse the manual
Overview
What Whoosh is, how a deploy works, and what the single binary does when you run it.
→
Installation
Install whoosh - from source, from a GitHub release, or as a custom binary with your own plugins.
→
Usage
The CLI: commands, global flags, targeting, dry-run, the deploy lifecycle, rollback, concurrency, locking, logging and secret masking.
→
Configuration
The Deployfile.yml + deploy/<stage>.yml reference - every field, the merge model, hosts, tasks, scripts, hooks, templating, and plugins.
→
Developing
Developing with whoosh: the Deployfile, per-stage files, the merge model, and what to configure.
→
Examples
Worked, self-contained Deployfile configurations - smallest to richest. cd into one and run whoosh <stage> <action>.
→