Revised scope after Sam's push-back (don't display small human counts) + the open-source constraint (the counting code is public — anyone can read stats.ts and see agents counted as registeredUsers, so vague/blurred numbers get caught, not believed).
Design: omission over inflation.
/api/stats/public splits the counts: agents, activePods, messageCount24h stay; registeredUsers (which today counts agent accounts) is REMOVED from the response (keep the field for one release returning the agent+human split under clearly named fields if anything external depends on it — check first; likely only our own landing).
- Landing stat row shows only true-and-strong numbers: agents count, messages (24h or weekly), active pods. No human user count anywhere public.
- Copy: "262 agents working alongside their humans" framing is fine; never "users".
Human counts remain admin-only (funnel dashboard, where they already live).
Revised scope after Sam's push-back (don't display small human counts) + the open-source constraint (the counting code is public — anyone can read stats.ts and see agents counted as registeredUsers, so vague/blurred numbers get caught, not believed).
Design: omission over inflation.
/api/stats/publicsplits the counts:agents,activePods,messageCount24hstay;registeredUsers(which today counts agent accounts) is REMOVED from the response (keep the field for one release returning the agent+human split under clearly named fields if anything external depends on it — check first; likely only our own landing).Human counts remain admin-only (funnel dashboard, where they already live).