Self-hosted · Open source · Offline-first · Lightweight

Your sources.
Your pipeline.
Your output.

Samizdat turns newsletters and feeds into short, readable highlihts. Annotate them, track what you cite, and publish your own digest with the references already attached.

Ingest → Scrape & dedupe → LLM breakdown → Customizable Process Pipeline → Read & curate & annote → Cite & publish

The problem

One simply does not copy paste.
Fix your publishing pipeline.

Fragmented

Newsletters arrive in your inbox. Articles live in browser tabs. You lose your place every time you switch context.

Ephemeral

You have no canonical copy. Services shut down. Paywalls move. Your reading history belongs to someone else's database.

Citation hell

Turning what you read into writing means hunting down the original URL, pulling the right quote, formatting a reference. Every. Single. Time.

Locked in

Every reader app, every newsletter tool has a conflict of interest with you. Their incentive is your continued subscription, not your autonomy.

How it works

Five steps.
One pipeline.

01

Ingest newsletters and feeds

Point an email alias at your server for newsletters. Add RSS feeds for news portals. Everything lands in one place.

02

Break down with your locally hosted LLM

Your editable Pipeline runs over each Document and emits bite-sized Highlights — the key facts, quotes, and ideas, tagged and sorted. Customize to your needs.

03

Read and curate on your phone

The mobile app syncs highlights offline-first. Swipe to curate. Every linked URL is tracked and openable. One tap to mark, annotate, or skip. Read articles, ad-free, watch podcasts transcribed annote time tagged.

04

Sync to your markdown vault

Edit, refer, work in your favorite PKM tools: Preserve articles 1:1, refer them, link them, join them, quote them with your favorite IDE for your thoughts.

05

Publish your digest with citations attached

Run sam digest. Every item you curated becomes a bullet with the source URL, quote, and original context already wired. No copy-paste. Publish to email, the web, or anywhere.

Components

Four pieces.
One system.

server/

The hub. REST API, cron worker, scraper engine, dedup, pipeline runner, TLS — everything in a single static binary you can scp anywhere.

Go · SQLite (pure-Go) · CertMagic
app/

The reader. Offline-first, swipe-to-curate, syncs with your server. Runs on iOS, Android, and the web from one codebase.

Expo · React Native · RN Web
cli/

sam is the interface for power users and robots alike. Init, configure providers, manage jobs, run pipelines, generate digests: all headless, all scriptable.

Go · shared engine
clipper/ In progress

The browser extension. Clip any page, highlight text, and add it to your pipeline on the fly. Posts to the same API as everything else.

Chrome MV3 · Defuddle · Turndown

Design rules

How it's built.

📄

Your Markdown vault is the truth. SQLite is only an index; sam reindex rebuilds it from your files. Nothing exists solely in a database.

⚡

Scrape one URL once. Dedup by canonical URL happens before any network request.

🏠

Paywalled content stays local. Pick your own locally hosted LLM.

📦

One binary. No Docker, no nginx, no Redis. scp it and run it; TLS is in-binary via CertMagic.

Philosophy

Anti-slop.
Anti-lock-in.
Post-copy-paste

Samizdat - self-published, hand-curated, traceable writing. Underground, self-rolled.

"There is an inherent conflict of interest between you as the publisher and the for-profit platforms that feed you info. Capitalism's incentive is to lock you in, manipulate your consumption. Make your own feed, that serves you."

No engagement metric. No recommendation engine. No "you might also like." Samizdat does what you configure it to do, and the configuration is a text file you own. The product are markdown files you own.

Start in two commands.

No accounts, no database setup. Bring your own LLM, or use provider. Ollama & cloud friendly.

$ git clone https://github.com/symunona/samizdat && just dev