Star 历史趋势
数据来源: GitHub API · 生成自 Stargazers.cn
README.md
KIKUmap: a mind map for your Claude and ChatGPT chats

English · 简体中文 · 日本語

A mind map for your Claude and ChatGPT chats, in the Mac menu bar.
See what's running, what's done and what needs you.

Download KIKUmap for macOS

KIKUmap - A mind map for your Claude and ChatGPT chats | Product Hunt

Latest release macOS 13 or later Swift, no dependencies MIT license GitHub stars Support on Ko-fi

Website · Features · Install · Privacy · FAQ · Support ❤️

Dragging the Work topic across the map: the other topics slide apart to make room, and it lands where the gap was

Watch the KIKUmap tour

Features

The menu-bar icon counting running chats in a turning ring, then a red unread badge, then an exclamation mark when a chat is waiting for you

1. Status in the menu bar

A ring counts running chats. A red badge counts finished, unread ones, with ! when one is waiting for you (to approve or answer, or it stopped on an error). An optional sound or voice says which chat is done.

2. Chats as a map

Chats pinned in Claude and in the ChatGPT app, plus Claude Code sessions, line up in the left column. Drag them onto your own topics. Each chat is tagged Claude or GPT.

Selecting three chats and dragging them onto Side projects together
Clicking the In progress tag highlights the chats that have it; the tag is then dragged onto a chat

3. Colors, shapes and tags

Give a topic a color and a shape. Tag chats, and click a tag to highlight every chat that has it. Drag the top edge of the tags to make them taller or shorter, or tuck them away (⌃⌘G). In a short window zoomed in, they step aside until there's room: make the window taller or press ⌘-.

Settings → Colors has eight color sets for the whole window (Classic, KIKU flower, Bauhaus black, Retro, Deep sea, Neon, Sunset, Candy), or pick each color yourself.

4. Keyboard-first

⇥ subtopic · ⏎ sibling · ⌥↑↓ move · ⌘Z undo · ⌘F search · space opens a chat.

Tab adds a subtopic, Return adds a sibling, Option-Up moves it, Command-Z undoes
The timeline: past runs with their times, and scheduled tasks with countdowns

5. Timeline

When each chat ran, and the scheduled tasks coming up, with countdowns.

6. Export and import

Each Claude chat as files: a summary, prompts, the conversation and artifacts. Import them into another Claude account.

The export window and the folder of Markdown files and artifacts it writes
KIKUmap widgets in three sizes: time worked in the last 24 hours, usage, and in the large one the busiest chats and the last 7 days

7. Desktop widget

Time worked in the last 24 hours and the last 7 days, plus Claude and ChatGPT usage with plan names. Three sizes, macOS 14 or later.

8. Statistics

Time per chat and session over 7, 14, 30 or 90 days. ⌘Y.

Statistics: time per chat and session in bars over seven days
Finished chats light up
Finished chats light up on the map.
Search
Search topics, chats and tags.
Today in the menu
Today: which chats and sessions worked, and how long.
Usage in the menu
Usage for the session and the week.
The map as a PDF
PDF of the whole map.
Daily backups
Daily backups of the map.
Light or dark
Light or dark.
English and Chinese
English · 中文.

Works with: the Claude desktop app · Claude Code (Terminal, VS Code, Cursor, the app's Code mode) · the ChatGPT desktop app · Codex in VS Code or the terminal.

Native and light: Swift and AppKit only. No Electron, no web view, no third-party code (line icons from Lucide, ISC).

Install

  1. Download Kikumap.dmg (macOS 13 or later, Apple silicon and Intel) and drag KIKUmap to Applications.
  2. On first launch, macOS can't check the app (it isn't notarized). Click Done, then System Settings → Privacy & Security → Open Anyway.
  3. Allow Accessibility when the intro asks. Everything else is optional.
  4. Pin chats in Claude or ChatGPT to follow them.
Build from source

Needs the Xcode Command Line Tools.

git clone https://github.com/tang1693/KIKUmap.git
cd KIKUmap
open Install.command

Install.command builds with swiftc, installs to ~/Applications and signs with a local certificate, so permissions survive rebuilds. scripts/build-release.sh builds the disk image.

Privacy

  • Everything stays on the Mac, in ~/Library/Application Support/ClaudeConsole/.
  • One permission is required: Accessibility, to read the chat lists in the Claude and ChatGPT windows. Every permission is explained before macOS asks.
  • No network requests, except the optional usage lookups (off by default) to Anthropic and OpenAI. Those read the sign-ins Claude Code and Codex already keep on the Mac, and never save them. Neither company has said apps may do this, so these lookups could be blocked.
  • Export (with summaries) and Import paste through the clipboard. What KIKUmap pastes is marked for clipboard history apps to skip and kept off your other devices. Each summary comes through Claude's own Copy button, which a clipboard history app may keep. Your clipboard is put back after each step.
What each source and permission is for
ShowsComes fromPermission
Running, unread, pinned Claude chatsThe Claude app's sidebarAccessibility
Claude waiting for you (to approve or answer) and finished Cowork tasks, also with Claude's window closed (optional)Claude's notifications in Notification CenterFull Disk Access
Claude Code sessionsClaude Code hooks in ~/.claude/settings.json (backed up first)none
ChatGPT chatsThe ChatGPT app's files in ~/.codex (read-only)none
Running, done and unread for ordinary ChatGPT chats (not Codex)The sidebar in ChatGPT's window, while part of the window can be seenAccessibility
A finished session you're looking at counts as readThe window titles of its editor or terminal, while that app is in frontAccessibility
Desktop widgetOne file KIKUmap writes for it (widget.json)none
Claude usage and scheduled tasks (optional)Anthropic's usage API, with Claude Code's sign-inKeychain
ChatGPT usage (optional, experimental)OpenAI's usage interface, with Codex's sign-innone

ChatGPT: Codex chats are supported best (read from the app's files, right even with its window closed). Ordinary chats are supported less well: they're read off ChatGPT's window, only while part of it shows.

Not shown: unpinned chats, and anything running on another computer, a server or in the cloud.

All keyboard shortcuts
⇥ / ⌥⇥new child / new parent topic
⏎ / ⌥⏎ / ⇧⏎new sibling below / above / new main topic
⌘⏎, double-clickrename
⌫ / ⌥⌫delete (pinned chats stay in the left column) / delete just the topic, keeping its items (also with several selected)
⌥.fold / unfold
↑ ↓ ← →select the nearest item that way
⌥↑ ⌥↓ / ⌥← ⌥→move up or down / move a level
⌘↓, tap spaceopen the chat in its app
⌘↑up to the topic it's in
drag on empty space, ⇧/⌘-clickselect several
hold space, two-finger swipemove around the map
⌃⌘S / ⌃⌘G / ⌃⌘Tleft column / tags / timeline
↑ ↓ in the left columnpick the row above or below (the map selects its chat too)
⏎, space in the left columnopen the chat in its app
⌘Ystatistics
⌘Rrefresh
⌘Z / ⇧⌘Zundo / redo
⌘Fsearch
⌘E / ⇧⌘Emap as PDF / export chats
⇧⌘Umark unread / read
⌘+ / ⌘- / pinch / ⌘0bigger / smaller / zoom / fit
⌃⌥C (changeable, but not to KIKUmap's own ⌃⌘S / ⌃⌘G / ⌃⌘T / ⌥⌘H)show or hide the map from anywhere

FAQ

Is this made by Anthropic or OpenAI?

No. KIKUmap is an independent, open-source project. The Claude app has no public API, so KIKUmap reads its window through Accessibility; an update to Claude or ChatGPT can break parts of it until KIKUmap catches up.

Why "Open Anyway"?

Notarizing needs a paid Apple developer account, and KIKUmap is free. Building from source works too: plain Swift, no dependencies.

Claude's window is closed. What happens?

⌘W only hides it. KIKUmap reads Claude's chats from the window, so it can't see them until the window is back on the current desktop; meanwhile running chats show "running?". Once it's back, one found done says "done after 14:00" (when it was last seen running), since when it finished isn't known. Claude Code and Codex chats aren't affected. ChatGPT's ordinary chats are read from ChatGPT's window the same way, while part of it can be seen.

A session finished while I watched it. Why is it still unread?

KIKUmap marks a finished session read by itself only when the window in front can only be that session's: for Claude Code, its folder's window in VS Code or Cursor, or a terminal window whose title shows both its folder and claude; for Codex, its folder's window in VS Code. If another window or tab could be showing it too, such as another editor window on its folder or a folder above it, it stays unread. Codex sessions in a terminal stay unread too (KIKUmap can't tell which terminal runs them). Open it from KIKUmap, or select it and press ⇧⌘U, to mark it read.

Something isn't showing
  • ▸ To-do in the top bar lists what's missing, with a button for each.
  • Claude chats: pin them, and keep Claude's sidebar open on Chat with Pinned unfolded.
  • Claude Code: Settings → Access → Claude Code → Connect, then start a new session.
  • Widget: macOS 14 or later, with KIKUmap in Applications. Right-click the desktop → Edit Widgets.
  • Still stuck: Settings → Access → Diagnostic report (no chat titles or messages in it) and open an issue.
Why the name?

Kiku (菊) is Japanese for chrysanthemum: the little flower in the menu bar.

Contributing

Issues and pull requests are welcome, especially when a Claude or ChatGPT update breaks something. See the contributing guide and the code of conduct; security problems go through the security policy.

Support

KIKUmap is free. If it helps, a coffee keeps it going ❤️

Buy me a coffee on Ko-fi

License

MIT. Claude is a trademark of Anthropic and ChatGPT a trademark of OpenAI; this project is independent and not endorsed by either.

关于 About

A mind map for your Claude/ChatGPT chats — macOS menu-bar app
claudegptmacmenu-bar-appmind-mapopen-sourceswift

语言 Languages

Swift98.4%
Shell0.8%
Python0.8%

提交活跃度 Commit Activity

代码提交热力图
过去 52 周的开发活跃度
70
Total Commits
峰值: 36次/周
Less
More

核心贡献者 Contributors