惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Hugging Face - Blog
Hugging Face - Blog
腾讯CDC
阮一峰的网络日志
阮一峰的网络日志
博客园_首页
Last Week in AI
Last Week in AI
月光博客
月光博客
D
DataBreaches.Net
WordPress大学
WordPress大学
雷峰网
雷峰网
酷 壳 – CoolShell
酷 壳 – CoolShell
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园 - 叶小钗
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
U
Unit 42
Recent Announcements
Recent Announcements
宝玉的分享
宝玉的分享
MyScale Blog
MyScale Blog
C
Check Point Blog
F
Fortinet All Blogs
B
Blog
小众软件
小众软件
Vercel News
Vercel News
罗磊的独立博客
有赞技术团队
有赞技术团队

Hacker News: Show HN

PurrrrrFocus: Pomodoro Timer App - App Store Workflow Engine — Multi-Step Orchestration for Bun RapidPhoto: Pro Photo Editor App - App Store GitHub - DheerG/swarms: Achieve extraordinary results with claude code across a variety of tasks SPICE simulation → oscilloscope → verification with Claude Code — Lucas Gerads Show HN: VCoding – A 5 MB native Windows IDE with no dynamic dependencies Show HN: LLMs don't hallucinate because they're bad at math, it's the format GitHub - Agent-FM/agentfm-core: AgentFM is a peer-to-peer network that turns everyday computers into a decentralized AI supercomputer. AgentFM lets you run massive AI workloads directly across a global mesh of idle CPUs and GPUs. Show HN: Tracking Top US Science Olympiad Alumni over Last 25 Years GitHub - Potarix/agent-hub: One place to talk to all your agents Show HN: Runtime security for AI agents(injection,tool abuse, data exfiltration) GitHub - dubeyKartikay/lazyspotify: Terminal Spotify client for macOS and Linux GitHub - the-banana-tool/king-louie: Easy to use GUI Personal AI Assistant. Win/Linux/Mac. Show HN I made my vacation rental bookable by AI agents–no Airbnb, 0% commission GitHub - basteez/jsf-autoreload: maven plugin to enable hot reload on jsf projects uvm32/hosts/host-gdbstub at main · ringtailsoftware/uvm32 GitHub - labsai/EDDI: Config-driven engine that turns JSON into production-grade AI agents. Multi-agent orchestration, 12+ LLM providers, MCP/A2A protocols, RAG, persistent memory, and enterprise compliance (EU AI Act, GDPR, HIPAA). Built on Quarkus. GitHub - glitchnsec/fortyone-oss: AI Executive Assistant Platform Quickstart | Alien GitHub - muxshed/shed: One stream in, or many. Every destination, simultaneously. No cloud middleman, no per-channel fees, no limits. GitHub - ocrbase-hq/ocrbase: 📄 PDF/IMG ->.MD/JSON Document OCR API for PaddleOCR and GLMOCR. Self-hostable. GitHub - impactjo/home-memory: MCP server that lets your AI assistant remember everything about your home. GitHub - Sets88/dbcls: DbCls is a powerful terminal database client that supports various databases GitHub - neptun2000/heor-agent-mcp GitHub - SeanFDZ/macmind: Single-layer transformer in HyperTalk for the classic Macintosh RollQuation: Math Puzzles - Apps on Google Play GitHub - dropbox/witchcraft Show HN: Agent-cache – Multi-tier LLM/tool/session caching for Valkey and Redis GitHub - opentalon/opentalon: OpenTalon is an open-source platform built from the ground up in Go as a robust alternative to OpenClaw LinkedIn™ 职位抓取工具 - Chrome 应用商店
GitHub - momoraul/Lupen: Itemized cost receipts for Claud...
momoraul · 2026-06-22 · via Hacker News: Show HN

Lupen

See what every Claude Code and Codex session actually costs — itemized, verified, local.

Lupen recomputes your spend straight from the raw Claude Code and Codex logs — broken down by turn, step, and sub-agent, checked against the tokens, and never leaving your Mac.

macOS 26+ Swift 6 MIT License CI Latest release

Lupen drilling from a session total down through its turns, steps, and sub-agents — every row priced

Install: brew install --cask momoraul/lupen/lupen — or grab the signed DMG. Requires macOS 26 (Tahoe) on Apple Silicon.


What it shows

Your AI coding spend says $50 today. Which provider was it? Which session? Which turn? Which sub-agent or tool loop? A daily total can't answer that, so Lupen breaks the number down and recomputes each cost from the raw tokens.

  • Provider-scoped totals$50 today · Claude Code · 12 sessions · 84 turns. Claude Code and Codex stay in separate modes instead of one mixed list.
  • Cost per Turn, Step, SkillGroup, and SubAgent, where the data allows it.
  • Recomputed, then diffed — each cost is recomputed from raw tokens and the public price table and compared to the reported total, so any difference is shown rather than assumed.
  • Origin-tagged attachments — every file, image, and URL is labelled by where it entered the context.
  • Sub-agent cost rolls up into the parent turn and stays attributable on its own.

