CIberus: A Three-Headed ASCII Guardian for Your CI Pipeline
Source: Dev.to
CIberus is a zero‑dependency, terminal‑native DevOps companion that monitors your repository’s health and reflects it as a living ASCII creature – a three‑headed Cerberus that evolves, emotes, and suffers based on real CI signals.
The idea is simple: dashboards get ignored, Slack alerts get muted, and broken builds become background noise. But a visibly suffering three‑headed guardian in your terminal? That gets attention.
Health signals it tracks
- GitHub Actions – run status and conclusion (via
gh run list) - Green streak – length of recent successful CI runs
- Flaky‑test heuristic – count of success/failure transitions
- Code coverage – from
coverage-summary.jsonorlcov.info - Documentation freshness – commits since
README.mdwas last touched
Evolution stages
| Score | Stage | Description |
|---|---|---|
| 0‑39 | Pup | Single head, small, struggling |
| 40‑59 | Sentinel | Two heads, lean, alert |
| 60‑74 | Gatekeeper | Three heads, muscular, gate base |
| 75‑89 | Infernal Guardian | Three fierce heads, horns, armor plating, braille flames |
| 90‑100 | Ascended Cerberus | Three majestic heads, braille wings, aura, pedestal |
Moods
Five moods (calm, alert, worried, angry, critical) change the creature’s facial expression, aura effects, and coloring in real time.
Theme modes
| Theme | Description |
|---|---|
| Mythic | Detailed pixel‑art using Unicode block elements (█▓▒░▀▄▛▜) and braille characters (⣿⣷⢰⢾⣦⣄) for fine detail, fur texture, and flame effects. No emoji – pure terminal‑safe characters. |
| Minimal | Clean ASCII (/\_/\), 5‑8 lines. |
| Corporate | Box‑drawing status panels. Intentionally bland. |
| Chaos | Procedurally corrupts the mythic art with deterministic braille‑noise injection (seeded PRNG) so watch mode doesn’t flicker. |
The mythic art uses a template composition system instead of duplicating full art for every mood. Body templates contain {EYES}, {MOUTH}, {SNOUT}, {AURA}, and {FLAME} tokens that get swapped per mood, keeping the codebase clean while supporting 25 visual combinations (5 stages × 5 moods) from just 5 body templates.
Core Commands
ciberus init # Initialize config
ciberus status # Render current health
ciberus watch --interval 30 # Live monitoring loop
ciberus theme set chaos # Switch visual theme
ciberus copilot run # Non‑interactive Copilot analysis
ciberus copilot chat # Interactive Copilot session with context
Demo
Repository:
Mythic Theme – Ascended Cerberus (calm)
✧
⣠⣴⣿⣿ ✧ ✧ ✧ ⣿⣿⣦⣄
⣸⣿⣿⣿ ┌───┐┌─────┐┌───┐ ⣿⣿⣿⣇
⣸⣿⣿ █▛ ◕‿◕ ▜█▛ ◕‿◕ ▜█▛ ◕‿◕ ▜█ ⣿⣿⣇
⣹⣿⣿ █ ᴖᴖ █ ᴖᴖ █ ᴖᴖ █ ⣿⣿⣏
⣹⣿ █▄ ─ ▄█▄ ─ ▄█▄ ─ ▄█ ⣿⣏
⢹ ██▓══════════════▓██ ⣏
░░░░░ █▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓█ ░░░░░
░░░░░ █▓▓▓▓████████▓▓▓▓█ ░░░░░
░░░░░ █▓▓█▒▒▒▒▒▒▒▒▒▒█▓▓█ ░░░░░
░░░░░ █▒█▒▒ ▒▒ ▒▒█▒█ ░░░░░
░░░░ ▄▄▄▄ ▄▄ ▄▄▄▄ ░░░░
░░ ════════════════════════ ░░
════════════════════════
Mythic Theme – Pup (calm)
✧
┌─────┐
█▀ ◕‿◕ ▀█
█ ᴖᴖ █
█▄ ─ ▄█
███████
█▒█ █▒█
▄▄ ▄▄
Infernal Guardian (angry) – with braille flames
⢰⢾⣿⣷⣆ ⢰⢾⣿⣷⣆ ⢰⢾⣿⣷⣆
✧ ✧ ✧
┌────┐ ┌─────┐ ┌────┐
█▛ ◉_◉ ▜█▛ ◉_◉ ▜█▛ ◉_◉ ▜█
█ ᴖᴖ █ ᴖᴖ █ ᴖᴖ █
█▄ ⨷ ▄█▄ ⨷ ▄█▄ ⨷ ▄█
██▓══════════════▓██
█▓▓▓▓▓▓▓▓▓▓▓▓▓▓█
█▓▓▓▓██████▓▓▓▓█
█▓▓█▒▒▒▒▒▒▒▒█▓▓█
█▒█▒▒ ▒▒█▒▒█▒█
▄▄▄▄ ▄▄▄▄▄▄▄
═══════════════════════
Full status output
CIberus
[creature art rendered in color]
CIberus is calm. The gates are secure.
Stage: Gatekeeper
████████████████░░░░ 78/100
Signals
CI: completed/success
Green streak: 5
Flaky transitions: 1
Coverage: 85%
Docs freshness: 3 commits since README.md
Branch: main
Wins:
+ Latest CI run passed
+ Coverage is 85%
My Experience with GitHub Copilot CLI
CIberus has first‑class Copilot CLI integration baked into its command structure. The ciberus copilot sub‑commands bridge the gap between passive health monitoring and active remediation.
How the integration works
| Command | Description |
|---|---|
ciberus copilot check | Verifies that the standalone copilot CLI is installed and authenticated. This validates the toolchain before attempting any AI‑assisted workflows. |
ciberus copilot prompt | Generates a context‑rich remediation prompt from live repo metrics (branch, CI status, green streak, flaky transitions, coverage, docs freshness) and wraps them into a structured request for prioritized fixes and exact terminal commands. |
ciberus copilot run | Sends that prompt directly to the copilot CLI in non‑interactive mode. CIberus builds the full argument list (-p --stream off -s), handles auth errors gracefully, and prints the AI response. You can pass --model gpt‑5 or --allow-all-tools flags through. |
ciberus copilot chat | Opens an interactive Copilot session (copilot -i ) pre‑seeded with the same repo context, allowing a back‑and‑forth conversation about what to fix. |
The workflow in practice
ciberus status # See health at a glance
ciberus copilot run # Get AI‑powered fix suggestions
# …apply fixes…
ciberus status # Watch the creature evolve
End of cleaned markdown.
Overview
CIberus transforms a general‑purpose assistant into a DevOps‑aware one. Instead of manually providing context (“what’s wrong with my repo?”), CIberus automatically gathers signals, formats the context, and hands it off to the assistant.
- The creature’s mood indicates when to ask for help.
- The Copilot integration tells you exactly what to do.
Development Experience
During the build I used Copilot CLI to:
- Scaffold shell‑command wrappers.
- Debug
gh run listJSON‑parsing edge cases. - Iterate on the scoring algorithm.
The copilot CLI’s ability to understand terminal context proved especially useful for:
- Testing
spawnSyncargument patterns. - Validating ANSI escape sequences across different terminal emulators.
Project Details
- Zero‑dependency: Node.js 18+ only, no external npm packages.
- Testing: All 20 tests pass with the built‑in test runner:
node --test
The project remains lightweight, fully self‑contained, and ready for further DevOps integration.