Skip to content

trilogy-group/ContextDrop

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ContextDrop

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.


The problem

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.


How it works

  1. ContextDrop runs in your menu bar, watching configured apps via the Mac Accessibility API
  2. Hit Cmd+Shift+C — a small overlay appears with 4 context depth modes
  3. ContextDrop reads your conversation, runs it through the extraction pipeline, and stores the result locally
  4. Hit Cmd+Shift+V in any text field in any app — the compressed context is injected directly (no clipboard interaction)
  5. The new AI session knows your goal, current task, decisions made, what failed, and what to do next

Context extraction pipeline

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

Hotkeys

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.


Context depth modes

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.


Supported apps (Mac)

Native (full conversation tree via Accessibility API)

  • Cursor
  • Claude desktop
  • VS Code
  • Warp
  • Terminal
  • Any native macOS app with accessible text content

Output format

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.

Installation

Coming soon — DMG download

Development setup:

git clone https://github.com/your-username/contextdrop
cd contextdrop
npm install
npm run dev

Required on first launch:

  • Grant Accessibility permission (System Preferences → Privacy & Security → Accessibility)
  • Copy .env.example to .env and fill in ANTHROPIC_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.com

Free keys at cloud.langfuse.com. If unset, telemetry is silently disabled and the app works normally.


Tech stack

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

Project structure

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

Metrics (revenue proof)

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

Roadmap

  • 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

License

MIT

About

No description, website, or topics provided.

Resources

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors