Wrap a test run
June 3, 2026 · View on GitHub
cdviz-collector
keywords: cdevents · sdlc · cicd · observability · devops
A service & CLI to collect SDLC/CI/CD events from any source and dispatch them as CDEvents.
Features
Sources
- Push (inbound): HTTP webhook, HTTP SSE, Kafka, NATS
- Pull (polling): File system, S3,
HTTPpolling (any REST/JSON API —Jenkins,Jira, custom web APIs, …)
Sinks: HTTP webhook · HTTP SSE · File system · Kafka · NATS · PostgreSQL · ClickHouse
Parsers: JSON · JSONL · CSV · XML · YAML · TAP · text / text_line
Transformations: VRL (Vector Remap Language) — reshape, filter, split, enrich events before dispatch
Three CLI modes: connect (long-running server) · send (one-shot or wrap a command) · transform (batch offline)
Use Cases
- Capture CI/CD pipeline events from GitHub Actions, GitLab CI, Jenkins → normalized
CDEvents - Wrap test commands — emit
testsuiterunstarted/finished events with JUnit/TAP/SARIF results - Poll REST APIs (Jenkins, Jira, any HTTP endpoint) and forward changes as
CDEvents - Bridge message streams — consume Kafka/NATS topics, re-publish as
CDEventstoPostgreSQLorClickHouse - Observe deployments & artifacts — track environment changes and artifact publications
- Feed CDviz dashboards with normalized SDLC telemetry
Installation
- Pre-built binaries for Linux and macOS → GitHub Releases
- Docker image →
ghcr.io/cdviz-dev/cdviz-collector - Helm chart for Kubernetes
- Cargo →
cargo install cdviz-collector - Mise →
mise install "github:cdviz-dev/cdviz-collector"
See the Installation Guide.
Getting Started
See the Quick Start Guide for a 5-minute walkthrough.
Architecture
Pipeline: sources → in-memory queue → multiple sinks (fan-out).

Configuration
TOML files with environment variable overrides:
- Example: examples/assets/cdviz-collector.toml
- Base config: src/assets/cdviz-collector.base.toml
- Env override pattern:
CDVIZ_COLLECTOR__SECTION__KEY__VALUE
See the Configuration Guide.
Usage
connect — Run as a Service
Long-running server connecting sources to sinks.
cdviz-collector connect --config cdviz-collector.toml
See connect docs.
send — One-Shot or Wrap a Command
Send JSON directly to a sink, or wrap a command to emit lifecycle CDEvents automatically.
# Send raw JSON
cdviz-collector send --url https://api.example.com/webhook --data '{"test": "value"}'
# Wrap a test run — emits testsuiterun started + finished CDEvents with JUnit results
cdviz-collector send --run testsuiterun-junit -- pytest --junitxml=report.xml
# Wrap any task — emits taskrun started + finished CDEvents
cdviz-collector send --run taskrun -- ./deploy.sh
--run captures exit code and output artifacts, then emits lifecycle CDEvents (started → finished). Built-in run types: testsuiterun-junit, testsuiterun-tap, taskrun.
See send docs.
transform — Batch File Transformation
Offline transformation of local files using configured VRL transformers.
cdviz-collector transform --input ./input --output ./output --transformer-refs github_events
See transform docs.
For all options: cdviz-collector --help or cdviz-collector <command> --help.
Related Projects
| Project | Role |
|---|---|
| CDviz | SDLC observability dashboard — consumes CDEvents produced by this collector |
| send-cdevents | GitHub Action wrapping cdviz-collector send |
| CDEvents spec | CloudEvents-based open standard for SDLC events |
| VRL | Transformation language used by transformers |
AI Assistant Skill
Install the agent skill for help configuring pipelines, writing VRL transformers, mapping CDEvent types, and debugging. Works with Claude Code, GitHub Copilot, Cursor, and other supported agents.
npx skills add cdviz-dev/cdviz-collector
In Claude Code, invoke with /cdviz-collector.
Development
Uses mise for task management:
mise install # Setup environment
mise run build # Build project
mise run test # Run tests
mise run lint # Run linting
mise run ci # Full CI pipeline
See CONTRIBUTING.md for guidelines.
License
Apache Software License 2.0 (ASL-2.0). Commercial support: https://cdviz.dev.
- Built-in scripts (this repo): Apache-2.0
- User-provided scripts (loaded at runtime): any license
See LICENSING.md for exceptions.
Contributing
Contributions welcome — see Contributing Guide and CLA.