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.
/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
- Supply credentials only as matching
COLORS_PAR_*environment variables. - Never export
COLORS_PAR_PROFILEor edit generated.colors/. - Keep
compute-prevent-destroy: true; deletion remains separately guarded. - The GitHub token needs read-only public-repository access and nothing more.
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'
Development and source
bb test
bb golden
./scripts/launcher.sh
Source on GitHub. Review every golden diff before accepting it.