{"slug": "why-i-quit-saas-ai-observability-tools-and-built-a-local-proxy-instead", "title": "Why I quit SaaS AI observability tools and built a local proxy instead", "summary": "A developer built ccglass, a local loopback reverse proxy for coding agents, after finding that SaaS AI observability tools like Langfuse and Helicone do not work with native CLIs such as Claude Code and Codex. The proxy intercepts HTTPS calls directly, bypassing the HTTP_PROXY environment variable issue, and provides a dashboard showing token usage and cache hit rates.", "body_md": "I've been using Langfuse and Helicone for the last 6 months. They're great products. Their teams are sharp.\n\nBut they don't work for coding agents.\n\n| Tool | Architecture | Works for coding agents? |\n|---|---|---|\n| Langfuse | SDK + async upload to SaaS | ❌ Need to instrument the agent |\n| Helicone | HTTPS proxy via HTTP_PROXY | ❌ CLIs ignore HTTP_PROXY |\n| Datadog LLM Obs | APM agent | ❌ Same problem |\nccglass |\nLocal loopback reverse proxy | ✅ Yes |\n\nThe reason: Claude Code, Codex, OpenCode, Kimi, etc. are **native CLIs** (Node, Rust, Go). They make HTTPS calls directly to the API endpoint. They do not respect `HTTP_PROXY`\n\nenvironment variables.\n\nSo the standard observability play — \"just point your SDK at our proxy\" — doesn't work. The agent isn't using a library that knows to call your endpoint.\n\nI needed something that would:\n\n`http://127.0.0.1`\n\n)I built it. It's called [ccglass](https://github.com/jianshuo/ccglass). It does those 5 things. Nothing else.\n\n``` bash\n$ npm i -g ccglass\n$ ccglass claude\n# → starts proxy on http://127.0.0.1:8123\n# → overrides ANTHROPIC_BASE_URL to point at it\n# → spawns claude\n# → opens dashboard at http://127.0.0.1:8123\n```\n\nThe dashboard shows:\n\nIf you use a coding agent heavily, and you don't know which of your prompts are 4,000 tokens of accidental repetition, you're leaving money on the table.\n\nThe first time I saw my own cache hit rate (38% — meaning I was re-sending the same system prompt 38% of the time and not knowing it), I had a \"wait, that's literally me paying for nothing\" moment.\n\nTry it once. The data is eye-opening.\n\n🔗 GitHub: [https://github.com/jianshuo/ccglass](https://github.com/jianshuo/ccglass)", "url": "https://wpnews.pro/news/why-i-quit-saas-ai-observability-tools-and-built-a-local-proxy-instead", "canonical_source": "https://dev.to/houleixx/why-i-quit-saas-ai-observability-tools-and-built-a-local-proxy-instead-2i7n", "published_at": "2026-06-14 02:02:55+00:00", "updated_at": "2026-06-14 02:59:17.538923+00:00", "lang": "en", "topics": ["developer-tools", "ai-agents", "large-language-models"], "entities": ["Langfuse", "Helicone", "Datadog", "Claude Code", "Codex", "OpenCode", "Kimi", "ccglass"], "alternates": {"html": "https://wpnews.pro/news/why-i-quit-saas-ai-observability-tools-and-built-a-local-proxy-instead", "markdown": "https://wpnews.pro/news/why-i-quit-saas-ai-observability-tools-and-built-a-local-proxy-instead.md", "text": "https://wpnews.pro/news/why-i-quit-saas-ai-observability-tools-and-built-a-local-proxy-instead.txt", "jsonld": "https://wpnews.pro/news/why-i-quit-saas-ai-observability-tools-and-built-a-local-proxy-instead.jsonld"}}