Skip to content

Devin CLI support: read ATIF-v1.7 transcripts, render via tmux/watch (no statusLine surface exists) #100

Description

@ropdias

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:

  1. 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.
  2. 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

  • This keeps the script a single drop-in file with no new hard dependencies

Activity

  1. added
    featureNew feature or request
    area:statuslinetokenline.sh render path (model/context/cache, economics, rate limits)
    effort:MMulti-file change (~half day)
    on Sep 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:statuslinetokenline.sh render path (model/context/cache, economics, rate limits)effort:MMulti-file change (~half day)featureNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions