opsen

Financial infrastructure for software engineering

opsen prices every seat, licence, CI minute and agent token against the code your team ships. Every week, opsen removes the spend that ships nothing. You pay from the savings.

Free audit. Read-only until you approve a change.

GitHub seats$8,652−$1,029GitHub Copilot$7,402−$1,406GitHub Actions$6,940−$799Claude Code$11,206GitLab, Jira, JetBrainsand every other platform412 people$83.01each128 repositories$267.19each1,859 pull requests$18.40eachPaid for, not used$3,234 a month$8,652−$1,029$7,402−$1,406$6,940−$799$11,206$83.01per person$267.19per repo$18.40per PR$3,234not used
GitHub seats$8,652−$1,029
GitHub Copilot$7,402−$1,406
GitHub Actions$6,940−$799
Claude Code$11,206
Paid for, not used$3,234 a month
Engineering spend$34,200a month
Hover a source to follow its money.Swipe to follow the money.
Reads spend from
ActionsGitLabAzure DevOpsJiraConfluenceBitbucketJetBrainsCircleCI

Engineering became a variable cost.

Seats were a fixed price per person. Copilot, Actions and coding agents bill by use, and use grows with every engineer who leans on them.

2024202520262028
Seats were the billA fixed price per person, known in advance.
SeatsUsage
Copilot bills by usagePremium requests and AI credits, billed by the token.
SeatsUsageSource
Usage passes seatsAgents report what each engineer spends, per day.
SeatsUsageSource
Every pull request has a priceSeat time, CI minutes and agent spend, per change. opsen measures it and takes out what nobody uses.
SeatsUsage

Every saving, one approval away.

46%of the software licences the average company pays for go unused.

Aacme Search engineers, repositories, pull requests⌘K Last 12 months

Engineering spend

Synced 4 min ago
Engineering spend$34,200+8.2% vs Sep
Paid for, not used$3,2349.5% of spend
Per paid seat$83.01412 GitHub seats
Per pull request$18.401,859 merged
Spend by sourceGitHub seatsCopilotActionsClaude Code
DecFebAprJunAugOct
Findings$3,234 a month
Copilot seats unused 30 days74 seats$1,406
Runs made obsolete by a newer push9 workflows$611
Seats with no activity in 90 days38 members$798
Invitations holding a seat11 invites$231

Ledger

Line, OctoberMonthNot used
GitHub Enterprise412 seats at $21 list$8,652$1,029 unused
Copilot Business298 seats at $19 list$5,662$1,406 unused
Copilot premium requestsBilled per request over the allowance$1,740
Actions, Linux runnersBilled per minute$4,210$611 unused
Actions, larger runners8 and 16 core$2,730$188 unused
Claude Code41 engineers, Anthropic Admin API$11,206
Total$34,200$3,234 paid for and not used

Recommendations

Not used $3,234 a month
Reclaim 74 idle Copilot seatsNo activity in 30 days$1,406a month
Cancel superseded runs in 9 workflowsA fix pull request per repository$611a month
Review 38 dormant membersNo activity in 90 days$798a month
Cancel 11 stale invitationsPending for more than 30 days$231a month
Add timeouts to 3 workflowsJobs that hang until the 6 hour limit$188a month
Every recommendation applied. $3,234 a month back.

Attribution

Claude Code, last 30 days
EngineerRepository
Ppriyapayments$2,14061$35.08
Mmarcoweb$1,87088$21.25
Aaliceapi$96034$28.24
Ddev-17mobile-ios$61022$27.73
Ssam-kinfra$54031$17.42
Jjleeapi$4109$45.56

Pull requests

Seat timeCI minutesAgent
#4182 Migrate billing webhooks to the new queuepriya$42.60
#4177 Flaky checkout test: retry with backoffmarco$19.40
#4169 Upgrade React Native to 0.76dev-17$39.50
#4160 Add audit log exportalice$24.30
#4151 Docs: rate limitsjlee$4.10

What each merged pull request cost, from seat time, CI minutes and agent spend.

Budgets

Alert at 90%
All spend$34,200 of $40,000
GitHub seats$8,652 of $9,000
Copilot$7,402 of $7,000
Coding agents$11,206 of $12,000
Copilot is over budgetOwners were emailed after this week's audit.

Exports

Report JSON and read-only links
$ curl -s opsen.dev/r/$TOKEN.json | jq .annual_waste38808$ curl -s opsen.dev/r/$TOKEN.json | jq '.findings[].id'"copilot.idle""actions.superseded""seats.dormant_member""seats.stale_invitation"

Savings that keep landing.

Without opsen, waste piles up week after week. With it, every approved change takes a step out, and the weekly audit catches new waste the week it appears.

Savings in effect$0/mo
Saved to date$0
Week0
$30k$32k$34k$36kInstallWeek 2Week 4Week 6Week 8Week 10Week 12
Reclaimed 74 idle Copilot seatsApproved by sam-k−$1,406/mo
Fix #418 mergedSuperseded CI runs cancelled in 9 workflows−$611/mo
Cancelled 11 stale invitationsSeats freed on GitHub Enterprise−$231/mo
Fix #421 mergedTimeouts on jobs that hung for hours−$188/mo
Disabled 2 dormant schedulesNo push in 120 days−$96/mo
Caught 6 new idle Copilot seatsFound by the weekly audit, reclaimed−$114/mo
Caught a new runner left on 16 coresFix #437 moved it to 4−$342/mo
Without opsenWith opsenSaved

