OrchStep for indie hackers
You're the whole team. Ship, back up, and check your numbers from one binary — every chore you repeat written down once, so future-you doesn't relearn it at midnight.
blog/indie-shipWhen you're shipping solo you are the entire ops team, and your CI/CD is a folder of half-remembered shell. The deploy command lives in your bash history. The backup is a thing you mean to automate. Your "metrics dashboard" is a query you re-type. None of it is hard — but every chore you keep in your head is a chore future-you has to reconstruct, usually at midnight, usually right after something broke.
You don't need a platform for this. You need the three or four commands you actually repeat, written down once, in one binary you can run on your laptop or from a cron line.
This post is the solo founder's starter kit: ship, back up, daily digest — one OrchStep workflow.
Your whole ops layer, in one file
ship builds, deploys with a retry and an automatic rollback, then smoke-checks. backup is the thing you point a cron at. digest is your morning numbers.
name: side-project
# One binary, every chore a solo founder repeats: ship, back up, digest.
defaults:
app: my-saas
tier: production
tasks:
# `orchstep run ship`
ship:
steps:
- name: build
func: shell
do: echo "building {{ vars.app }}"
- name: deploy
func: shell
do: echo "deploying {{ vars.app }} to {{ vars.tier }}"
retry:
max_attempts: 3
interval: "1s"
backoff_rate: 2.0
catch:
- name: rollback
func: shell
do: echo "rollback {{ vars.app }}"
- name: smoke
func: shell
do: echo "GET / -> 200"
# `orchstep run backup` (point a cron at this)
backup:
steps:
- name: dump
func: shell
do: echo "dumping database snapshot"
- name: store
func: shell
do: echo "uploaded snapshot to object storage"
# `orchstep run digest`
digest:
steps:
- name: signups
func: shell
do: echo "new signups today - 12"
- name: revenue
func: shell
do: echo "MRR delta +$240"What you get for almost no ceremony:
deployretries and rolls back — three attempts with backoff, and acatch:that reverts if it still fails. That's the safety net you'd never bother hand-rolling for a side project, here in six lines.backupis cron-ready —orchstep run backupis a single line to drop in a crontab; no wrapper script.- It's all discoverable — six weeks from now you won't remember the task names, and you won't have to.
Run it, or forget it and run it anyway
orchstep run ship
orchstep run backup
orchstep run digestCame back to the project after a month and forgot what you'd automated? Don't grep your shell history — ask:
orchstep menuA fuzzy task picker lists everything with single-key hotkeys, and it refuses to hang in a pipeline, so the same backup is safe from cron. Before a risky deploy, preview it:
orchstep run ship --dry-runWhat you gained
| Chore | Before | With OrchStep |
|---|---|---|
| Deploy | a line in bash history | orchstep run ship (retry + rollback) |
| Backups | "I'll automate it later" | orchstep run backup in cron |
| Daily numbers | re-typed query | orchstep run digest |
| Remembering it all | your memory | orchstep menu |
| Safe risky deploys | cross fingers | --dry-run first |
This is the opposite of a heavyweight platform — no daemon, no signup, no YAML sprawl, one binary you can delete by removing a file. If your whole project is a single deploy command, you don't need it. The moment you have three chores you keep relearning, this turns them into something future-you can just run.
Where to go next
- Quick Start — your first workflow in two minutes
- Scheduled & Repeating Jobs — wiring tasks into cron or CI
- Error Handling —
retry,catch,finally - Previewing with Dry Run — see a deploy before it runs
Write down the three commands you keep retyping, run orchstep menu to find them next month, and stop reconstructing your own ops at midnight.
curl -fsSL https://orchstep.dev/install.sh | sh