One hotkey captures your AI conversation. One hotkey pastes it anywhere. Never re-explain yourself again.
ContextDrop is a Mac desktop app (Linux coming next) that runs silently in your menu bar. It watches your AI tools — Cursor, Claude desktop, VS Code, and more — and when you hit a hotkey, it extracts a high-quality portable context from your current conversation using a hybrid Knowledge Graph + Salience Heatmap pipeline. Hit the paste hotkey in any new session and you continue exactly where you left off.
You are deep in a Cursor session debugging a LangGraph pipeline. You switch to a new Claude chat. Everything is gone. You spend 10 minutes re-explaining what you are building, what you already tried, and where you are stuck. This happens dozens of times a day.
Every AI tool has memory inside itself. Nothing makes that memory portable across tools in one keystroke. ContextDrop is the missing layer.
- ContextDrop runs in your menu bar, watching configured apps via the Mac Accessibility API
- Hit
Cmd+Shift+C— a small overlay appears with 4 context depth modes - ContextDrop reads your conversation, runs it through the extraction pipeline, and stores the result locally
- Hit
Cmd+Shift+Vin any text field in any app — the compressed context is injected directly (no clipboard interaction) - The new AI session knows your goal, current task, decisions made, what failed, and what to do next
ContextDrop does not summarise. It compiles a portable working state.
Raw conversation turns
↓
Message ingestion (claims, constraints, artifacts, questions)
↓
Knowledge graph (entities + relationships + source turn IDs)
↓
Salience heatmap (Hot / Warm / Cold / Frozen per node)
↓
State diff (incremental, not full re-read every turn)
↓
Stage 1 Claude call → structured JSON from Hot + Warm nodes
↓
Stage 2 Claude call → readable 9-field markdown handoff
↓
Critic pass → validate continuability, patch gaps
↓
Final portable context ready to paste
| Hotkey | Action |
|---|---|
Cmd+Shift+C |
Capture context from current watched app |
Cmd+Shift+V |
Paste most recent context into focused text field |
Both hotkeys are fully customisable in Settings.
When you hit Cmd+Shift+C, a small overlay appears with four options:
| Mode | Token budget | Use when |
|---|---|---|
| Quick | 2,000 tokens | Fast handoff, short session |
| Standard | 8,000 tokens | Most use cases |
| Deep | 20,000 tokens | Long complex sessions |
| Descriptive | 8,000 tokens | Verbose output, more detail per field |
Auto-selects Standard after 5 seconds if no choice is made.
- Cursor
- Claude desktop
- VS Code
- Warp
- Terminal
- Any native macOS app with accessible text content
Every context capture produces a structured 9-field handoff:
## User Goal
What the user is trying to accomplish.
## Current Task
The immediate thing the next assistant should help with.
## Relevant Background
Important facts, constraints, decisions, and assumptions.
## Constraints and Preferences
Hard requirements and style preferences the user has stated.
## Important Artifacts
Code, file names, APIs, commands, prompts, and data that matter.
## Decisions Made
Choices that should not be revisited unless the user asks.
## Open Questions
Things still unresolved or needing clarification.
## Latest State
Where the conversation currently stands.
## Do Not Repeat
What has already been explained — the next LLM should not re-cover this.Coming soon — DMG download
Development setup:
git clone https://github.com/your-username/contextdrop
cd contextdrop
npm install
npm run devRequired on first launch:
- Grant Accessibility permission (System Preferences → Privacy & Security → Accessibility)
- Copy
.env.exampleto.envand fill inANTHROPIC_API_KEY
Optional but recommended — Langfuse observability:
ContextDrop emits OpenTelemetry traces for every capture and paste so you can
see Claude latency, token usage, prompts, outputs, and pipeline errors in
the Langfuse dashboard. Add to .env:
LANGFUSE_PUBLIC_KEY=pk-lf-...
LANGFUSE_SECRET_KEY=sk-lf-...
LANGFUSE_BASE_URL=https://cloud.langfuse.com # or https://us.cloud.langfuse.com / https://jp.cloud.langfuse.comFree keys at cloud.langfuse.com. If unset, telemetry is silently disabled and the app works normally.
| Layer | Technology |
|---|---|
| Desktop shell | Electron |
| Language | TypeScript (strict) |
| UI | React 18 + Vite + Tailwind CSS |
| Build | electron-vite |
| Database | SQLite via better-sqlite3 + Drizzle ORM |
| AI pipeline | Anthropic SDK — claude-sonnet-4-5 |
| Schema validation | Zod |
| Paste injection | robotjs |
| Mac accessibility | node-mac-accessibility + Swift CLI helper |
| Observability | Langfuse v5 + OpenTelemetry (@langfuse/otel) |
| Packaging | electron-builder |
contextdrop/
├── src/
│ ├── main/ # Electron main process
│ │ ├── index.ts # App entry, window management
│ │ ├── hotkeys.ts # Global hotkey registration
│ │ ├── tray.ts # Menu bar tray icon
│ │ ├── accessibility/ # Mac AX API reading
│ │ │ ├── reader.ts # Main accessibility reader
│ │ │ └── swift/ # Swift CLI helper source
│ │ ├── pipeline/ # Context extraction pipeline
│ │ │ ├── ingestion.ts # Message parsing
│ │ │ ├── graph.ts # Knowledge graph
│ │ │ ├── heatmap.ts # Salience scoring
│ │ │ ├── statediff.ts # State tracking
│ │ │ ├── extractor.ts # Stage 1 Claude call
│ │ │ ├── compiler.ts # Stage 2 Claude call
│ │ │ └── critic.ts # Critic pass
│ │ ├── paste.ts # Context injection
│ │ ├── telemetry/ # Langfuse / OpenTelemetry
│ │ │ └── langfuse.ts # Singleton tracer + lifecycle
│ │ └── db/ # SQLite / Drizzle
│ │ ├── schema.ts
│ │ └── queries.ts
│ ├── renderer/ # React dashboard UI
│ │ ├── App.tsx
│ │ ├── pages/
│ │ │ ├── Stats.tsx
│ │ │ ├── History.tsx
│ │ │ └── Settings.tsx
│ │ └── components/
│ ├── overlay/ # Capture mode overlay (separate window)
│ │ └── Overlay.tsx
│ └── preload/ # IPC bridge
│ └── index.ts
├── ARCHITECTURE.md
├── CLAUDE.md
├── PROJECT_PLAN.md
└── README.md
Every paste event is logged. The primary success metric is:
Number of times a user pasted a ContextDrop context into a new AI session
Secondary metrics tracked in the dashboard:
- Total captures vs total pastes (paste rate = value proof)
- Most captured apps
- Most pasted-into apps
- Average context depth mode selected
- Context quality scores from the critic pass
- Architecture and ITDs defined
- Mac Accessibility API reading (Cursor + Claude desktop)
- Core pipeline (graph + heatmap + 3-stage Claude calls)
- Hotkeys + overlay UI
- SQLite storage + dashboard
- Paste injection
- Statistical validation framework
- DMG packaging
- Linux support (AT-SPI)
- Langfuse / OpenTelemetry tracing for every Claude call, read, and paste
MIT