Sharpie is a macOS AI rewrite layer for serious work. Select a rough thought, press Command-/, and Sharpie turns it plus the right tiny context pack into one excellent prompt or task brief for the AI tool you already use.
The goal is not another chat app. The goal is a native Mac reflex: select thought, sharpen thought, keep moving.
Sharpie is being reimagined around three ideas:
- Fast AI rewrites. Sharpie uses the AI CLIs users already have, with cached context, compact prompts, backend readiness, and optional BYOK Fast Lane to keep the rewrite fast.
- Small visible context. Sharpie uses a compact Context Receipt such as
Cursor · Sharpie · main · 4 changed files · clipboard errorso you can see what informed the rewrite. - Project memory without hidden clutter. Human-authored project memory lives in
.sharpie/; generated indexes live in Application Support as rebuildable cache.
Read PRD.md for the product source of truth and AGENTS.md for implementation rules.
Sharpie should feel like a premium native Mac command instrument: Perplexity-like restraint, Spotlight-like speed, Raycast-like utility, and Apple-native calm.
The core surface is Command Bloom:
Sharpie
What are you trying to do?
fix settings weirdness
Cursor · Sharpie · main · 4 files
The output should look like a task brief, not a chat transcript.
The rewrite pipeline is CLI-first:
- Capture selected text or fallback input.
- Build a Context Pack from cached snapshots.
- Assemble a compact prompt for the right output shape.
- Route to the fastest healthy installed AI CLI.
- Optionally use BYOK Fast Lane when the user explicitly enables it.
- Replace the selected text when safe, otherwise copy the result.
Latency targets:
| Step | Target |
|---|---|
| Hotkey to visible UI | under 100ms |
| Hotkey to backend dispatch | usually under 500ms |
| CLI rewrite | usually under 3s |
| BYOK Fast Lane rewrite | usually under 2s |
| Backend hard timeout | 8s |
Onboarding a project is optional. Sharpie should work without it, but onboarded projects get better context.
Human-authored project memory:
project/
.sharpie/
context.md
preferences.md
recent-decisions.md
ignore
Generated cache, added progressively as needed:
~/Library/Application Support/Sharpie/Projects/<project-hash>/
manifest.json
symbols.db
files.db
graph.json
last-indexed.json
.sharpie/ should be inspectable, editable, and optionally committed. Generated indexes are cache, stay local, and should be safe to clear and rebuild.
Sharpie should use deterministic repo maps before heavier AI memory.
- Use an aider-style repo map for important files, classes, functions, signatures, imports, and dependencies.
- Use macOS FSEvents to mark onboarded projects dirty while Sharpie is running.
- Debounce changes by roughly 2 to 5 seconds.
- Incrementally reparse changed files only.
- Use the latest cached index on hotkey, even if slightly stale.
- Keep V1 context around 500 to 1,200 tokens.
- Never dump whole files by default.
Tree-sitter is the preferred future direction for fast multi-language parsing. SourceKit/IndexStoreDB can come later for deeper Swift intelligence. SCIP can come later as a language-agnostic interchange format.
- By default, Sharpie itself makes no outbound network calls.
- By default, AI traffic happens inside local CLIs the user already installed and authenticated.
- Optional BYOK Fast Lane may make direct provider calls only when explicitly enabled.
- No required API keys.
- Optional BYOK secrets are stored only with explicit consent, preferably in macOS Keychain, or read from environment variables.
- No telemetry.
- No analytics.
- No crash reporter.
- No update checker.
- No accounts.
- No cloud sync.
- No hidden full-computer indexing.
Requires macOS 14+ and Xcode 16+ with the Swift 6 toolchain.
make app
open build.noindex/Sharpie.appRun tests when relevant:
swift test- PRD.md: product direction, UX, architecture, milestones, and hard no-list
- AGENTS.md: instructions for AI coding agents working in this repo
- CLAUDE.md: small compatibility pointer for Claude Code
Sources/Sharpie/Resources/sharpen.md: canonical bundled prompt resource
MIT. See LICENSE.