DEV Community

Cover image for CIberus: A Three-Headed ASCII Guardian for Your CI Pipeline
Shingirayi Innocent Mandebvu
Shingirayi Innocent Mandebvu

Posted on

CIberus: A Three-Headed ASCII Guardian for Your CI Pipeline

GitHub Copilot CLI Challenge Submission

What I Built

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 from recent CI history
  • Flaky test heuristic (success/failure transition count)
  • Code coverage from coverage-summary.json or lcov.info
  • Documentation freshness (commits since README.md was last touched)

5 evolution stages that reflect overall repo health:

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

5 moods (calm, alert, worried, angry, critical) change the creature's facial expression, aura effects, and coloring in real time.

4 theme modes:

  • 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 x 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
Enter fullscreen mode Exit fullscreen mode

Demo

Repository: github.com/shingy/CIberus

Mythic Theme -- Ascended Cerberus (calm)

               ✧
   ⣠⣴⣿⣿    ✧  ✧  ✧    ⣿⣿⣦⣄
  ⣸⣿⣿⣿  ┌───┐┌─────┐┌───┐  ⣿⣿⣿⣇
  ⣸⣿⣿  █▛ ◕‿◕ ▜█▛ ◕‿◕ ▜█▛ ◕‿◕ ▜█  ⣿⣿⣇
  ⣹⣿⣿  █  ᴖᴖ  █  ᴖᴖ  █  ᴖᴖ  █  ⣿⣿⣏
   ⣹⣿  █▄ ─  ▄█▄ ─  ▄█▄ ─  ▄█  ⣿⣏
    ⢹   ██▓══════════════▓██   ⣏
  ░░░░░ █▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓█ ░░░░░
  ░░░░░ █▓▓▓▓████████▓▓▓▓█ ░░░░░
  ░░░░░ █▓▓█▒▒▒▒▒▒▒▒▒▒█▓▓█ ░░░░░
  ░░░░░ █▒█▒▒   ▒▒   ▒▒█▒█ ░░░░░
  ░░░░ ▄▄▄▄     ▄▄     ▄▄▄▄ ░░░░
  ░░ ════════════════════════ ░░
     ════════════════════════
Enter fullscreen mode Exit fullscreen mode

Mythic Theme -- Pup (calm)

       ✧
      ┌─────┐
     █▀ ◕‿◕ ▀█
     █  ᴖᴖ  █
     █▄ ─  ▄█
      ███████
      █▒█  █▒█
      ▄▄    ▄▄
Enter fullscreen mode Exit fullscreen mode

Infernal Guardian (angry) -- with braille flames

     ⢰⢾⣿⣷⣆     ⢰⢾⣿⣷⣆     ⢰⢾⣿⣷⣆
      ✧        ✧        ✧
     ┌────┐  ┌─────┐  ┌────┐
    █▛ ◉_◉ ▜█▛ ◉_◉ ▜█▛ ◉_◉ ▜█
    █  ᴖᴖ  █  ᴖᴖ  █  ᴖᴖ  █
    █▄ ⨷  ▄█▄ ⨷  ▄█▄ ⨷  ▄█
     ██▓══════════════▓██
       █▓▓▓▓▓▓▓▓▓▓▓▓▓▓█
       █▓▓▓▓██████▓▓▓▓█
       █▓▓█▒▒▒▒▒▒▒▒█▓▓█
       █▒█▒▒    ▒▒█▒▒█▒█
      ▄▄▄▄      ▄▄▄▄▄▄▄
    ═══════════════════════
Enter fullscreen mode Exit fullscreen mode

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%
Enter fullscreen mode Exit fullscreen mode

My Experience with GitHub Copilot CLI

CIberus has first-class Copilot CLI integration baked into its command structure. The ciberus copilot subcommands bridge the gap between passive health monitoring and active remediation:

How the integration works

  1. ciberus copilot check -- verifies the standalone copilot CLI is installed and authenticated. This validates the toolchain before attempting any AI-assisted workflows.

  2. ciberus copilot prompt -- generates a context-rich remediation prompt from live repo metrics. It pulls the current branch, CI status, green streak, flaky transitions, coverage percentage, and docs freshness, then wraps them into a structured prompt asking for prioritized fixes and exact terminal commands.

  3. ciberus copilot run -- sends that prompt directly to copilot CLI in non-interactive mode. CIberus builds the full argument list (-p <prompt> --stream off -s), handles auth errors gracefully, and prints the AI response. You can pass --model gpt-5 or --allow-all-tools flags through.

  4. ciberus copilot chat -- opens an interactive Copilot session (copilot -i <prompt>) pre-seeded with the same repo context, so you can have a back-and-forth conversation about what to fix.

The workflow in practice

The typical loop is:

ciberus status           # See health at a glance
ciberus copilot run      # Get AI-powered fix suggestions
# ...apply fixes...
ciberus status           # Watch the creature evolve
Enter fullscreen mode Exit fullscreen mode

This turns Copilot CLI from a general-purpose assistant into a DevOps-aware one. Instead of asking "what's wrong with my repo?" and providing context manually, CIberus collects the signals, formats the context, and hands it off. The creature's mood tells you when to ask for help; the Copilot integration tells you what to do about it.

Development experience

During the build itself, I used Copilot CLI to scaffold shell command wrappers, debug gh run list JSON parsing edge cases, and iterate on the scoring algorithm. The copilot CLI's ability to understand terminal context made it particularly useful for testing spawnSync argument patterns and validating ANSI escape sequences across different terminal emulators.

The project is zero-dependency (Node.js 18+ only, no npm packages) and all 20 tests pass with node --test.

Top comments (0)