Everything you need to get started — install, first-run setup, the menu bar interface, recall commands, section-aware Pins, Memory Briefs, Local AI with Ollama, Obsidian Sync, and clean uninstall.
Current beta: v1.0 beta8.40Requires macOS 13 Ventura or later. Apple Silicon Mac required (Intel not supported).
The current beta ships as a ThreadRecall-1.0-beta8.x.dmg file. Open the DMG, drag ThreadRecall.app to Applications, then open the app from Applications.
ThreadRecall bundles its local helper inside the app. On first launch, or after an update where the bundled helper is newer, the app installs or refreshes that helper automatically. The helper contains the local backend code ThreadRecall needs for capture, imports, recall commands, Memory Briefs, and Obsidian Sync.
The public DMG contains only ThreadRecall.app and the Applications shortcut. To uninstall later, use the in-app Help menu. For normal updates, drag the new app over the old one — do not uninstall first.
| Step | What to do |
|---|---|
| 1 — Drag to Applications | Open the latest ThreadRecall-1.0-beta8.x.dmg and drag ThreadRecall.app onto the Applications folder in the installer window. Updating works the same way: replace the old app with the new one. |
| 2 — Open ThreadRecall | Launch ThreadRecall.app from Applications. If macOS asks for confirmation because it was downloaded from the internet, choose Open. |
| 3 — Install Local Helper | Click Install Local Helper when prompted. If Claude or Codex is already open, ThreadRecall may remind you to quit and reopen them after setup so trecall: commands load the latest connector. You should not need Terminal, Apple's Command Line Tools, or a separate Python install. |
| 4 — Grant Accessibility | Open System Settings → Privacy & Security → Accessibility and enable ThreadRecall. If macOS lists ThreadRecall Helper separately, enable that exact helper too. If you see duplicate stale entries, remove them and add the current helper again from ~/Library/Application Support/ThreadRecall/threadrecall-helper/. |
| 5 — Restart recall clients | Quit and reopen Claude Desktop, Codex, or Claude Code / Cowork after installing or updating ThreadRecall. Capture can start without this, but recall commands load when those apps launch. |
ThreadRecall lives in your Mac menu bar as a small dot icon. Click it to open the popover. You do not need to keep a window open — it runs quietly in the background and captures conversations as you work.
ThreadRecall captures conversations from the apps you have installed and connected:
Last 30 days · updated a few seconds ago
trecall:. ChatGPT, Gemini, and Perplexity are captured but do not call ThreadRecall directly.Recall works through trecall: commands in supported AI apps, with shortcuts exposed from the ThreadRecall popover.
trecall: read pin 82432b63-...trecall:The prefix tells the assistant to use ThreadRecall instead of answering from its own memory.1. From inside a supported AI app — type trecall: followed by your query directly in the chat. The trecall: prefix is required — it tells the AI to call ThreadRecall rather than answer from its own knowledge.
2. From the ThreadRecall popover — click a Memory Brief row or Pinned section and choose Copy recall prompt. The copied prompt starts with the exact trecall: command, includes the source/topic IDs, and asks the assistant to summarize the context and wait for your next instruction.
trecall: — for example trecall: rebase strategy. Without the prefix, the AI answers from its own knowledge and ignores your captured history.
trecall: your topic in any chat. The assistant may need to load ThreadRecall the first time in a new chat, and may ask for permission on first use.
trecall: does not trigger a search, use the explicit form instead — this is more reliable across all supported apps and chat sessions:
trecall: Pokémon cardsUse ThreadRecall to search for: Pokémon cardsUse ThreadRecall to search my past chats for: Pokémon cards
yes pull, dig deeper, or show full context. Copied recall prompts are more direct: they read a known pin or session by stable ID, summarize it, and wait.
Supported trecall: commands:
| What you type | What it does |
|---|---|
trecall: rebase strategy |
Searches your captured sessions for conversations about rebase, even if those exact words were not used. |
trecall: that book about regret |
Finds a session by meaning rather than exact keyword — works for vague or half-remembered queries. |
trecall: pricing decision Q3 |
Surfaces conversations where pricing direction was discussed, across all captured apps. |
trecall: pin this |
Pins the latest meaningful section in the current live chat so it stays accessible and is weighted more heavily in future recall and Memory Briefs. If ThreadRecall has not captured a meaningful section yet, it asks you to wait and retry instead of creating a stale pin. You can also write trecall: pin this as [title] to set a custom name. |
trecall: read pin <pin_id> |
Reads a pinned section directly by stable ID. ThreadRecall copies this for you from the pin menu, so you do not need to type the ID by hand. |
trecall: read session <session_id> |
Reads a captured session directly by stable ID. Memory Brief copies this when a row has a session ID. |
trecall:) are a separate feature that only work in apps where ThreadRecall's MCP server is connected and the tools are loaded.
trecall: commands inside those apps. Search that captured history from Claude, Codex, or the ready-to-paste shortcuts in the ThreadRecall popover.
trecall: <topic> to find something by meaning, like trecall: rolling stones album. Use trecall: pin this to save the latest useful section of the current chat. If that snippet is too narrow later, ask the assistant to pull the full conversation.
Pins let you mark important work so it stays accessible at the top of your list, regardless of how many newer conversations have been captured since.
In long chat windows, trecall: pin this anchors the latest meaningful section, not necessarily the entire parent chat. That means you can pin the resume discussion, the bug diagnosis, and the release checklist separately even if they happened in one long Claude or Codex window.
Start with the focused section. A pinned section summarizes first, then lets the assistant offer to pull the full parent conversation if the snippet is too narrow.
To pin the current section, type trecall: pin this inside a supported AI app. To unpin, use the pinned row action menu.
Pinned sections are also given priority in Memory Briefs and semantic recall — the system knows they are important to you.
If ThreadRecall cannot confirm that the live app has captured recent text, it will refuse to create the pin and ask you to recover capture first. If you named a specific thing to pin and ThreadRecall says that section has not been captured yet, wait a few seconds, make sure the app tile says capturing, and try again. That is intentional: it is safer to create no pin than to anchor an older section by mistake.
A Memory Brief is a short digest of your most relevant recent AI work — automatically assembled from your captured sessions. It surfaces when you open the popover and is most useful at the start of a work session or when returning to a project after time away.
The Brief considers recency, how often topics appear, and what you have Pinned. It is not a summary of every conversation — it is a signal of what probably matters right now.
Memory Brief rows are session-level, so their main action is Copy recall prompt. It creates a short prompt that starts with trecall: read session ... when a stable session ID exists, then asks the assistant to summarize and wait. If that recalled context is important, pin the useful section from the live chat after it opens.
Memory Briefs also surface through trecall: commands in Claude Desktop, Cowork, and Codex (when Codex is configured to use the Claude MCP). In Claude and Cowork, ThreadRecall tools may need to be loaded the first time in a new chat. ChatGPT, Gemini, and Perplexity do not support direct recall — their sessions are captured but cannot call ThreadRecall back.
Privacy Pause stops ThreadRecall from capturing new conversations for a set period. It does not delete anything already saved — it just pauses new capture.
Pause new capture when a conversation should not be saved.
The menu bar badge changes until capture resumes.
The menu bar icon changes to indicate pause is active. You can cancel a pause early by clicking the icon and toggling capture back on.
ThreadRecall works without Ollama. Capture, basic recall, Pins, Import History, and Obsidian export all run without setting up Local AI.
Local AI is the optional upgrade path. It uses Ollama on your Mac to make ThreadRecall better at meaning-based recall, cleaner Memory Brief labels, smarter Obsidian titles, and local summaries. Nothing is sent to a cloud model for this path.
Enable semantic search, smarter titles, and local summaries.
| Feature | What Local AI improves |
|---|---|
| Semantic recall | Finds conversations by meaning, not just keywords. For example, searching for "pricing call" can still find a thread where you talked about packages, launch tiers, or what to charge. |
| Memory Briefs | Creates cleaner topic labels and summaries so the brief feels like a useful handoff rather than a pile of extracted fragments. |
| Obsidian Sync | Generates smarter note titles and can improve older fallback titles once the chat model is ready. |
Optional Obsidian Sync exports captured sessions and pinned sections as Markdown notes directly into your Obsidian vault. Session notes are auto-titled and tagged by topic. Pin notes live under a dedicated Pinned/ folder so important sections are easy to open later.
To connect your vault: use the Obsidian Sync card in the ThreadRecall popover. You can create a new ThreadRecall-Wiki vault in Documents, or choose an existing Obsidian vault folder that contains .obsidian. Sync runs automatically in the background after that.
ThreadRecall-Wiki
ThreadRecall-Wiki in Documents for the easiest setup, or use an existing vault if you already have one.ThreadRecall may regenerate ThreadRecall-managed notes during sync, but it should not delete your own Obsidian notes. If you remove ThreadRecall, your vault notes stay exactly as they are.
Advanced controls let you curate what ends up in your vault without turning first setup into a settings screen.
In the Obsidian Sync card, open Advanced. The Sync scope picker offers two modes:
You can switch modes any time. Switching to Pinned only removes ThreadRecall-managed notes for non-pinned sessions on the next sync; switching back to All sessions restores them.
Readable notes keeps long captures compact by including the beginning and latest captured text. Full captured text exports the complete captured transcript. Full mode is useful when Obsidian is your archival source of truth, but the vault can grow much larger and some captured UI text may look messy.
Click a pinned row or Memory Brief row to open its action menu. When a vault is connected, you may see:
memory.db stays exactly as it was captured.
ThreadRecall only captures conversations from the moment it is installed onwards. Import History lets you bring in your existing conversation history from supported exports so your memory starts with real context.
Imports stay local. ThreadRecall reads conversation files only and skips account, auth, and config files when present.
Bring in old exports so ThreadRecall starts with real context.
A backup is created before import begins.
Supported imports:
| App | How to export |
|---|---|
| ChatGPT | Settings → Data controls → Export data. You will receive a ZIP file by email. Choose the ZIP, the unzipped folder, or the conversations.json file inside. |
| Claude | Settings → Privacy → Export data. Choose the exported ZIP, folder, or JSON conversation file. |
| Gemini | Google Takeout → My Activity → Gemini Apps → JSON format. Choose the Takeout ZIP, folder, or MyActivity.json. |
| Codex | Auto-imports local sessions from ~/.codex/ on this Mac, or choose a Codex ZIP/folder from another Mac containing sessions/ or archived_sessions/. |
| Perplexity | Historical import is coming soon. New Perplexity chats are captured automatically while the app is open and Accessibility access is granted. |
Import runs in the background and may take a few minutes for large histories. A backup of your existing memory is created automatically before the import begins.
The Import History button opens the import screen for supported sources. You can import more than once — useful if you have exports from multiple computers or you download a fresh export later. ThreadRecall skips duplicates where it can and reports when an import is already up to date.
Use Restore from Backup when ThreadRecall's local memory suddenly looks wrong: the session count drops, recent conversations disappear, an import goes sideways, or an update leaves the app showing less history than you expect. It is a rollback for the local memory database, not a normal maintenance step. This was added in beta8.61; see the changelog for recent beta updates.
ThreadRecall creates automatic local backups of memory.db when the helper starts and after successful history imports. If something looks off, restore from a recent backup before uninstalling, re-importing everything, or deleting any files.
Click the ThreadRecall menu bar icon → in the popover footer, click Help → click Restore from Backup…. ThreadRecall lists available automatic backups with their session counts and newest session dates. Choose a backup, confirm, and ThreadRecall restores it.
memory.db, ThreadRecall saves your current database into a restore-safety-* folder inside ~/Library/Application Support/ThreadRecall/backups/.
The restore flow stops background capture briefly, validates the selected backup, restores the database, restarts ThreadRecall's background services, and refreshes the menu. Raw captured session files in sessions/ are not deleted.
Uninstall is available from inside the running app. For normal updates, do not uninstall first — install the new DMG by dragging ThreadRecall.app over the old app in Applications.
Click the ThreadRecall menu bar icon → in the popover footer, click Help → click Uninstall ThreadRecall…. ThreadRecall shows a confirmation alert; click Uninstall. A Terminal window opens with the uninstall script running, and the ThreadRecall menu bar app quits immediately so you can watch the script work.
The public DMG does not include a standalone Uninstall app. Keeping uninstall inside Help makes the update path clearer and avoids forcing macOS to re-prompt for Accessibility during routine upgrades.
memory.db), backups, and caches. You are asked separately — with an explicit prompt — if you want those deleted too. The default answer is No.
When the script prompts: answer y to the first "Are you sure?" question to proceed with uninstall. Then when it asks about deleting your captured memory and backups, you'll see this prompt:
This is intentionally strict. Press Enter to preserve your conversation history (the default and recommended choice). Only type the exact word DELETE in capitals if you truly want to remove your captured AI conversations permanently — this cannot be undone from inside ThreadRecall. Any other answer (including y, yes, or empty input) preserves your data.
At the end the script prints a success message and offers to close the Terminal window automatically — if you haven't granted Automation permission for Terminal, just press Cmd+W to close it yourself.
The uninstaller handles all of the following in order:
| Step | What is removed |
|---|---|
| 1 — Daemons | Background capture service is stopped and its LaunchAgent plist is removed. |
| 2 — App | /Applications/ThreadRecall.app. |
| 3 — MCP config | ThreadRecall entries are removed from Claude Desktop, Codex, and Claude Code / Cowork configs. Your other MCP servers are untouched. |
| 4 — Runtime files | The bundled threadrecall-helper, app runtime files, and any legacy ThreadRecall Python files are removed from ~/Library/Application Support/ThreadRecall/. Legacy home-folder copies such as ~/threadrecall_mcp.py are removed too. |
| 4b — Logs | ~/Library/Logs/ThreadRecall/ is removed. |
| Optional | You are asked whether to permanently wipe captured memory. The default is No. Only if you type the exact confirmation phrase shown by the script will memory.db, sessions/, backups/, and cache files be deleted. |
What the uninstaller does not touch:
| Item | Reason |
|---|---|
| Obsidian vault notes | These are your notes in your vault folder. ThreadRecall does not own them. |
| Ollama | You may use Ollama for other things. If you installed it only for ThreadRecall, see below. |
| System Python / Command Line Tools | Current beta builds do not require a separate Python install. If Python or Apple's Command Line Tools already exist on your Mac, ThreadRecall leaves them alone. |
Optional: remove Ollama (only if you installed it exclusively for ThreadRecall):
After uninstalling, restart Claude Desktop, Codex, and Claude Code / Cowork to complete removal of the MCP integration.