GREEN · RED · BLUE PACKAGE SKILL · VULTR · WAVEHOUSE

WaveHouse Package Skill

A reproducible Green, Red, and Blue workflow for a public WaveHouse analytics demo: ClickHouse, the WaveHouse real-time gateway, and the project's live GitHub stats dashboard, behind Caddy and Cloudflare on a guarded Vultr instance.

Same-origin demo boundary. Caddy serves the static dashboard and proxies /v1 to the WaveHouse gateway on one host, so the page's SDK client needs no configuration. Only HTTPS and key-only SSH are public; ingest and admin require a server-generated operator key.

Quick start

npx skills add getcolors/wavehouse
cp .agents/skills/package-wavehouse-green/green ./green
chmod +x green
./green build
./green create --dry-run

Equivalent Red and Blue skills ship red and blue launchers.

Build renders reproducible output and dry-run walks the workflow without provider side effects. Real creation and deletion require explicit authorization.

Architecture

Infrastructure

OpenTofu creates one Ubuntu 24.04 Vultr instance and a firewall exposing 22, 80, and 443, plus a proxied Cloudflare A record for the dashboard host.

Runtime

Ansible converges a Docker Compose stack: ClickHouse, the upstream WaveHouse gateway (loopback-published for host services), and Caddy with automatic TLS.

Data

A one-shot systemd backfill loads the configured repository's history from the GitHub API; a poller ingests new events and completed CI runs every 60 seconds.

Dashboard

The upstream stats page, served as published: 19 public named pipes power the charts and the live feed streams over Server-Sent Events.

Desired state and lifecycle

Non-secret configuration belongs only in colors.yml: the dashboard host, the tracked owner/name repository, poll interval, container images, and the Vultr and state-backend boundary. The complete schema is in the configuration reference.

./green build
./green create --dry-run
./green create
./green delete

Acceptance and operations

Real creation ends by checking public gateway health, the served dashboard assets, and that gh_summary reports backfilled events.

ssh root@SERVER 'cd /opt/wavehouse && docker compose ps'
ssh root@SERVER 'journalctl -u wavehouse-poller --since -1h'
ssh root@SERVER 'systemctl start wavehouse-backfill'
Demo, not production analytics. Data is reconstructed from the GitHub REST API, so webhook-only event types are absent and the publish count is a heuristic. State lives in Docker volumes on one instance with no backups — rebuild by recreating; the backfill restores history from GitHub.

Development and source

bb test
bb golden
./scripts/launcher.sh

Source on GitHub. Review every golden diff before accepting it.