Gallery

Key features

  • Provider mode — Choose Claude Code or Codex. Lupen shows only that provider's sessions, conversations, dropdown totals, reports, diagnostics, and verification results.
  • Cost drift verification — Run the Verify Usage window to recompute every cost from raw tokens and the public price table, then diff it against the reported total; any difference is flagged. Claude Code is checked against its per-request totals; Codex gets an independent local verifier over rollout token_count events.
  • Search and resume — Full-text search finds a session by any prompt it contains (across every turn), plus its project and slug. Reopen any result in Claude Code (or Codex) to pick up where you left off — Lupen runs claude --resume / codex resume in a new Terminal window, or copies the command for you.
  • Turn boundaries that match Anthropic's API — Lupen uses stop_reason to mark Turn boundaries instead of timestamps. Tool-use loops stay inside one Turn instead of fragmenting into a dozen rows.
  • Codex rollout support — Lupen reads ~/.codex/sessions/YYYY/MM/DD/rollout-*.jsonl, normalizes cached input, preserves reasoning tokens, handles cumulative token deltas, and watches new day folders live.
  • Sub-agent cost rollup — When a Turn spawns sub-agents, their cost rolls up into the parent in the outline but stays separately attributable in the detail pane. The aggregate and the per-agent figures come from the same source, so they stay consistent.
  • Origin-tagged attachment tracking — File paths, image bytes, and URLs are classified by where they entered the conversation (inline prompt, tool input, tool output, reply, …) so you can see what's filling the context window.
  • 5-hour limit tracking — A Bayesian estimate of $ per 1 % of limit consumed across your last 7 days, surfaced in the menu-bar icon's ring tint (yellow at 70 %, orange at 90 %, red at 100 %).
  • Scriptable lupen CLI — The same app binary is a command line over the same local index: every report as a table, --json, or --csv, plus verify / budget exit-code gates for a CI step or commit hook. See Command line.
  • Zero network — Lupen only reads local Claude Code and Codex files on disk. No API keys, no telemetry, no cloud sync.

Install

brew install --cask momoraul/lupen/lupen

…or grab the signed DMG from the latest release. Both are notarized and keep themselves up to date via Sparkle.

Build from source

git clone https://github.com/momoraul/Lupen.git
cd Lupen
cp Config/Local.xcconfig.example Config/Local.xcconfig  # set DEVELOPMENT_TEAM
xcodebuild build -project Lupen.xcodeproj -scheme Lupen -destination 'platform=macOS'
open ~/Library/Developer/Xcode/DerivedData/Lupen-*/Build/Products/Debug/Lupen.app

Command line

The app binary doubles as a lupen CLI — same local index the menu-bar app builds, every report scriptable and local:

lupen skills --last 30d — a per-skill cost table with RUNS, COST, $/run, and top model columns

lupen skills --last 30d            # per-skill cost, $/run, top model
lupen top --by sessions --limit 5  # the costliest sessions
lupen budget --over 20 --last 7d   # exit 4 if this week ran over $20
lupen verify                       # exit 4 if any cost drifts from the recomputed truth
lupen daily --json | jq            # any report as JSON / CSV

The full command set, grouped:

Commands
Spend summary (default) · daily / weekly / monthly
Breakdowns skills · models · projects · top
Find & resume search <text> · resume <session-id>
Guards (exit-code gates for CI) verify · budget --over <usd> · statusline
Index & setup refresh · config · install-cli

Every reporting command takes --provider, a period (--last 30d / --month 2026-06 / --since … --until …), and --json / --csv — except verify, which audits the whole corpus and ignores the period.

Homebrew installs put lupen on your PATH automatically; on a DMG or source build, run lupen install-cli once. Full reference — every flag and exit code: docs/CLI.md.

Why I built this

A single Claude Code session once cost me more than the rest of the day combined, and the daily total couldn't tell me which turn — or which runaway sub-agent — ate the money. Lupen is the itemized receipt I wanted: every turn priced, and every price checked against the raw tokens, without anything leaving my Mac.

Privacy

Lupen reads local session files on your Mac:

  • Claude Code: ~/.claude/projects/**/*.jsonl
  • Codex: $CODEX_HOME/sessions/**/rollout-*.jsonl or ~/.codex/sessions/**/rollout-*.jsonl

It makes zero network requests. No telemetry, no analytics, no cloud sync. Your conversations, prompts, file paths, and attachments never leave your machine. The Info.plist carries no NSAppTransportSecurity block because Lupen opens no sockets — you can confirm this with Little Snitch or any outbound-connection monitor.

Detailed model: SECURITY.md.

