Skip to content
sewerkdePublic

About

All your Claude Code chats in one place — browse, search, tag and resume every session on your Mac

Topics

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

57 Commits

Folders and files

Repository files navigation

Chatwerk icon

Chatwerk

All your Claude Code chats in one place.
Browse, search, tag and resume every Claude Code session on your Mac — with one click.

Release macOS 14+ Swift Zero dependencies MIT CI


Chatwerk main window — session list with live status, tags and transcript view
Shown with demo data — your sessions stay on your Mac.

If you use Claude Code a lot, you know the problem: dozens of sessions spread across projects, no overview, and finding that one chat from last week means grepping through ~/.claude or keeping a text file full of claude --resume <uuid> commands.

Chatwerk fixes that.

Features

  • 📋 Every session, one list — all sessions from all projects with automatic titles, grouped by time (Today / Yesterday / This Week / …), with size, message count and last-prompt preview per row — plus Claude Code's auto-cleanup countdown per session, so you see what's about to expire
  • 🔍 Full-text search — searches inside your chats (SQLite FTS5 index, built incrementally in the background). Press ⌘K for a Spotlight-style palette: recents when empty, live results as you type, ↩ to resume
  • 🏷 Tags, notes & favorites — color-coded tags you can rename, group and filter (hundreds stay navigable); an Unsorted smart filter surfaces chats you haven't organized yet, so nothing gets lost. Stored only in Chatwerk's own database, never inside ~/.claude
  • ▶️ One-click resume — double-click (or ⌘↩) and your terminal opens in the right project directory running claude --resume <id>. Supports Terminal.app, iTerm2, Ghostty and Warp (Warp opens with the resume command on your clipboard — paste and go)
  • 🟢 Live status — running sessions are badged in real time: green while Claude is busy, orange row highlight the moment Claude finishes and waits for you
  • 🔔 Ready alerts — optional sound (your system's alert tones) and notification banner when Claude finishes responding; click the banner to jump straight to that chat
  • 📄 Transcript viewer — read any chat without resuming it: newest exchange on top (flippable), chat-style bubbles with role avatars, day separators, inline markdown + code blocks rendered, tool runs collapsed into single "background steps" rows. Export as Markdown
  • 💰 Token & cost dashboard — token usage per model with estimated API-list-price cost (cache-aware: reads 0.1×, 1h-TTL writes 2×, subagents included), a 30-day daily-cost chart and per-session token counts. Subscription users get a "what would this cost on the API" insight
  • 📊 Storage & cleanup — sessions and disk usage per project, largest transcripts, safe archive (zip) and delete including every sidecar folder Claude Code keeps, plus one-click backup export of your tags, notes and index
  • 🎨 Themes — light/dark/system plus 8 accent colors, all dark-mode tuned
  • 🖥 Menu bar — a panel with your usage and estimated cost (last 5h, today, this week, this month, per model), recent sessions and the alert toggle
  • 🔒 100% local — Chatwerk reads your data from disk and never sends anything anywhere. It asks for at most two permissions: the one-time macOS Automation prompt to drive your terminal, and (only if you enable ready-alerts) notification permission

Install

Requirements: macOS 14+, Claude Code installed and used at least once.

Homebrew

brew install sewerkde/tap/chatwerk

Download

Grab the latest Chatwerk.dmg from Releases, drag Chatwerk to Applications.

Builds are signed with a Developer ID certificate and notarized by Apple — the app opens with a double-click, no Gatekeeper warnings.

Build from source

brew install xcodegen
git clone https://github.com/sewerkde/chatwerk.git
cd chatwerk
make app          # builds Release → dist/Chatwerk.app

Local builds are ad-hoc signed; release builds are signed and notarized with make notarize (needs a Developer ID certificate). Or run xcodegen generate and open Chatwerk.xcodeproj in Xcode. The app is pure Swift/SwiftUI with zero third-party dependencies — the full text index uses the system SQLite's FTS5.

How it works

Claude Code stores every session as a JSONL transcript under ~/.claude/projects/<encoded-cwd>/<uuid>.jsonl. Chatwerk:

  1. Scans those files with a cheap stat pass every few seconds — new and changed sessions appear live, and ~/.claude/sessions tells it which ones are running right now
  2. Reads only head/tail chunks of each transcript for titles (Claude Code's own ai-title lines) and metadata, so even 250 MB sessions list instantly
  3. Indexes message text incrementally into a local SQLite FTS5 database (~/Library/Application Support/Chatwerk/index.db) — transcripts are append-only, so only new bytes get parsed. Token usage is summed per model from the same pass, including the subagent transcripts Claude Code keeps in <uuid>/subagents/
  4. Resumes sessions by telling your terminal to run cd <project> && claude --resume <uuid>

Your notes, tags, favorites and custom titles live only in Chatwerk's database. Chatwerk never modifies ~/.claude — except when you explicitly archive or delete a session, which also removes its sidecar folders (file-history, tasks, subagent transcripts).

FAQ

What permissions does Chatwerk need? At most two: permission to send your terminal app the resume command (macOS "Automation" prompt on first use), and — only if you enable ready-alerts — the standard notification permission for the banner. Chatwerk reads ~/.claude directly, which requires no permission, and never touches anything else.

I run Claude Code with CLAUDE_CONFIG_DIR — will it find my sessions? Yes: point Settings → Advanced → Data folder at your custom directory. If claude isn't on your terminal's PATH, set its full path under Settings → General → Claude command.

Why does deleting ask about "sidecar data"? A session is more than its transcript: Claude Code also keeps file-edit backups, background task state and subagent transcripts. Chatwerk removes all of it so nothing is left behind.

Warp support? Warp can't be scripted with AppleScript, so Chatwerk opens Warp with the resume command already on your clipboard — paste (⌘V), hit return, and you're back in your session.

Will you support other AI CLIs (Codex, Gemini CLI, …)? Maybe later — the scanner/indexer layer is provider-shaped, but v1 stays focused on doing one thing well. Open an issue if you'd use it.

Contributing

Contributions are welcome! See CONTRIBUTING.md for the dev setup and a map of the codebase, and SECURITY.md for how to report a vulnerability privately. Bug reports and feature ideas via Issues — and if Chatwerk saves you time, a ⭐ helps others find it.

Roadmap

  • Local-AI chat summaries and auto-tag suggestions (fully offline)
  • Global quick-search hotkey (system-wide ⌘K)
  • Sparkle auto-updates

Disclaimer

Chatwerk is an independent, unofficial tool made by Sewerk. It is not affiliated with, endorsed by, or sponsored by Anthropic. "Claude" and "Claude Code" are trademarks of Anthropic, PBC — the names are used here only to describe compatibility. Chatwerk ships no Anthropic assets and talks to no Anthropic services; it only reads the local files Claude Code keeps on your own machine.

License

MIT © Sewerk

About

All your Claude Code chats in one place — browse, search, tag and resume every session on your Mac

Topics

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages