Gopher-Pulse is a Go-based observability agent intended to collect metrics from multiple providers and expose them through OpenTelemetry for Prometheus scraping.
The agent is fully operational with self-observability, a health endpoint, CI/CD, and a containerised full-stack deployment option:
- OpenTelemetry Prometheus exporter setup
- GitHub provider for stars and open issue counts
- Synthetic provider for deterministic signal generation
- Self-observability metrics: agent uptime gauge and per-provider error counter
- Health endpoint (
/health) reporting uptime and liveness - Structured JSON logging via
log/slog - Clean context-based shutdown
- Grafana + Prometheus local observability stack via Docker Compose
- Full containerised stack (agent + Prometheus + Grafana) via
docker-compose.full.yml - GitHub Actions CI: test, lint, and +80% coverage gate
.golangci.ymlwith pinned linter set
The project is meant to demonstrate a practical observability agent with an emphasis on:
- Observability-first design using the OpenTelemetry Go SDK
- Resilient collection from external systems
- Extensible provider-based design
- Clean shutdown and predictable runtime behavior
- Testable, maintainable Go code
- ARCHITECTURE.md: System design summary, planned structure, and roadmap
- AGENTS.md: Implementation rules and coding guidance for agent-driven development
- CLAUDE.md: Redirects Claude-style tooling to the canonical implementation guide
make run # build and run (foreground)
make stop # kill the agent by portEndpoints while the agent is running:
- Metrics:
http://localhost:9464/metrics - Health:
http://localhost:9464/health
This starts Prometheus and Grafana in Docker and scrapes the agent running on the host.
make stack-up # start containers in the background
make stack-down # stop and remove containers
make stack-logs # tail container logs- Grafana:
http://localhost:3000— loginadmin/admin- The Gopher-Pulse dashboard is pre-provisioned under Dashboards
- Prometheus:
http://localhost:9090
Builds the agent image and starts all three services in Docker.
make stack-full-up # docker build + compose up
make stack-full-down # stop and remove containersmake build # compile the binary
make test # run all tests
make coverage # run tests with coverage report
make lint # run golangci-lint
make fmt # gofmt + goimports
make clean # remove binary and coverage artifacts
make docker-build # build the Docker image onlyThis project is licensed under the MIT License.
Copyright (c) 2026 Marcus Hightower