Keep scrolling to run twelve weeks.

Every figure shows its working.

Finance can check any number without asking engineering: the rule, what was read, the price and the sum.

Idle Copilot seats$0a month
RuleNo editor activity in 30 days, and not assigned in the last 7
ReadGET /orgs/acme/copilot/billing/seats · 298 seats · last_activity_at
Found74 seats, from jlee (41 days) to mkt-bot (never)
PriceCopilot Business, $19 a seat a month, GitHub list price read 2026-10-22
Sum74 × $19 = $1,406 a month
Superseded CI runs$0a month
RuleA run on a branch that a newer push replaced before it finished
ReadGET /repos/acme/*/actions/runs · 8,240 runs in 30 days · job timings
Found1,212 runs in 9 workflows, 101,800 billable minutes
PriceLinux 2-core at $0.006 a minute, from your October billing usage
Sum101,800 × $0.006 = $611 a month
Stale invitations$0a month
RuleAn invitation pending for more than 30 days holds a paid seat
ReadGET /orgs/acme/invitations · 11 pending
Found11 invitations, oldest sent 94 days ago
PriceGitHub Enterprise, $21 a seat a month, list price
Sum11 × $21 = $231 a month

Install once. Save every week.

1Install

Install the GitHub App.

Nine read permissions, each one documented. Never your source code.

2Audit

See where it goes.

Seats, Copilot, Actions and agents, priced per engineer and repository, from the first sync.

3Act

Fix it, or let it run itself.

Fix in one click, or turn on autopilot: each person is asked first, idle seats go after a week, and CI fixes arrive as pull requests.

4Keep it down

Keep cutting, every week.

opsen re-audits weekly, catches new waste as it appears, and shows finance what it saved.

github.com/apps/opsen-dev/installations/new
Install opsen-devon acme · All repositories
Repository and organisation permissions
MembersReadWho holds a seat
Organization planReadWhat a seat costs you
Copilot businessReadSeat activity
ActionsReadRuns and minutes
WorkflowsReadFind the fix
Pull requestsWriteOnly to open fix PRs
InstallCancel

No access to code contents. Uninstall at any time from GitHub settings.

Auditing acme
Members and invitations412 members · 11 invitations
Copilot seats298 seats · 74 idle 30 days
Workflow runs8,240 runs in 30 days
Job timings1,212 runs priced
Billing usageOctober · enhanced billing
Claude Code41 engineers · Admin API
Engineering spend$0
Paid for, not used$0
API calls0
OpenCancel superseded runs on new pushes#418 · opsen-dev wants to merge into main
.github/workflows/ci.yml +4
 on: [pull_request]+concurrency:+  group: ci-${{ github.head_ref }}+  cancel-in-progress: true jobs:   test:+    timeout-minutes: 30
actionlintpassed
CI / testpassed
Saves $611 a month across 9 workflowsMerged
Reclaimed 74 Copilot seats · $1,406 a monthUndo
Read-onlyacme · engineering spendShared by sam-k · updated weekly
Paid for, not used, a year$0
Recovered since install$0
Sep 1Oct 20

Price your stack.

What your engineering tools cost at list price.

Start from
Your engineering bill at list price $0a month · $0 a year
GitHub seats$0
Copilot$0
Actions$0
Claude Code$0
Per engineer$0

Published list prices, read 2026-10-22. Linux runners. The audit shows which part of this nobody uses.

Read-only until an owner approves.

opsen reads billing and activity. Never your code.

Nothing changes until an owner approves it or switches on autopilot, which asks each person before any seat goes. Every change is a pull request or a reversible switch.

Read the security model→
Nothing changes until you approve
No source code
Your roles
Every change logged
KMS encryption
Fully reversible

Six guarantees, read out in turn.

Built for enterprise.

Nothing changes until an owner approves, with the controls your security review asks for.

Open the trust centre→

Your numbers, wherever you need them.

Every report is JSON at a stable URL. Pipe it to a warehouse, a dashboard or an agent. Report JSON reference

terminal
$ 
{  "monthly_waste": 3234.12,  "findings": [    { "id": "copilot.idle", "monthly_usd": 1406.00 },    { "id": "seats.dormant_member", "monthly_usd": 798.00 },    { "id": "actions.superseded", "monthly_usd": 611.04 },    { "id": "seats.stale_invitation", "monthly_usd": 231.00 },    { "id": "actions.no_timeout", "monthly_usd": 188.08 }  ]}
Warehouseselect id, monthly_usd from opsen.findings
idmonthly_usd
copilot.idle1,406.00
seats.dormant_member798.00
actions.superseded611.04
seats.stale_invitation231.00
actions.no_timeout188.08
DashboardWaste by category, this month
Copilot$1,406
Seats$1,029
Actions$799
Agentreading report.json

The largest saving this month is reclaiming 74 idle Copilot seats, $1,406 a month. Next are 38 dormant members at $798.

Ways opsen plugs into your workflow.

Find the waste in opsen. Fix it from the editor you already use.

Stop paying for what nobody uses.

opsen re-audits every week and keeps taking it out. The audit is free.