Bookmark Managers Are Graveyards: Why I Built a Single-Binary Go + SQLite Action Engine

2026-11-11来源 dev.to GoEnglish
Bookmark Managers Are Graveyards: Why I Built a Single-Binary Go + SQLite Action Engine

You save 200 interesting links. You open maybe four. The rest rot in a folder called "Later".

Like most developers, I have self-hosted or used almost every read-it-later and bookmark tool out there. They are all great at saving links—and terrible at helping you do anything with them.

The missing piece wasn't another bookmark folder. It was an action engine that sits between messy daily capture and your clean knowledge base or task board.

So I built Sparkkeep (v0.1.0, AGPL-3.0): a single-binary, self-hosted capture, AI triage, and deterministic deep-research engine.

GitHub logo BurlacuAndrei / sparkkeep

Self-hosted capture & AI action engine. Turn links, notes, and chat messages into triaged execution boards, cited research dossiers, and Obsidian/Notion notes.

Sparkkeep

Capture anything. Triage it with AI. Ship what matters.

Sparkkeep is a self-hosted action engine for the ideas you keep collecting and never execute. Share a link, a note, a voice memo, or a screenshot — it scrapes it, filters the noise, synthesizes an actionable brief, and puts it on a board you actually work from.

One binary. One SQLite file. No Postgres, no Redis, no cloud account.

CI Status Docker Build OpenSSF Scorecard
Release Container Go Version License: AGPL-3.0
GitHub Stars Issues Ko-fi GitHub Sponsor

Sparkkeep Execution Board with Focus Spotlight and Execution Pulse

Bookmark managers are graveyards

You save 200 interesting links. You open maybe four. The rest rot in a folder called "later".

Sparkkeep is not a bookmark manager. It is an action engine:

Capture ──► Noise Gate ──► AI Triage ──► Horizon Routing ──► Execution Board ──► Research ──► Digest ──► Shipped 
  1. Capture from Telegram, Discord, Slack, the browser extension, a webhook, or a plain note with no URL at all.
  2. Filter engagement bait and spam before it reaches your inbox.
  3. Synthesize…

The Pipeline: From Messy Capture to Shipped Work

Capture ──► Noise Gate ──► AI Triage ──► Horizon Routing ──► Execution Board ──► Research ──► Digest ──► Shipped 
  1. Capture from anywhere: Send a URL, voice memo, screenshot, or raw URL-less note via a two-way Telegram bot, Discord embeds/buttons, Slack Block Kit, the Chrome/Firefox Web Clipper, or a universal webhook.
  2. Filter the noise: A fast noise gate scores and filters engagement bait before it clutters your inbox.
  3. Synthesize an actionable brief (100% BYOK / Local LLM friendly): Using Ollama, LM Studio, vLLM, OpenAI, or DeepSeek, Sparkkeep extracts a TL;DR, why it matters, and a concrete checklist of next steps.
  4. Swipeable Triage Deck & Execution Board: Burn through your unreviewed inbox with 1 / 2 / 3 / Esc, route cards into Now / Next / Later, and execute from a widescreen board with a Focus Spotlight and 7-day Execution Pulse.

Swipeable Triage Deck

Why Deterministic Research Playbooks Beat Unbounded Agent Loops

When I tried wiring autonomous ReAct agents to research saved technical topics, two things happened:

  1. Small local models (7B–14B) got stuck in repetitive search loops.
  2. Cloud API models burned unpredictable token budgets and still hallucinated citations.

Instead of open-ended loops, Sparkkeep ships with Playbook Studio—a bounded, visual step sequencer with a 5-Pillar Research Health Linter, token cost estimator, zero-cost dry runs, and SearXNG web search integration.

Playbook Studio

Every research run produces a cited Research Dossier with a clear Pursue / Watch / Skip verdict:

Deep Research Dossier

Knowledge Sinks, Not a Walled Garden

Sparkkeep is the staging and research desk in front of your permanent notes. When a card moves into active work (To-Do, In Progress, Done) or completes deep research, Sparkkeep automatically exports it idempotently to:

  • Obsidian (clean Markdown + YAML frontmatter mirrored directly to your vault)
  • Notion (auto-provisioned database properties + rich Notion blocks)
  • Joplin (Self-Hosted Joplin Server or Desktop Web Clipper API)
  • Authenticated Outbox RSS & 1-click intents for Logseq, Things 3, Todoist, and GitHub Issues

And at the end of the week, the Intelligence Digest synthesizes your shipped wins, flags stale bottlenecks, and prepares your next focus items:

Intelligence Digest

Under the Hood: One Binary, One SQLite File (<30 MB RAM)

I wanted Sparkkeep to run effortlessly on a Raspberry Pi, home NAS, or €5 VPS without maintaining Postgres, Redis, or Meilisearch containers:

  • Go 1.26 Standard Library HTTP
  • Pure-Go SQLite (modernc.org/sqlite, zero CGO) in WAL mode with FTS5 full-text search
  • React 19 + TypeScript + Vite compiled into internal/web/dist and embedded into the Go binary via //go:embed
  • 6 UI Languages out of the box: English, Romanian, Spanish, Portuguese (Brasil), French, and German

Try It in 10 Seconds (Includes a 1-Click Demo Library)

docker run -d \ --name sparkkeep \ -p 8080:8080 \ -v sparkkeep_data:/data \ ghcr.io/burlacuandrei/sparkkeep:latest 

Open http://localhost:8080. The first-run setup wizard includes a 1-click Demo Library so you can explore the Execution Board, Triage Deck, Playbook Studio, and Research Dossiers before connecting an AI provider.

Support & Feedback

If Sparkkeep looks useful for your workflow:

I'd love to hear what capture channels, local models, or knowledge sinks you're using in your stack—drop a comment below!

原文:https://www.a8q9.cn/en/article/bookmark-managers-are-graveyards-why-i-built-a-single-binary-go-sqlite-action-en-276adb.html

相关文章