---
title: "Discussion on \"The Missing Observability Layer for Your LLM Command-Line Tools: Introducing cli-obs-proxy\" | Hashnode"
description: "Discussion on \"The Missing Observability Layer for Your LLM Command-Line Tools: Introducing cli-obs-proxy\". If you’re a developer who loves working in the terminal, you’ve probably adopted command-line LLM tools to speed up your workflow. But if you’re like me, you don’t just stick to one provider. You jugg"
url: "https://hashnode.com/posts/the-missing-observability-layer-for-your-llm-command-line-tools-introducing-cli-obs-proxy/6aa7898b8e1da476501c3b6f"
---

[Feed](https://hashnode.com/feed) /

Discussion

# [The Missing Observability Layer for Your LLM Command-Line Tools: Introducing cli-obs-proxy](https://basiliskin.hashnode.dev/the-missing-observability-layer-for-your-llm-command-line-tools-introducing-cli-obs-proxy?utm_source=hashnode&utm_medium=feed)

If you’re a developer who loves working in the terminal, you’ve probably adopted command-line LLM tools to speed up your workflow. But if you’re like me, you don’t just stick to one provider. You jugg

Sep 14 · 5 min read · basiliskin.hashnode.dev  
Read the article

-   [#opensource](https://hashnode.com/tag/opensource)
-   [#llm](https://hashnode.com/tag/llm)
-   [#developer-tools](https://hashnode.com/tag/developer-tools)
-   [#observability](https://hashnode.com/tag/observability)
-   [#typescript](https://hashnode.com/tag/typescript)
-   [#python](https://hashnode.com/tag/python)

## Written by

[Dimitry Katz](https://hashnode.com/@basiliskin)

@basiliskin · Tel Aviv, Israel

  
[View profile](https://hashnode.com/@basiliskin)

## Responses 2

Markdown supported · ⌘↵ to post

[Rulestack](https://hashnode.com/@rulestack)

[Sep 14](https://hashnode.com/posts/the-missing-observability-layer-for-your-llm-command-line-tools-introducing-cli-obs-proxy/6aa7898b8e1da476501c3b6f/comment/6aa813a8ffc5f78b84cfa30a)

I get the usage numbers I trust today by adding input\_tokens, cache\_creation\_input\_tokens and cache\_read\_input\_tokens by hand from --output-format json on single non-interactive runs, which works for a lab and is useless for a day of real sessions. If the per-model chart carried the split between those two cache fields, it would show where the bytes go for Claude Code, since input\_tokens on its own hides it. I would have got the SSE parsing wrong first, so I would start reading at the streaming support.

[Dimitry Katz](https://hashnode.com/@basiliskin)

[Sep 14](https://hashnode.com/posts/the-missing-observability-layer-for-your-llm-command-line-tools-introducing-cli-obs-proxy/6aa7898b8e1da476501c3b6f/comment/6aa813a8ffc5f78b84cfa30a#reply-6aa818a23c0f49e8f7a1324c)

That's a great point. You're right that showing only input\_tokens can hide a huge part of the actual input usage when prompt caching is involved. I'll look into splitting cache\_read\_input\_tokens and cache\_creation\_input\_tokens in the per-model breakdown. And yes, the SSE parsing is probably one of the more interesting parts of the proxy — thanks for the feedback!
