Skip to content

feat: Add community dashboards #30

Open
mkmeral wants to merge 4 commits intostrands-agents:mainfrom
mkmeral:feat/grafana-dashboards
Open

feat: Add community dashboards #30
mkmeral wants to merge 4 commits intostrands-agents:mainfrom
mkmeral:feat/grafana-dashboards

Conversation

@mkmeral
Copy link
Contributor

@mkmeral mkmeral commented Feb 14, 2026

Please skip the generated json Graphana files. They are auto-generated

community-dashboard: GitHub metrics dashboards for strands-agents

Based on https://github.com/chaynabors/strands/tree/main/strands-grafana by @chaynabors It adds CDK on top pretty much

Adds a unified Grafana + metrics-sync setup for the strands-agents GitHub org, deployable locally via Docker Compose or to AWS via CDK.

What's included

  • Rust CLI (strands-metrics): syncs GitHub data (issues, PRs, stars, commits, CI runs, reviews, comments) into a SQLite database
  • Unified Docker image: Grafana + metrics sync + daily cron (supercronic), anonymous read-only access
  • Pre-built dashboards (Health + Triage) auto-provisioned via SQLite datasource
  • Optional seed DB: bundle a local metrics.db into the image to skip the initial backfill — build succeeds without it (falls back to full sync on first boot)
  • CDK stack: Fargate (0.5 vCPU / 1 GB), EFS persistence, ALB, CloudFront for HTTPS
  • Local dev: GITHUB_TOKEN=ghp_xxx docker compose -f docker/docker-compose.local.yaml up --build

Architecture

CloudFront (HTTPS) → ALB (HTTP:80) → ECS Fargate → Grafana + strands-metrics → EFS (metrics.db)

Key decisions

  • CloudFront for HTTPS instead of ACM+custom domain — no Route 53 hosted zone needed, free *.cloudfront.net cert.
    • HTTPS is needed for iframe
  • Seed DB pattern: COPY docker/data/metrics.d[b] /seed/ — glob makes it optional at build time, entrypoint handles both cases
    • allows you to skip rebuilding. i did not want to include the db in the pr though
  • EFS with RETAIN policy so metrics survive stack redeployments
  • Anonymous viewer-only Grafana with GF_SECURITY_ALLOW_EMBEDDING=true for iframe support in internal tools

Testing

  • Deployed and verified in us-east-1
  • Dashboards load, daily sync runs, CloudFront serves HTTPS correctly
  • Tested local Docker Compose flow
  • CDK synth + TypeScript compile clean

Containerized Agent and others added 4 commits February 13, 2026 21:40
Add strands-grafana directory containing:
- Grafana docker-compose setup with SQLite datasource
- Pre-built health and triage dashboards
- strands-metrics Rust CLI for syncing GitHub org data to SQLite

The metrics CLI fetches issues, PRs, reviews, comments, stars, commits,
and CI workflow runs from the strands-agents org, computes daily aggregate
metrics, and stores everything in a local SQLite database that Grafana
reads for visualization.

Migrated from chaynabors/strands (commit 0fbe13c).

Co-authored-by: chaynabors <chaynabors@users.noreply.github.com>
- Add multi-stage Dockerfile: builds strands-metrics Rust binary, then
  assembles a single Grafana image with the binary, supercronic, and
  provisioning configs baked in.
- Add entrypoint.sh: runs initial backfill if metrics.db is missing,
  sets up daily cron sync at 06:00 UTC via supercronic, then execs
  into Grafana's /run.sh.
- Add docker/docker-compose.local.yaml for local development.
- Add CDK stack (cdk/) deploying to us-west-2 with:
  - VPC (2 AZs, 1 NAT gateway)
  - EFS for persistent metrics.db storage (RETAIN policy)
  - ECS Fargate service (0.5 vCPU, 1 GB)
  - ALB on port 80 with /api/health checks
  - GitHub PAT injected from Secrets Manager
- Update datasource path to /var/lib/grafana/data/metrics.db
- Remove old root docker-compose.yaml (replaced by docker/ setup)
- Rewrite README with local dev + AWS deployment instructions
…upport

- Add CloudFront distribution for HTTPS access (*.cloudfront.net)
- Bundle pre-built metrics.db as seed to avoid long first-boot backfill
- Enable GF_SECURITY_ALLOW_EMBEDDING for iframe support
- Make region configurable (CDK_DEFAULT_REGION / AWS_REGION / us-west-2)
- Fix platform to LINUX_AMD64 for Fargate compatibility
- Add .dockerignore to exclude cdk.out, node_modules, .git
- Rename folder strands-grafana/ → community-dashboard/
- Rename CDK stack: StrandsGrafanaStack → CommunityDashboardStack
- Rename stack file: strands-grafana-stack.ts → community-dashboard-stack.ts
- Update all internal references (package.json, docker-compose, README, logs prefix)
@mkmeral
Copy link
Contributor Author

mkmeral commented Feb 14, 2026

/strands review

yonib05 added a commit to yonib05/devtools that referenced this pull request Feb 15, 2026
…nd AWS deployment

Add a comprehensive GitHub metrics dashboard for the strands-agents org:

- Rust CLI (strands-metrics) that syncs GitHub data (PRs, issues, stars,
  commits, CI runs, reviews, comments) and PyPI/npm download stats into SQLite
- 7 Grafana dashboards organized in 3 folders (General, SDKs, Operations):
  Executive Summary, Health, Python SDK, TypeScript SDK, Evaluations,
  Team Performance, and Triage
- Configurable goal thresholds (goals.yaml) with warning levels
- Team member tracking (team.yaml) for the Team Performance dashboard
- Package download tracking (packages.yaml) from PyPI and npm registries
- Docker setup with supercronic for daily automated sync
- AWS CDK stack (Fargate + EFS + ALB + CloudFront) for production deployment
- GitHub Actions workflow for daily metrics.db updates

Supersedes strands-agents#30 with additional dashboards, download tracking, goal
configuration, team management, and dashboard folder organization.
yonib05 added a commit to yonib05/devtools that referenced this pull request Feb 15, 2026
…nd AWS deployment

Add a comprehensive GitHub metrics dashboard for the strands-agents org:

- Rust CLI (strands-metrics) that syncs GitHub data (PRs, issues, stars,
  commits, CI runs, reviews, comments) and PyPI/npm download stats into SQLite
- 7 Grafana dashboards organized in 3 folders (General, SDKs, Operations):
  Executive Summary, Health, Python SDK, TypeScript SDK, Evaluations,
  Team Performance, and Triage
- Configurable goal thresholds (goals.yaml) with warning levels
- Team member tracking (team.yaml) for the Team Performance dashboard
- Package download tracking (packages.yaml) from PyPI and npm registries
- Docker setup with supercronic for daily automated sync
- AWS CDK stack (Fargate + EFS + ALB + CloudFront) for production deployment
- GitHub Actions workflow for daily metrics.db updates

Builds on the Docker/CDK infrastructure from strands-agents#30 by @mkmeral, adding
dashboard organization, download tracking, goal configuration, and
team management.

Verified: cargo check, cargo clippy (zero warnings), cargo test (7/7 pass).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant