SDK-services inactive list shows "today" cost, not lifetime spend (split-zones dashboard)
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Newbie friendliness
- 72/100
- Issue type
- Bug
- Clarity
- Clearly specified
- Activity status
- Quiet
- Tech stack
- html, python
- Domain
- backend, frontend, observability
Research direction
Start in tokenjam/api/routes/status.py at _build_sdk_services and the last-seen query already used in sdk_service_series. Add an all-time lifetime_cost (SUM(cost_usd) over the agent's spans) on each sdk_services entry. Update the inactive list in tokenjam/ui/index.html (SdkServicesPanel) to show that lifetime spend or an honest window label. Done when a dormant service shows accumulated spend and a test covers that lifetime cost.
Written by the indexing model from the issue text.
Description
Severity: Low
Where: tokenjam/api/routes/status.py (_build_sdk_services → sdk_services[] payload) + tokenjam/ui/index.html (SdkServicesPanel inactive list)
Observed: The split-zones Status dashboard renders each inactive SDK service's cost from today_cost / window_cost, labeled "today". The design specifies "lifetime $X total". Because the sdk_services payload ships no all-time cost, a long_dormant service last seen days ago shows $0.00 today — misleading for a service whose signal is its accumulated spend. The live/panel services are fine (their cost/min series is windowed by design); this only affects the inactive list's cost column.
Fix direction: Add an all-time lifetime_cost (SUM(cost_usd) over all of the agent's spans) to each sdk_services entry and render it in the inactive list (or, if a lifetime sum is too heavy, relabel the column honestly to the window it represents). Bind the aggregate to the same last-seen query already run in sdk_service_series.
Done when: inactive SDK services display accumulated lifetime spend (matching the design) or an honest window label; a test covers a dormant service's lifetime cost.
- Dominant language
- Python
- Stars
- 122
- Forks
- 35
- Avg merge
- 1d 18h
- Merged PRs (30d)
- 8
Getting set up
- Ships a Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from Metabuilder-Labs/tokenjam
-
documentation
Difficulty 2/5 1-3 hours Newbie friendliness 85/100
Metabuilder-Labs/tokenjam#786 ·
Maintainers usually reply within 1 day
-
enhancement good first issue help wanted
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Metabuilder-Labs/tokenjam#759 ·
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
Metabuilder-Labs/tokenjam#728 ·
Maintainers usually reply within 1 day
-
bug help wanted
Difficulty 2/5 1-3 hours Newbie friendliness 85/100
Metabuilder-Labs/tokenjam#591 ·
Maintainers usually reply within 1 day
-
bug good first issue help wanted
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
Metabuilder-Labs/tokenjam#559 ·
Maintainers usually reply within 1 day
All issues in Metabuilder-Labs/tokenjam
Similar issues
-
infrastructure
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
khuisman/mcp-gee-sweet#1152 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
-
backroom bug
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
ditto-assistant/ditto-subnet#3069 ·
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 67/100
open-webui/open-webui#32901 · 1 comment ·
Maintainers usually reply within 1 day
-
0.3.3 bug
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
Maintainers usually reply within 1 day