What problem does this solve?
Devin CLI users have no live cost/context visibility. Tokenline supports Claude Code and Antigravity/Gemini CLI, but Devin CLI — which exposes no statusLine configuration surface at all — cannot display the same cockpit. The session-level /session-stats (/stats) and /context commands exist, but nothing persistent renders burn rate, cache reuse, or model identity while a session runs.
The telemetry to feed it already exists. Measured 2026-09-21 on Devin CLI 3000.11.1: every session writes an ATIF-v1.7 transcript to ~/.local/share/devin/cli/transcripts/<session-id>.json, updated live, carrying:
agent.model_name and per-step model_name (e.g. "SWE-2 High")
- per-step
metrics.prompt_tokens / metrics.cached_tokens / metrics.completion_tokens
- session
final_metrics.total_prompt_tokens / total_cached_tokens / total_completion_tokens / total_steps
- per-step
timestamp (usable for pacing computations)
So cached_tokens tracking — the core of tokenline's cache-savings line — is fully available. What does not exist:
- No
statusLine config surface — Devin's config.json has no statusline key, and the former shell-integration feature was removed in v3000.4.16. There is nothing to register a line renderer with.
- No rate-limit windows — Devin bills in ACU credits, not Claude-style 5h/7d windows; that line has no data source.
- No cache TTL semantics —
cached_tokens is reported per step, but the TTL is not exposed; the HOT→COLD countdown would need inference or be omitted for this provider.
Proposed behavior
A tokenline --devin mode with two pieces:
- Parser: read the newest
~/.local/share/devin/cli/transcripts/*.json (ATIF-v1.7), map model_name, latest-step prompt_tokens (context used), cached_tokens (read) and derived new = prompt_tokens − cached_tokens, completion_tokens (output), plus final_metrics totals. Cache TTL line: omit or show "TTL n/a" — do not fabricate a countdown. Rate-limit line: omit, or repurpose to show session totals.
- Render target (since no statusLine surface exists): first-class support for tmux
status-right (tokenline --devin --tmux printing the line for #{pane_current_command}-matched panes, or a tmux set -g status-right snippet in docs), and/or a tokenline watch loop for a side pane / terminal title.
Optional stretch: a .devin/hooks.v1.json PostToolUse/Stop hook snippet in the docs that emits additionalContext with a one-line usage summary — gives the agent visibility of its own burn rate, even though it is not a user-facing statusline.
Upstream gap to note honestly in the README/docs: a statusLine key in Devin's config.json would be the real fix — worth a feature request to Cognition; until then the external-render paths above are the whole game.
Scope
What problem does this solve?
Devin CLI users have no live cost/context visibility. Tokenline supports Claude Code and Antigravity/Gemini CLI, but Devin CLI — which exposes no
statusLineconfiguration surface at all — cannot display the same cockpit. The session-level/session-stats(/stats) and/contextcommands exist, but nothing persistent renders burn rate, cache reuse, or model identity while a session runs.The telemetry to feed it already exists. Measured 2026-09-21 on Devin CLI 3000.11.1: every session writes an ATIF-v1.7 transcript to
~/.local/share/devin/cli/transcripts/<session-id>.json, updated live, carrying:agent.model_nameand per-stepmodel_name(e.g."SWE-2 High")metrics.prompt_tokens/metrics.cached_tokens/metrics.completion_tokensfinal_metrics.total_prompt_tokens/total_cached_tokens/total_completion_tokens/total_stepstimestamp(usable for pacing computations)So
cached_tokenstracking — the core of tokenline's cache-savings line — is fully available. What does not exist:statusLineconfig surface — Devin'sconfig.jsonhas no statusline key, and the former shell-integration feature was removed in v3000.4.16. There is nothing to register a line renderer with.cached_tokensis reported per step, but the TTL is not exposed; the HOT→COLD countdown would need inference or be omitted for this provider.Proposed behavior
A
tokenline --devinmode with two pieces:~/.local/share/devin/cli/transcripts/*.json(ATIF-v1.7), mapmodel_name, latest-stepprompt_tokens(context used),cached_tokens(read) and derivednew = prompt_tokens − cached_tokens,completion_tokens(output), plusfinal_metricstotals. Cache TTL line: omit or show "TTL n/a" — do not fabricate a countdown. Rate-limit line: omit, or repurpose to show session totals.status-right(tokenline --devin --tmuxprinting the line for#{pane_current_command}-matched panes, or atmux set -g status-rightsnippet in docs), and/or atokenline watchloop for a side pane / terminal title.Optional stretch: a
.devin/hooks.v1.jsonPostToolUse/Stophook snippet in the docs that emitsadditionalContextwith a one-line usage summary — gives the agent visibility of its own burn rate, even though it is not a user-facing statusline.Upstream gap to note honestly in the README/docs: a
statusLinekey in Devin'sconfig.jsonwould be the real fix — worth a feature request to Cognition; until then the external-render paths above are the whole game.Scope