Skip to content

See where the effort goes

Forge activity tells you what happened. This tells you where your people were while it happened: which projects absorbed them, which rest on one person, and how much of the work an agent wrote.

Ospobox counts two things it can see, participation and volume, and states which on every figure. It does not measure time, or estimate it.

Portfolio units

A unit is a project, or a repository belonging to no project. Everything on this page is reported per unit, so the first decision is whether to group repositories at all.

Under Portfolio > Projects you can create a project and assign repositories to it. A project may span organizations, so it is more than a second name for one. A repository belongs to at most one project, and one in none is its own unit, so an account that defines no project still gets every figure at repository granularity.

Sunsetting a project keeps its history and takes it out of the aggregates.

What each unit reports

Column Counts
People Distinct people who authored work in the period
Internal Of those, the ones matching your domains
Agents Of those, coding agents
Commits Commits that landed in the period
Cost See below; empty until you configure it

Every row carries the basis of its own figures beneath it, in the same style as a health score's components: what was counted, over how long.

Participation is a floor

The page says so when commit authors have not yet been resolved to people. Resolution runs after each sync, and until it has, the counts are lower than the truth.

Continuity risk

A unit where exactly one internal person was active during the period is flagged, and the flag names them.

The name is there because a handover conversation needs somewhere to start. It says nothing about the person or their work: this is a fact about the project's exposure.

A unit with no internal contributor at all is not flagged, because an entirely external project is a different condition and treating it as continuity risk would be noise.

AI contribution

The share of commits crediting a coding agent as co-author.

That share is a floor. It reads co-authorship trailers, so work an agent did without being credited is invisible. Reported per project, never per contributor.

Agent work also changes how a repository scores. The health composite counts agent commits as activity, because a project an agent works on is being worked on, but excludes agents from the community factor: an agent committing daily makes a repository active without making it a community. Both explanations say which treatment they applied.

Cost

Optional throughout. With no figures entered, every other number on the page still works.

Set a loaded cost per person under Settings > Cost inputs. It applies to internal contributors, since an outside contributor is not on your payroll.

How a cost reaches a project. A person's cost is prorated to the period and split equally across the units they were active in.

That split is deliberately crude. Participation records presence, not proportion: Ospobox knows someone worked on two projects this month and does not know the ratio. Weighting the split by commit volume would make the number look more precise while resting on a proxy this product declines to use. The basis line beneath each figure says which rule produced it, so you can disagree with it.

Cost is reported per project and per portfolio. It is never shown, exported, or sent in a report against a person's name.

Role views

Four report compositions ship, each a named set of sections for one audience:

View Answers
Engineering leadership What shipped, where the people were, what rests on one person
Open source program office Contribution and release activity, inside and outside
Security and risk Health, single-maintainer exposure, agent-authored share
Finance What the portfolio consumed, with each figure's basis

Build one from Reports. Sections are plugins, so a package of your own adds to this list without changing Ospobox: see Extension points.

Over the API

curl -H "Authorization: Bearer $TOKEN" \
    "http://localhost:8000/api/portfolio?days=30"

/api/portfolio/ai-contribution returns the agent share, /api/portfolio/views the compositions, and /api/projects creates and populates projects. See the API reference.

What this does not do

Ospobox assesses work and attributes it. It does not evaluate people.

Ospobox will not score a person's productivity, rank contributors against each other, or ask a model to judge a developer. Contributors are listed alphabetically, never by output. That boundary lives in the product's vision, so it will not move feature by feature.