[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-80506":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":13,"openIssues":14,"contributorsCount":14,"subscribersCount":14,"size":14,"stars1d":14,"stars7d":14,"stars30d":14,"stars90d":14,"forks30d":14,"starsTrendScore":14,"compositeScore":15,"rankGlobal":10,"rankLanguage":10,"license":16,"archived":17,"fork":17,"defaultBranch":18,"hasWiki":19,"hasPages":17,"topics":20,"createdAt":10,"pushedAt":10,"updatedAt":21,"readmeContent":22,"aiSummary":23,"trendingCount":14,"starSnapshotCount":14,"syncStatus":24,"lastSyncTime":25,"discoverSource":26},80506,"vibe-observer","AIchovy\u002Fvibe-observer","AIchovy","Claude Code Tracer & Observer","",null,"Rust",40,1,0,0.9,"MIT License",false,"main",true,[],"2026-06-12 02:04:03","\u003Cdiv align=\"center\">\n  \u003Cimg src=\"crates\u002Fobserver-app\u002Ficons\u002Ficon.png\" width=\"128\" alt=\"Vibe Observer\" \u002F>\n\n  # Vibe Observer\n\n  **The local-first profiler for Claude Code.**\n  See where every token went, find the bottleneck, fix it.\n\n  [![License](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-MIT-orange.svg)](LICENSE)\n  [![Platform](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fplatform-macOS%2012%2B-lightgrey.svg)](#install)\n  [![Built with Tauri](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fbuilt%20with-Tauri%202-blueviolet.svg)](https:\u002F\u002Ftauri.app)\n  [![Rust](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Frust-stable-orange.svg)](https:\u002F\u002Fwww.rust-lang.org)\n\n  **English** · [中文](README_CN.md)\n\n\u003C\u002Fdiv>\n\n---\n\n## 📸 At a glance\n\n\u003Cdiv align=\"center\">\n  \u003Cimg src=\"screenshots\u002Fscreen1.png\" alt=\"Dashboard — Cost Attribution\" width=\"92%\" \u002F>\n  \u003Cp>\u003Csub>\u003Cb>Dashboard.\u003C\u002Fb> Subscription-aware framing with a 30-day cost trend; today \u002F month \u002F all-time at the top, attribution tabs below. The numbers are API-list-price equivalents, not what you actually paid.\u003C\u002Fsub>\u003C\u002Fp>\n\u003C\u002Fdiv>\n\n\u003Ctable>\n  \u003Ctr>\n    \u003Ctd width=\"50%\" valign=\"top\">\n      \u003Cimg src=\"screenshots\u002Fscreen2.png\" alt=\"Token detail\" \u002F>\n      \u003Cp>\u003Csub>\u003Cb>Token detail.\u003C\u002Fb> 99.9 % cache hit rate. Daily stacked breakdown of input \u002F output \u002F cache_read \u002F cache_write. Plus an explainer for why cache_write also costs money.\u003C\u002Fsub>\u003C\u002Fp>\n    \u003C\u002Ftd>\n    \u003Ctd width=\"50%\" valign=\"top\">\n      \u003Cimg src=\"screenshots\u002Fscreen3.png\" alt=\"Behavior analysis\" \u002F>\n      \u003Cp>\u003Csub>\u003Cb>Behavior analysis.\u003C\u002Fb> Tool-call heatmap by week × hour, top tools by call count, and a $\u002Ftool cost-efficiency ranking that surfaces the most context-heavy sessions.\u003C\u002Fsub>\u003C\u002Fp>\n    \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n    \u003Ctd width=\"50%\" valign=\"top\">\n      \u003Cimg src=\"screenshots\u002Fscreen4.png\" alt=\"Session detail with Gantt trace\" \u002F>\n      \u003Cp>\u003Csub>\u003Cb>Session detail · Gantt trace.\u003C\u002Fb> The dark-red bars are top-decile-slow spans — six minutes of \u003Ccode>AskUserQuestion\u003C\u002Fcode> stand out at a glance. Click any bar to jump to that step in the conversation below.\u003C\u002Fsub>\u003C\u002Fp>\n    \u003C\u002Ftd>\n    \u003Ctd width=\"50%\" valign=\"top\">\n      \u003Cimg src=\"screenshots\u002Fscreen5.png\" alt=\"Menu-bar popover\" \u002F>\n      \u003Cp>\u003Csub>\u003Cb>Menu-bar popover.\u003C\u002Fb> Today \u002F month \u002F ROI · hook health · priciest sessions · loop-cluster warnings — all without leaving what you're doing.\u003C\u002Fsub>\u003C\u002Fp>\n    \u003C\u002Ftd>\n  \u003C\u002Ftr>\n\u003C\u002Ftable>\n\n---\n\n## Why Vibe Observer\n\nClaude Code makes you fast — and it makes it very easy to spend without\nnoticing. A single Opus-heavy session can burn through hundreds of dollars\nof API-equivalent value, and you usually don't find out until the bill\narrives or the rate limit hits.\n\nExisting tools stop at the surface: `ccusage` shows daily totals,\n`claude-replay` lets you scrub through a transcript, `Mnemo` adds a memory\nlayer. None of them answer the question that actually matters:\n\n> **Which session was expensive, why, and what should I change?**\n\nVibe Observer is the missing layer. It captures every Claude Code hook\nevent into a local SQLite, reconstructs the conversation, attributes cost\nacross project \u002F model \u002F tool \u002F session, surfaces loop and failure\nclusters, and gives you a Gantt-style trace so you can see exactly where\nthe seconds (and the dollars) went.\n\n**Everything stays on your machine.** No telemetry, no cloud, ever.\n\n## ✨ Features\n\n- 🔒 **Truly local** — Pure SQLite on your disk. The Transparency panel\n  lets you audit every action Observer has taken on your system.\n- ⚡ **Zero-config install** — One click in the Welcome flow installs 15\n  Claude Code hook events into `~\u002F.claude\u002Fsettings.json`, with a diff\n  preview and automatic backup. Auto-reconciles on every upgrade and\n  preserves any third-party hooks you already have, byte-for-byte.\n- 💰 **Cost attribution** — Today \u002F month \u002F all-time, split by **project**,\n  **model**, **session**, and **tool**. Worktrees collapse under their\n  parent project automatically (`\u002Fmy-project\u002F.claude\u002Fworktrees\u002Ffoo` →\n  `\u002Fmy-project · foo`).\n- 📊 **Token detail** — Input \u002F output \u002F cache_read \u002F cache_write per\n  model, cache hit rate, top-10 token-hungry sessions, daily stacked\n  trend.\n- 🔍 **Behavior analysis** — Tool-call heatmap (week × hour),\n  most-accessed files with per-session drill-down, repeat-read \u002F\n  failure-cluster warnings, cost-per-tool efficiency ranking.\n- 💬 **Real conversation trace** — Each session rendered as the actual\n  chat: user prompts, assistant responses, tool_use blocks, tool_result\n  outcomes. Plus a Gantt-style timeline that shows wall-clock duration\n  per step with a \"jump to next slow span\" shortcut.\n- 🎯 **Subscription-aware framing** — Auto-detects API-key vs\n  subscription users. Subscription users see \"**5.3× ROI** vs your\n  $200\u002Fmo\" instead of a misleading \"you spent $1000\" — the dollar\n  figures are API-list-price equivalents of the value extracted, not\n  money owed.\n- 🐚 **Menu-bar resident** — macOS tray icon with click-to-reveal\n  popover for at-a-glance stats. Close the main window and Observer\n  keeps capturing in the background. Right-click the tray for Open \u002F\n  Quit.\n\n## 🚀 Quick Start\n\n### Prerequisites\n\n- macOS 12 Monterey or later (Windows support planned)\n- [Rust](https:\u002F\u002Frustup.rs\u002F) stable\n- [Node.js](https:\u002F\u002Fnodejs.org\u002F) 20+ and [pnpm](https:\u002F\u002Fpnpm.io\u002F)\n- [Tauri CLI](https:\u002F\u002Ftauri.app): `cargo install tauri-cli --version \"^2\"`\n\n### Run from source\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fyour-org\u002Fvibe-observer.git\ncd vibe-observer\npnpm install\ncargo tauri dev\n```\n\nOn first launch, the Welcome page will preview the changes to\n`~\u002F.claude\u002Fsettings.json` and let you accept with one click. Observer\nbacks up your original file before writing.\n\n### Production build\n\n```bash\ncargo tauri build --no-bundle    # standalone binary, fastest\ncargo tauri build                # full .app bundle (for distribution)\n```\n\nThe bundled `.app` lives in `target\u002Frelease\u002Fbundle\u002Fmacos\u002F`.\n\n## 🏗 How it Works\n\n```\n┌──────────────────────────────────────────────────────────────┐\n│ Claude Code (CLI · Desktop · IDE — all share ~\u002F.claude\u002F)     │\n└────────────────────┬─────────────────────────────────────────┘\n                     │ hook events (15 subscribed)\n                     ▼\n       ┌──────────────────────────────────┐\n       │ observer-hook   ~1.5 MB Rust bin │  async writes for\n       │ stdin → SQLite raw_events → exit │  high-frequency events\n       └────────────────────┬─────────────┘  so Claude is never\n                            ▼                blocked\n       ┌────────────────────────────────────────┐\n       │ ~\u002FLibrary\u002FApplication Support\u002F         │\n       │ VibeObserver\u002Fobserver.db (SQLite WAL)  │\n       └────────────────────┬───────────────────┘\n                            ▲      ▲\n                            │      │ JSONL backfill\n                            │      │ (~\u002F.claude\u002Fprojects\u002F)\n       ┌────────────────────┴──────┴────────────┐\n       │ observer-app (Tauri 2 + React + Vite)  │\n       │  Dashboard  ·  Session detail          │\n       │  Trace      ·  Transparency · Popover  │\n       └────────────────────────────────────────┘\n```\n\nThree Rust crates plus a frontend:\n\n- **`observer-core`** — SQLite schema, migrations, pricing tables.\n- **`observer-hook`** — Tiny binary spawned by Claude Code per event;\n  reads JSON from stdin, writes one row, exits.\n- **`observer-ingest`** — JSONL parser + materialiser. Projects\n  `raw_events` into typed tables (`sessions`, `messages`, `tool_calls`,\n  `compactions`) idempotently.\n- **`observer-app`** — Tauri 2 application; React frontend in `src\u002F`.\n\nCost is computed at the **message level** from Anthropic's published\nper-token rates so cross-session and cross-day aggregates always\nreconcile. Worktrees are normalised at query time via a single SQL\nexpression so the data layer stays simple.\n\n## 🤝 Contributing\n\nIssues and PRs welcome. The architecture is documented in\n[`docs\u002Fsuperpowers\u002Fspecs\u002F`](docs\u002Fsuperpowers\u002Fspecs\u002F); a written design\nexists for every major data path. Run tests with `cargo test --workspace`\nand the frontend with `pnpm build`.\n\n## 📄 License\n\n[MIT](LICENSE) © Vibe Observer contributors\n\n## ⚠️ Disclaimer\n\nVibe Observer is an **independent, third-party tool**. It is not built\nby or affiliated with Anthropic. \"Claude\" and \"Claude Code\" are\ntrademarks of Anthropic.\n","Vibe Observer 是一个针对 Claude Code 的本地优先性能分析器。它通过捕获每个 Claude Code 钩子事件并存储在本地 SQLite 数据库中，来帮助开发者追踪和观察代码执行过程中的资源消耗情况，包括详细的令牌使用情况、行为分析以及会话细节等。该项目采用 Rust 语言开发，并利用 Tauri 框架构建跨平台桌面应用，确保了高效与安全。适用于需要深入理解 Claude Code 运行成本及优化瓶颈的场景，尤其是当开发者希望控制云服务开销或提高应用程序性能时。",2,"2026-06-11 04:01:01","CREATED_QUERY"]