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
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.
$ @burnrate /forecast
✓ loaded 28 days of usage data
✓ raw reports preserved in raw_reports
→ projected month-end burn: 78%
→ risk: within budget
Reports, forecasts, and audit history. Nothing more.
Keep the source payload before parsing. If the schema changes, your history stays intact.
The core jobs BurnRate does with your local data.
DATABASE_URLRun forecasts, classify users, or check budget sync from chat using plain language.
These are the same commands the CLI uses. Pick Postgres or SQLite.
$ git clone https://github.com/mhenke/BurnRate.git
$ cd BurnRate
$ npm install
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 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
History is stored raw, then parsed and aggregated in separate steps.
The same settings the runtime actually reads.
| Key | Purpose |
|---|---|
DATABASE_URL | PostgreSQL or SQLite connection string |
GITHUB_TOKEN | GitHub PAT with read:org scope |
GITHUB_ENTERPRISE | Target enterprise slug |
GITHUB_ORG | Target organization slug |
SLACK_WEBHOOK_URL | Optional budget alert destination |
teams:
- name: Platform Engineering
value_tier: extreme
- name: Data Science
value_tier: high
- name: Internal Tools
value_tier: medium
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.
| CLI Command | Copilot Agent Skill | Description |
|---|---|---|
npm run ingest | @burnrate /etl | Fetch and store today's Copilot reports |
npm run forecast | @burnrate /forecast | Generate burn forecasts from stored data |
npm run classify | @burnrate /classify | Classify users by consumption/value tiers |
npm run budget-sync | @burnrate /budget-sync | Sync budget limits and send alerts |
npm test | None | Run the test suite |