Know your Copilot burn before GitHub does.

BurnRate pulls your daily Copilot usage from GitHub, keeps the raw JSON for audit history, and forecasts where your budget will land at month end. It watches. It does not enforce.

  • Raw payloads are stored before anything is parsed
  • Runs on PostgreSQL in production or SQLite locally
  • Ask questions through Copilot Agent Skills
Sample run
$ @burnrate /forecast
✓ loaded 28 days of usage data
✓ raw reports preserved in raw_reports
→ projected month-end burn: 78%
→ risk: within budget

For engineers watching Copilot spend.

Reports, forecasts, and audit history. Nothing more.

Raw-first storage

Keep the source payload before parsing. If the schema changes, your history stays intact.

  • Raw JSON is kept exactly as GitHub sent it
  • Parsing happens separately from storage

Capabilities

The core jobs BurnRate does with your local data.

  • Forecasts: project month-end burn from actual usage
  • Budget alerts: get notified before you hit limits, without writing to GitHub
  • Dual databases: PostgreSQL in production, SQLite locally, chosen from DATABASE_URL

Copilot Agent Skills

Run forecasts, classify users, or check budget sync from chat using plain language.

  • Chat commands on demand
  • They call the same CLI scripts you use

Install, configure, run.

These are the same commands the CLI uses. Pick Postgres or SQLite.

Install

$ git clone https://github.com/mhenke/BurnRate.git
$ cd BurnRate
$ npm install

Configure

DATABASE_URL=postgresql://user:pass@localhost:5432/burnrate
GITHUB_TOKEN=ghp_xxx
GITHUB_ENTERPRISE=my-company
GITHUB_ORG=my-org

Create a GitHub Personal Access Token (classic) with read:org permissions to fetch Copilot reports.

Run

# Run migrations to set up database tables
$ npm run migrate
# Ingest Copilot usage reports from GitHub API
$ npm run ingest
# Generate burn forecasts and budget projections
$ npm run forecast

From GitHub API to forecast.

History is stored raw, then parsed and aggregated in separate steps.

  1. 1GitHub APIDaily Copilot usage reports
  2. 2ETLRaw storage, parsing, normalization
  3. 3DatabasePostgreSQL or SQLite tables
  4. 4ForecastUsage trend and month-end burn
  5. 5AlertsBudget threshold notifications

Few env vars, one config file.

The same settings the runtime actually reads.

Environment variables

Environment variables for configuring BurnRate
KeyPurpose
DATABASE_URLPostgreSQL or SQLite connection string
GITHUB_TOKENGitHub PAT with read:org scope
GITHUB_ENTERPRISETarget enterprise slug
GITHUB_ORGTarget organization slug
SLACK_WEBHOOK_URLOptional budget alert destination

Value tiers

teams:
  - name: Platform Engineering
    value_tier: extreme
  - name: Data Science
    value_tier: high
  - name: Internal Tools
    value_tier: medium

Observe-only, local-first security

Your GITHUB_TOKEN and Copilot usage data stay inside your environment. They go to your self-hosted database, not to us. BurnRate does not send tokens or raw logs anywhere else, and it never writes back to GitHub.

Small CLI, small chat surface.

Available BurnRate CLI commands and their corresponding Copilot Agent Skills
CLI CommandCopilot Agent SkillDescription
npm run ingest@burnrate /etlFetch and store today's Copilot reports
npm run forecast@burnrate /forecastGenerate burn forecasts from stored data
npm run classify@burnrate /classifyClassify users by consumption/value tiers
npm run budget-sync@burnrate /budget-syncSync budget limits and send alerts
npm testNoneRun the test suite