open source · python · sqlite · mit

bookmarks that remember why you saved them.

your read-later pile is hundreds deep and you can't find anything in it. rabbitmark keeps the context, the thread and the reason, so months later you can still dig up the postgres thing you were reading at 2am.

            (\_/)
            (o.o)     peeks in
            /> <\     
·······························
          thread: postgres wal internals
   •━━━━━━━━━━━━━━━━━•
          why? debugging wal growth at 2am
   •━━━━━━━━━━━━━━━━━•
          tags: postgres · ops · wal
   •━━━━━━━━━━━━━━━━━•
          3 more down this hole
   •━━━━━━━━━━━━━━━━━•
       
     · · · ·  (still readable in 6 months)
• · • · •

save it, find it months later

a couple of prompts going in, fts5 search coming back out.

$ rabbitmark add https://postgres.ai/blog/post-12345
why saving? debugging our wal growth issue
thread (rabbit hole)? postgres wal internals
tags? postgres, ops
saved.

$ rabbitmark search "postgres wal"

 https://postgres.ai/blog/post-12345
  why:    debugging our wal growth issue
  thread: postgres wal internals
  added:  4 days ago   tags: postgres, ops

 https://www.postgresql.org/docs/current/wal-internals.html
  why:    need to understand checkpoint timing
  thread: postgres wal internals
  added:  4 days ago   tags: postgres, docs

$ rabbitmark threads

 postgres wal internals    (2 items · last touched 4d ago)
 sqlite fts indexing       (5 items · last touched 1w ago)
 rust borrow checker       (3 items · last touched 2w ago)
 embeddings for search     (7 items · last touched 3w ago)
◦ ◦ ◦ ◦ ◦
01

it asks why you're saving it

every bookmark prompts one question future-you will actually appreciate: why this, right now? a single line is plenty.

02

groups links into rabbit holes

a thread ties related reading together. postgres wal internals, sqlite fts, whatever. pick up where you left off.

03

full-text search across everything

fts5 indexes the url, the why, the thread, and the tags. rabbitmark search "wal growth" and the note comes back.

04

one sqlite file, yours forever

everything lives at ~/.rabbitmark/store.db. no account, no server. open it in sqlite3 or dbeaver, write your own queries, back it up by copying the file. survives whatever startup buys whoever next.

· · · · ·

install

from source

pip install git+https://github.com/f4rkh4d/rabbitmark

python 3.10+, sqlite ships with python. tested on macos and linux.