Requirements

  • macOS 26 (Tahoe) or later, Apple Silicon
  • Xcode 26 with Swift 6 (build from source only)
  • An active Claude Code or Codex installation with local session data

Docs

Contributing

See CONTRIBUTING.md for the workflow, commit style, and how to file a bug with a sanitised JSONL repro.

License

MIT. Copyright © 2026 jaden (@momoraul). See LICENSE.

Lupen is an independent project. It is not affiliated with Anthropic or OpenAI; it only reads local log files written to your machine.

Acknowledgments

  • Sparkle — auto-update framework (MIT).
  • GRDB.swift — SQLite toolkit for the on-device index (MIT).

Changelog

v0.6.1 — 2026-06-22

Fixes a freeze on very large turns and cold-launch selection.

  • Large-turn performance — the Conversation tab no longer freezes on multi-thousand-step turns; long runs of supporting activity (tools, thinking) fold into a collapsed group so the card count stays bounded.
  • Cold-launch selection — the first session is now auto-selected on a cold launch with a proper focus ring, instead of opening with nothing selected.

v0.6.0 — 2026-06-21

Reimagines the Conversation tab as a rich Turn reader.

  • Conversation rich reader — a selected Turn now renders as a card stack (prompt → thinking → tools → reply) instead of two plain-text blocks, with rich markdown (headings, lists, code blocks with copy, tables, quotes) and multi-line selection.
  • Curation — thinking and tool calls collapse into one-line disclosures you can expand; interrupted / API-error / compacted turns show a clear status banner instead of "(no response available)".
  • Readability — prompts and replies stand out as cards while side content (thinking, tools) fades into indented lines; the selected step is highlighted and scrolled into view.

v0.5.0 — 2026-06-21

Adds a storage manager and sharpens the Codex sidebar.

  • Manage Sessions & Storage window (⌘⇧M) — browse and clean up Claude Code and Codex sessions by disk usage, with Lupen cache inspection (index / WAL / snapshot) and a read-only all-disk view. Deletion is trash-only with an allowlist + Undo; auth/config/state files are hard-blocked.
  • Codex first-prompt titles — sessions without a session_index.jsonl thread name now show their first user prompt instead of the raw id prefix.
  • Zero-cost session hiding — low-signal $0 sessions (Codex auto-review/guardian, idle) collapse behind a small (N) toggle per project group; active, selected, and no-cost-aggregate sessions stay visible.
  • Cost recoloring — cost ≥ $1 reads orange (softer on dark), N/A reads slate, sub-$1 stays dim; colors adapt per light/dark and invert on selection.

v0.4.1 — 2026-06-20

Maintenance release — cost-accuracy fixes and a clearer cost in the sidebar.

  • Per-session cost now has a dedicated, compression-resistant sidebar label — the title truncates first so the cost stays visible, with the same confidence tinting as the turn rows.
  • Codex: sessions backed by valid rollout JSONL now appear in the sidebar even when they're missing from session_index.jsonl, matching the local Codex view.
  • Verify Costs: usage blocks that omit input/output tokens are kept (coerced to 0) instead of silently dropping the line — fixes an undercount versus the ground-truth scan.
  • Codex usage verifier: fold last-only token events into the running total so the verifier matches the importer.
  • Codex: bound memory when importing/verifying oversized single-piece rollouts, preventing an out-of-memory spike on very large sessions.

v0.4.0 — 2026-06-18

First release of the lupen command line — the app binary doubles as a scriptable CLI over the same local index the menu-bar app builds.

  • lupen CLIsummary, daily / weekly / monthly, skills, models, projects, top, search / resume, verify, budget, statusline, refresh, config, install-cli.
  • Every report as a table, --json, or --csv; --provider and the period flags (--last / --month / --since+--until) throughout.
  • verify (exit 4 on cost drift) and budget --over (exit 4) make CI or commit-hook cost gates.
  • Homebrew installs put lupen on your PATH automatically; DMG / source builds run lupen install-cli once.
  • Log window is now a DEBUG-only diagnostic (hidden in release builds).

v0.3.0 — 2026-06-17

First public release. Highlights:

  • Session → Turn → Step → SkillGroup → SubAgent outline with per-row cost and 4-way token breakdown
  • Provider mode for Claude Code and Codex
  • Codex rollout JSONL parsing with cached-input normalization, reasoning tokens, cumulative dedup, fork replay handling, and live watching
  • CostVerifier / Verify Usage — provider-aware independent scans for local accounting confidence
  • 5-hour-limit tracking with Bayesian shrinkage ($ per 1 % limit) and severity-tinted menu-bar icon
  • Origin-tagged attachment classification with inline image preview
  • Snapshot cache for incremental launch (full reparse only when the schema bumps)
  • Sparkle 2 auto-update, with a signed appcast hosted on GitHub Pages
  • Status-item rendered as a single attributed run — no icon-text gap on macOS 26