CLI tool · local LLM · zero tracking

Your morning brief.
No noise.
No tracking.

Daily Pulse collects top stories from Hacker News, RSS feeds, and Reddit — summarizes them with a local LLM — and delivers a clean briefing to your filesystem. Your news. Your machine. Nobody else's business.

Get it on GitHub
$ pip install -r requirements.txt

Python 3.10+ · Ollama or Claude API · Free & open source · MIT

daily_pulse.py — zsh
running
5+
News sources supported
~2 min
From clone to first brief
0 bytes
Sent to external servers (by default)
Features

Everything you need.
Nothing you don't.

Built for one job — a calm, informed morning — without the noise or the surveillance.

Multi-source collection

Pulls from Hacker News API, any RSS/Atom feed, and Reddit — all configured in a single YAML file. Add or remove sources any time.

HN RSS Reddit

Local LLM summarization

Runs summaries through Ollama or llama.cpp — fully offline. Pick any model you have: llama3, mistral, gemma, phi-3, and more.

Optional Claude API

Want frontier-quality summaries? Switch to Claude with a single config line. Local by default — cloud only when you explicitly choose it.

Markdown & HTML output

Outputs a clean, dated brief — Markdown or styled HTML — saved to any path you configure. Works with Obsidian, email, or any reader.

YAML configuration

Everything in one config.yaml. Sources, model, output path, story count. Version-control friendly and human-readable.

100% private by default

No accounts. No telemetry. No data leaving your machine unless you opt into Claude. Open source — read every line before you trust it.

How it works

Collect. Summarize. Read.

Three steps. One command. Your brief, waiting every morning.

01 — Collect

Sources

Fetches today's top items from every source in your config file.

HN Hacker News API
RSS Any RSS / Atom feed
r/ Reddit subreddits
02 — Summarize

Local LLM

Stories are summarized by your local model. No data leaves your machine.

Ollama — default
llama.cpp
Claude API — optional
03 — Deliver

Your Brief

A clean, dated brief on your filesystem. No app to open. Just a file.

today.md
today.html
→ ~/.daily_pulse/
Quick start

Up in under 2 minutes.

Three commands. One config. One brief a day.

1

Clone & install

Requires Python 3.10+ and Ollama running locally.

$ git clone https://github.com/CHUNK-jp/daily-pulse.git
$ cd daily-pulse
$ pip install -r requirements.txt
2

Configure

Edit config.yaml to choose your sources and model.

# config.yaml
sources:
hackernews: true
reddit: [technology]
llm:
backend: ollama
model: llama3:8b
3

Run

Your brief is ready in seconds. Add it to a cron job for every morning.

$ python3 daily_pulse.py run
# or schedule it:
$ crontab -e
0 7 * * * python3 daily_pulse.py run
100% local

Your morning read is nobody else's business.

Daily Pulse runs entirely on your machine. Stories are fetched directly from public APIs, summarized locally, and saved to your filesystem. No server ever sees your config or your briefings.

No outbound connections to any third-party service
Briefings stored only in your local filesystem
No account, no registration, no telemetry
Open source — read every line before you run it
config.yaml local only
# stays entirely on your machine
sources:
hackernews: true
rss:
- https://hnrss.org/frontpage
reddit: [technology, programming]
llm:
backend: ollama # local, default
model: llama3:8b
# backend: claude # optional
output:
format: markdown
path: ~/.daily_pulse/
One command, every morning
Or schedule it with cron — and forget it's even running.
$ python3 daily_pulse.py run
Why I built this
The developer
@chunk_jp

Every news app I tried eventually revealed the same thing: my reading habits were the product. Which articles I opened, how long I stayed, when I scrolled away — all of it was logged, sent somewhere, and folded into an ad profile. I'd open an app to learn what was happening in the world and leave feeling surveilled instead of informed.

I wanted something boring. A plain text file waiting in my home directory at 7am. No push notifications. No infinite scroll. No algorithm quietly deciding what I should care about. Just the top stories from sources I actually trust, summarized plainly, and then done. When I realized a local LLM and a few API calls could do exactly that overnight on my own machine, it felt almost too simple not to build.

Daily Pulse is the opposite of an app. There's no server watching which stories you open. No engagement metric optimizing for your attention. It runs, it writes a file, it exits. What you do with the brief is entirely your own.

If this tool is useful, consider supporting its development.

Buy me a coffee
Quick start

Four steps to your morning brief.

01

Clone and configure your sources

Clone the repo, run pip install -r requirements.txt, then open config.yaml and choose your sources — Hacker News, RSS feeds, and Reddit subreddits.

02

Run the script — or schedule it

Run python3 daily_pulse.py run once to test it. Then add a cron job so it fires automatically every morning before you wake up.

03

Local LLM summarizes today's stories

Ollama runs on your machine and summarizes every story locally. No internet call to any AI service — your reading list never leaves your computer. Optionally switch to Claude API for higher-quality output.

04

Read your brief — no app, no account

Open a Markdown or HTML file from ~/.daily_pulse/ in any editor or browser. No login, no notification, no tracking. Just the news, written for you.

$ python3 daily_pulse.py run

Start your morning
with signal, not noise.

Daily Pulse is free, open source, and runs entirely on your machine. Yours forever.

Python 3.10+ · Ollama or Claude API · No account · MIT License