Traction watches every project you ship — the repo, the registry, the mentions,
and the app itself — then tells you once a day where things stand.
The all-clear is the feature. Catching the spike is the easy half.
Here are three weeks that actually happened. Pick one, and watch what each surface tells you. The dashboard cannot tell them apart — you have to already know what you're looking for.
Same layout, same numbers-shaped page, every time. Nothing on it distinguishes a quiet week from a broken one.
Different week, different message — including when the answer is "I could not check."
The TUI is not a port of the web app — the web app is the roomier rendering of this. Severity reads without colour, so it survives a dumb terminal and a colourblind reader alike.
Eleven movements were filtered before they reached you. traction why shows every one and the reason it was dismissed — because a product built on trusting silence has to let you check the silence.
Seven of seven, or six of seven and the name of the one that failed. An agent that quietly stops collecting is worse than no agent, because by then you've stopped checking yourself.
A noisy Traction gets muted, and a muted Traction leaves you worse off than before you had it. So the budget is one push at normal severity — and the approval button for anything it wants to do is right there in the notification.
Delivered over ntfy, which you can host yourself. Priority tracks severity, so a quiet week never buzzes your phone at all.
Opening an issue, drafting a reply, posting anywhere — the agent proposes and waits. That second button is an approval gate, not a shortcut.
"Stars +200" is a notification. "Stars +200, someone posted it to r/commandline, and the top comment is a Windows bug" is an answer.
No model involved. Everything normalises to one shape so anything compares with anything.
Statistics flag candidates; judgment classifies them. Mirror artifacts and weekend dips die here.
Search the web, find the thread, read the comments, bring back the link.
Prose, not a metrics dump. Once a day unless it genuinely cannot wait.
Anything outward-facing waits for your approval.
Web and mobile analytics are solved. Terminals are not — and terminals are where a lot of developer tools actually live.
| Surface | What you'd use today | Verdict |
|---|---|---|
| Web | PostHog | SOLVED |
| Mobile | PostHog RN / iOS / Android | SOLVED |
| Desktop | PostHog web SDK in Electron or Tauri | WORKABLE |
| CLI | — | NOTHING |
| TUI | — | NOTHING |
Which terminal, which shell, which multiplexer, which colour depth, installed how. The CLI equivalent of a browser support matrix — and nobody offers it.
Events append to a local file and the process moves on. Nothing blocks, and a TUI's screen is never corrupted by a stray log line.
Flag names, never their values. Values are withheld unless explicitly marked safe — and dropped anyway if they look like a secret.