ThreadRecall
Home Privacy Demo Features Insights
Support · Quick Start

ThreadRecall Guide

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.40

Requires macOS 13 Ventura or later. Apple Silicon Mac required (Intel not supported).

Install from the DMG

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.

Did you double-click ThreadRecall while it was still inside the DMG? No problem — ThreadRecall will detect that and offer a one-button "Move to Applications" alert that copies it to the right place and relaunches automatically. Click Move, and you're set.
StepWhat 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.
Packaged beta note: The lightweight DMG does not bundle Ollama or AI models. Local AI remains optional and downloads separately only if you enable it. See section 07 for the why and how.

Your menu bar popover

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:

Claude ChatGPT Codex Gemini Perplexity
1Status + capture toggleShows whether ThreadRecall is capturing, paused, connecting, recovering, or stalled. If a running app needs refresh, ThreadRecall quietly tries one helper recovery first. If it still cannot recover, use Restart to kick capture back on.
2Source groupsClaude and Codex can capture and recall with trecall:. ChatGPT, Gemini, and Perplexity are captured but do not call ThreadRecall directly.
3Session countShows recent capture volume so you can tell whether memory is being built while you work.
4Pins + Memory BriefOpen row menus to copy a safe recall prompt, pin or unpin, and open or hide exported Obsidian notes.
5Footer actionsImport, Help, Feedback, and Quit live at the bottom. Help contains Open Guide, Open Logs, Restore from Backup, and Uninstall ThreadRecall. Feedback opens the form with your beta email filled in when available. Quit closes the menu bar app.

Keeping important sections close

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.

If ThreadRecall says it has not captured a meaningful section yet, wait a few seconds, make sure the app tile says capturing, then try again. ThreadRecall did not create a pin in that case; it is protecting you from a stale shortcut.
1Pinned sectionPins anchor the useful moment you are looking at, instead of pulling in every older topic from a long chat window.
2Action menuCopy a recall prompt, open the exported note, hide it from Obsidian, or unpin it.
3Scrollable listUp to five pins render inline. If you have more, the Pins card becomes a bounded scroll area so every pin remains accessible.

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.

Good uses for Pins: an architecture decision you keep referencing, a prompt template you worked out, a project context you return to weekly.
Why one recall prompt? Earlier builds had separate handoff and recall actions. The safer default is now one prompt: it reads the pin or session, asks the assistant to summarize it, and tells it to wait before doing work. If more context is needed, you can ask it to pull the full parent conversation next. That prevents tools like Codex from running commands or editing files just because you wanted context.

Picking up where you left off

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.

1Brief titleShows useful recent context when ThreadRecall has enough signal. If nothing useful is ready yet, the card says so instead of silently disappearing.
2Topic rowsEach row points to a real captured session or cluster of related work.
3Pin to steer itIf the Brief misses what matters, pin the relevant section from the live chat. Pins carry more weight next time.

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.

Tip: If the Brief does not reflect what you are working on, pin the relevant section from the live chat. Pinned content is weighted more heavily.

Stopping capture temporarily

Privacy Pause stops ThreadRecall from capturing new conversations for a set period. It does not delete anything already saved — it just pauses new capture.

1Pause only new captureExisting saved conversations stay in your archive.
2Choose durationUse 30 minutes, 1 hour, or indefinitely depending on how private the next work session is.
3Resume earlyTurn capture back on anytime from the same card or the main capture toggle.

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.

Making recall smarter while staying local

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.

1Enable when you want better matchingLocal AI helps ThreadRecall find related ideas even when you do not remember the exact words used in the original chat.
2ThreadRecall downloads the right modelsOllama itself does not come with every model. ThreadRecall pulls the embedding and chat models it needs.
3Private by designThe models run locally. Your captured conversations stay on your Mac.

Why enable it?

FeatureWhat 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.

How to set it up

  1. Open the ThreadRecall menu bar popover.
  2. Find the Local AI (Ollama) card.
  3. Click Enable Local AI. ThreadRecall installs or uses Ollama, then downloads the two local models it needs.
  4. Keep ThreadRecall open while the download runs. The card shows a checkmark when search and smart Obsidian titles are ready.
You can do this later. If you install Obsidian first and enable Local AI days later, ThreadRecall still works. Once Local AI is ready, the Obsidian card can offer Improve old titles for notes that were created before the chat model was available.
Disk space note: Local AI downloads about 2.3 GB of models. If you are tight on disk space, leave it off until you need semantic recall or smarter Obsidian titles.

Turning conversations into notes

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.

1Create or choose a vaultCreate ThreadRecall-Wiki in Documents for the easiest setup, or use an existing vault if you already have one.
2Open + ChangeOpen jumps to the vault in Obsidian after it has been registered. Change lets you pick another vault folder.
3Advanced controlsSync scope, note detail, and title-upgrade tools live behind Advanced so the happy path stays quiet.

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.

Note: Obsidian Sync does not require Obsidian to be running. It writes Markdown files directly to your vault folder — Obsidian picks them up next time you open it.

Customizing what syncs and how it looks

Advanced controls let you curate what ends up in your vault without turning first setup into a settings screen.

1. Sync scope — All sessions vs. Pinned only

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.

2. Note detail — Readable notes vs. Full captured text

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.

3. Obsidian actions on rows

Click a pinned row or Memory Brief row to open its action menu. When a vault is connected, you may see:

Your raw captures are never modified. Hiding a note only affects the Obsidian export — the original captured conversation text in memory.db stays exactly as it was captured.
Local AI is optional. Installing Ollama later is fine. When Local AI is ready, ThreadRecall can improve older fallback note titles from the Obsidian Sync card, but normal capture and Obsidian export do not require Ollama.

Bringing in past conversations

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.

1Import screenOpened from the footer when Import History is available.
2Source rowsEach row knows whether it needs an export file or can import automatically.
3Safe background importLarge histories can take a few minutes. ThreadRecall backs up existing memory first.

Supported imports:

AppHow 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 ActivityGemini 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.
Gemini Takeout gotcha: do not choose the top-level Google Takeout Gemini product. That export contains Gems and Scheduled Actions HTML, not chat history. For chats, choose My Activity → Gemini Apps and set the format to JSON.

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.

Restore captured memory

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.

Common use cases: recover after an accidental data wipe, roll back after a broken import, return to yesterday's memory after a database problem, or undo a bad local state after troubleshooting.

Restore from Help

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.

Restore is reversible. Before replacing 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.

Removing ThreadRecall

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.

Uninstall from Help

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.

No separate Python cleanup is needed for the current beta. ThreadRecall uses its own bundled helper. The uninstaller removes that helper and any legacy ThreadRecall Python files from older builds, but it does not install, uninstall, or modify system Python or Apple's Command Line Tools.
Your memory is preserved by default. The uninstaller removes the app and its runtime files but keeps your captured conversation history (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:

Type DELETE (all caps) to permanently wipe captured memory, or press Enter to keep:

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:

StepWhat 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:

ItemReason
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):

# Remove ThreadRecall's optional local AI models ollama rm nomic-embed-text ollama rm llama3.2:3b # Remove Ollama (Homebrew install) brew uninstall ollama # Or remove the app manually rm -rf /Applications/Ollama.app rm -f /usr/local/bin/ollama

After uninstalling, restart Claude Desktop, Codex, and Claude Code / Cowork to complete removal of the MCP integration.