Obsidian for your content. Save anything from the web — articles, videos, links — and have it automatically organized, summarized, and searchable. One click. No friction.
- One-click save from any browser — Chrome, Arc, Brave, Edge, Firefox, Safari
- AI enrichment — every save gets a summary, tags, and a topic label automatically (Claude Haiku)
- YouTube transcripts — saves the full spoken transcript, not page noise
- Hybrid search — keyword + semantic so you find things by meaning, not just exact words
- Native desktop library — a fast, clean Tauri app that lives in your dock
| Layer | Tech |
|---|---|
| Capture | MV3 browser extension · Safari Web Extension |
| Backend | Python · FastAPI · SQLite |
| AI | Claude Haiku 4.5 · fastembed (local embeddings) |
| Search | SQLite FTS5 + cosine similarity hybrid |
| Desktop | Tauri · React · TypeScript · Tailwind CSS |
Stash ships as a single desktop app — no terminal, no config files.
- Launch Stash. The app starts its local engine automatically.
- On first run you're asked for your Anthropic API key (get one here).
- The key is verified, then stored in your OS keychain — it never leaves your device except to call Anthropic. You only pay Anthropic for what you use; there's no Stash subscription.
- Install the browser extension and start saving.
You can replace or remove your key any time from Settings, along with re-running enrichment and rebuilding the search index.
cd backend
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txtFor local dev you can put a key in backend/.env (gitignored) so the engine is pre-configured:
ANTHROPIC_API_KEY=sk-ant-...
Otherwise, just launch the desktop app and enter the key in the onboarding screen — it's pushed to the backend at runtime via POST /config/api-key.
Run it directly during development:
uvicorn main:app --reload --port 8000Chrome / Arc / Brave / Edge / Firefox:
- Go to your browser's extensions page (
chrome://extensionsorabout:debugging) - Enable Developer mode
- Load unpacked → select the
extension/folder - Click the Stash icon on any page, or press
Cmd+Shift+S
Safari:
- Open
Stash/Stash.xcodeprojin Xcode - Run the
Stash (macOS)scheme (Cmd+R) - Safari → Settings → Extensions → enable Stash
- Click the toolbar icon or press
Cmd+Shift+S
Requires Rust.
cd desktop
npm install
npm run tauri:dev # native desktop app
# or: npm run dev # browser preview at localhost:5173The Python backend is bundled into the app as a Tauri sidecar so end users never run uvicorn themselves. Build the sidecar binary, then the app:
cd desktop
npm run build:backend # PyInstaller → src-tauri/binaries/stash-backend-<target-triple>
npm run tauri:build # produces the distributable .app / installertauri:build runs build:backend automatically. At runtime the app spawns the sidecar, points its SQLite DB at the per-user app-data directory (STASH_DATA_DIR), and shuts it down on quit. Installers land in desktop/src-tauri/target/release/bundle/.
The sidecar is platform-specific — it can't be cross-compiled. Build on each OS/arch you want to ship.
Releases are published to GitHub Releases via CI (.github/workflows/release.yml). Each runner builds its own sidecar, then tauri build, and uploads the installers:
git tag v0.1.0
git push origin v0.1.0 # → builds macOS arm64 + Intel, creates a draft ReleaseUsers then download the .dmg for their Mac from the Releases page.
Signing: the workflow ships unsigned by default (macOS users right-click → Open the first time). For a Gatekeeper-clean release, add an Apple Developer ID cert and set the APPLE_* repo secrets referenced in the workflow to enable notarization. Add the Windows/Linux matrix entries (commented in the workflow) to ship those platforms too.
Three ways to save anything, all instant:
| Action | Result |
|---|---|
| Click the toolbar icon | Saves the current page |
Cmd+Shift+S |
Saves from anywhere on the page |
| Right-click | Save page · Save selection · Save link |
A toast confirms each save. Claude enriches it in the background — no waiting at capture time.
Type anything in the desktop app search bar. It combines:
- Keyword (FTS5 full-text across titles, summaries, tags, transcripts)
- Semantic (local embeddings — finds related content without exact word matches)
To index existing saves: POST http://localhost:8000/embed-pending
stash/
backend/ FastAPI + SQLite brain
extension/ MV3 extension (Chrome, Arc, Brave, Edge, Firefox)
Stash/ Safari Web Extension (Xcode)
desktop/ Tauri + React library UI
MIT