← Back to Kontasks
StatusLine Raw Capture Strategy
Proposal for capturing full StatusLine data to konsole for future analysis
Output
StatusLine Raw Capture Strategy
What We're Missing
Current hook extracts only a subset. Full StatusLine JSON includes:
| transcript_path | Path to session JSONL file |
| workspace.current_dir | Current working directory |
| workspace.project_dir | Original project directory |
| cost.total_duration_ms | Total elapsed time |
| cost.total_api_duration_ms | Time in API calls |
| cost.total_lines_added | Code lines added |
| cost.total_lines_removed | Code lines removed |
Proposed Architecture
Claude CLI
│
│ StatusLine hook (every 300ms)
▼
┌─────────────────────────────────────────┐
│ statusline-tracker.sh │
│ 1. Append FULL JSON to raw log │
│ 2. POST summary to konsole │
│ 3. Return display string │
└─────────────────┬───────────────────────┘
│
┌────────────┴────────────┐
│ │
▼ ▼
┌────────────────┐ ┌────────────────┐
│ Raw JSONL │ │ POST /api/ │
│ (append-only) │ │ statusline │
│ konsole/data/ │ │ (to konsole) │
│ statusline-raw. │ └────────┬───────┘
│ jsonl │ │
└────────────────┘ │
▼
┌────────────────┐
│ konsole │
│ - correlate │
│ with session │
│ - detect Δctx │
│ - detect Δcost │
└────────────────┘
Potential Signals (Discovery Mode)
- Context drop → compaction just completed
- API duration spikes → slow API responses
- Lines added/removed → code churn per turn
- Duration vs API duration → time spent thinking vs API
- Transcript path → direct access to session file
Storage Strategy
| Raw capture | konsole/data/statusline-raw.jsonl (append-only, full JSON) |
| Rotation | Daily rotation, keep 7 days |
| Analysis | Grep/jq on raw file for ad-hoc queries |
Why Konsole Not Konui?
Konsole owns the Claude process. StatusLine data is per-session telemetry that should live with the session. Konui is for user-facing features. Keep raw telemetry close to the source.
Quick Actions
Original Request
No layout configured
Details
Type
General
Status
Completed
Scope
vibetools
Tags
telemetrystatuslinearchitecture
Created
4 Jan 2026, 11:19 am
Updated
4 Jan 2026, 11:19 am
Timing
⏱️ 80.8s
5 tools
● TTFE 5%
● Thinking 91%
● Tools 5%
Created By
claude
Raw Data
{
"id": "81547eb1-e7a3-4773-ba99-ea0cc3d4ad1e",
"type": "general",
"status": "completed",
"title": "StatusLine Raw Capture Strategy",
"description": "Proposal for capturing full StatusLine data to konsole for future analysis",
"context": {
"output": "<div style=\"background:#1e1e1e;color:#e0e0e0;padding:20px;border-radius:8px;font-family:system-ui,sans-serif;\"><h2 style=\"color:#fff;margin:0 0 16px 0;\">StatusLine Raw Capture Strategy</h2><div style=\"background:#2d2d2d;padding:16px;border-radius:6px;margin-bottom:16px;\"><h3 style=\"color:#f97316;margin:0 0 12px 0;\">What We're Missing</h3><p style=\"margin:0 0 8px 0;\">Current hook extracts only a subset. Full StatusLine JSON includes:</p><table style=\"width:100%;border-collapse:collapse;font-size:0.85rem;\"><tr style=\"border-bottom:1px solid #444;\"><td style=\"padding:6px;color:#98c379;\">transcript_path</td><td style=\"padding:6px;\">Path to session JSONL file</td></tr><tr style=\"border-bottom:1px solid #444;\"><td style=\"padding:6px;color:#98c379;\">workspace.current_dir</td><td style=\"padding:6px;\">Current working directory</td></tr><tr style=\"border-bottom:1px solid #444;\"><td style=\"padding:6px;color:#98c379;\">workspace.project_dir</td><td style=\"padding:6px;\">Original project directory</td></tr><tr style=\"border-bottom:1px solid #444;\"><td style=\"padding:6px;color:#98c379;\">cost.total_duration_ms</td><td style=\"padding:6px;\">Total elapsed time</td></tr><tr style=\"border-bottom:1px solid #444;\"><td style=\"padding:6px;color:#98c379;\">cost.total_api_duration_ms</td><td style=\"padding:6px;\">Time in API calls</td></tr><tr style=\"border-bottom:1px solid #444;\"><td style=\"padding:6px;color:#98c379;\">cost.total_lines_added</td><td style=\"padding:6px;\">Code lines added</td></tr><tr><td style=\"padding:6px;color:#98c379;\">cost.total_lines_removed</td><td style=\"padding:6px;\">Code lines removed</td></tr></table></div><div style=\"background:#2d2d2d;padding:16px;border-radius:6px;margin-bottom:16px;\"><h3 style=\"color:#61afef;margin:0 0 12px 0;\">Proposed Architecture</h3><pre style=\"background:#1e1e1e;padding:12px;border-radius:4px;margin:0;font-size:0.75rem;overflow-x:auto;line-height:1.6;\">\nClaude CLI\n │\n │ StatusLine hook (every 300ms)\n ▼\n┌─────────────────────────────────────────┐\n│ statusline-tracker.sh │\n│ 1. Append FULL JSON to raw log │\n│ 2. POST summary to konsole │\n│ 3. Return display string │\n└─────────────────┬───────────────────────┘\n │\n ┌────────────┴────────────┐\n │ │\n ▼ ▼\n┌────────────────┐ ┌────────────────┐\n│ Raw JSONL │ │ POST /api/ │\n│ (append-only) │ │ statusline │\n│ konsole/data/ │ │ (to konsole) │\n│ statusline-raw. │ └────────┬───────┘\n│ jsonl │ │\n└────────────────┘ │\n ▼\n ┌────────────────┐\n │ konsole │\n │ - correlate │\n │ with session │\n │ - detect Δctx │\n │ - detect Δcost │\n └────────────────┘\n</pre></div><div style=\"background:#2d2d2d;padding:16px;border-radius:6px;margin-bottom:16px;\"><h3 style=\"color:#c678dd;margin:0 0 12px 0;\">Potential Signals (Discovery Mode)</h3><ul style=\"margin:0;padding-left:20px;line-height:1.8;\"><li><strong>Context drop</strong> → compaction just completed</li><li><strong>API duration spikes</strong> → slow API responses</li><li><strong>Lines added/removed</strong> → code churn per turn</li><li><strong>Duration vs API duration</strong> → time spent thinking vs API</li><li><strong>Transcript path</strong> → direct access to session file</li></ul></div><div style=\"background:#2d2d2d;padding:16px;border-radius:6px;margin-bottom:16px;\"><h3 style=\"color:#98c379;margin:0 0 12px 0;\">Storage Strategy</h3><table style=\"width:100%;border-collapse:collapse;font-size:0.9rem;\"><tr style=\"border-bottom:1px solid #444;\"><td style=\"padding:8px;color:#e5c07b;width:35%;\">Raw capture</td><td style=\"padding:8px;\"><code>konsole/data/statusline-raw.jsonl</code> (append-only, full JSON)</td></tr><tr style=\"border-bottom:1px solid #444;\"><td style=\"padding:8px;color:#e5c07b;\">Rotation</td><td style=\"padding:8px;\">Daily rotation, keep 7 days</td></tr><tr><td style=\"padding:8px;color:#e5c07b;\">Analysis</td><td style=\"padding:8px;\">Grep/jq on raw file for ad-hoc queries</td></tr></table></div><div style=\"background:#2d2d2d;padding:16px;border-radius:6px;\"><h4 style=\"margin:0 0 8px 0;color:#fff;\">Why Konsole Not Konui?</h4><p style=\"color:#9ca3af;margin:0;\">Konsole owns the Claude process. StatusLine data is per-session telemetry that should live with the session. Konui is for user-facing features. Keep raw telemetry close to the source.</p></div></div>",
"requestId": "4705e1c8-e568-43c7-af5c-18774eb39ab7",
"choices": [
{
"label": "Implement full capture",
"value": "Update statusline hook to capture full JSON to konsole, add endpoint to receive and store",
"primary": true
},
{
"label": "Capture locally first",
"value": "Just update the hook script to append full JSON to a local file for analysis before building the endpoint"
},
{
"label": "Add to backlog",
"value": "Add this as a backlog item for later implementation"
}
],
"turnTiming": {
"totalMs": 80846,
"ttfeMs": 3791,
"thinkingMs": 73403,
"toolExecutionMs": 3651,
"toolCallCount": 5,
"thinkingPct": 91,
"toolsPct": 5,
"ttfePct": 5
}
},
"createdBy": "claude",
"createdAt": "2026-01-04T01:19:11.878Z",
"updatedAt": "2026-01-04T01:19:20.830Z",
"requestId": "4705e1c8-e568-43c7-af5c-18774eb39ab7",
"scope": "vibetools",
"tags": [
"telemetry",
"statusline",
"architecture"
],
"targetUser": "claude"
}