⟳ S I S Y P H U S
╴╷
────
────
─────
────
─────
────
────
─────
────
O ─────
|\ ────
/ \● ────
─────
────
─────
────
└────
[█████░░░░░░░░░░░░░░░] ↗ ascending Ctrl+C to accept fate
A meditative terminal animation. Zero config. Pure Go. Infinitely looping.
"One must imagine Sisyphus happy." — Albert Camus, The Myth of Sisyphus (1942)
curl -fsSL https://raw.githubusercontent.com/ignavan39/sisyphus/master/install.sh | shThat's it. The script auto-detects your OS and architecture, downloads the right binary from the latest release, and drops it in /usr/local/bin.
Install options
# Install a specific version
SISYPHUS_VERSION=v1.2.0 curl -fsSL https://raw.githubusercontent.com/ignavan39/sisyphus/master/install.sh | sh
# Install to a custom directory (no sudo needed)
SISYPHUS_DIR=~/.local/bin curl -fsSL https://raw.githubusercontent.com/ignavan39/sisyphus/master/install.sh | sh
# Disable colored output
NO_COLOR=1 curl -fsSL https://raw.githubusercontent.com/ignavan39/sisyphus/master/install.sh | shgo install github.com/ignavan39/sisyphus/cmd/sisyphus@latestbrew install ignavan39/tap/sisyphusgit clone https://github.com/ignavan39/sisyphus
cd sisyphus
make installDownload from Releases — binaries for Linux, macOS, and Windows (amd64 + arm64), plus checksums.txt.
rm $(which sisyphus)sisyphus # 12 fps — default, works everywhere
sisyphus -fps 24 # silky smooth
sisyphus -fps 5 # slow and contemplative
sisyphus -version # print version| Flag | Default | Description |
|---|---|---|
-fps |
12 |
Target frame rate (1–60) |
-version |
— | Print version and exit |
Press Ctrl+C to exit. You'll receive a parting quote.
sisyphus renders a real-time ASCII animation of Sisyphus pushing his boulder up a straight slope. At the top, the boulder rolls back down. Sisyphus follows. Repeat forever.
The slope is a straight diagonal line — no curves, no tricks. Just a hill.
The boulder accelerates as it rolls back down. Sisyphus slows slightly as he tires near the top. At the peak, a quote from Camus flashes for two seconds before the drop.
It is completely useless. That is the point.
- ⛰ Straight diagonal slope — a proper hill, not a sine wave
- 🪨 Realistic acceleration — boulder speeds up on the way down
- 💬 Rotating Camus quotes at the summit
- 🎨 ANSI colors with graceful fallback
- ↔ Live resize — reshape your window at will
- 🪶 Single binary, ~200 lines of logic — one dependency (
x/term)
sisyphus/
├── cmd/sisyphus/
│ └── main.go # flags, signal handling, entry point
├── internal/
│ ├── animation/
│ │ ├── state.go # phase machine: Pushing → Summit → Rolling
│ │ ├── render.go # pure render: Frame(state, w, h) → stdout
│ │ ├── sprites.go # ASCII art, boulder frames, Camus quotes
│ │ └── run.go # main loop
│ └── terminal/
│ └── terminal.go # Size, Move, Color, HideCursor…
├── .github/workflows/
│ ├── ci.yml # build + test on every push / PR
│ └── release.yml # cross-compile + GitHub Release on tag push
├── install.sh # one-line installer
└── Makefile # build / install / cross / clean
make build # → ./sisyphus (current platform)
make install # → $GOPATH/bin/sisyphus
make test # go test ./...
make cross # → dist/ (Linux + macOS + Windows, amd64 + arm64)
make clean # remove ./sisyphus and ./dist/git tag v1.0.0
git push origin v1.0.0
# GitHub Actions cross-compiles 5 targets, generates checksums, publishes releaseOr with make:
make release VERSION=v1.0.0Issues and pull requests are welcome. Some ideas:
-
NO_COLOR/--no-colorsupport - Configurable slope angle via flag
- Multiple slope profiles
- Windows ConHost compatibility
- A
--quotesflag — Camus only, no animation - Homebrew formula
Please open an issue before starting large changes.
"The struggle itself toward the heights is enough to fill a man's heart."
If this made you smile — or made you think — a ⭐ goes a long way.