Skip to content

ulbarr/latent-feed

 
 

Repository files navigation

Latent Feed

Your morning briefing, hand-picked from the places that matter.

License: MIT Python 3.9+

⭐ If this saves you time, give it a star. It helps others find it.


🎯 Perfect for

Researchers · ML engineers · Obsidian users · Anyone who wants to stay current without the morning rabbit hole


🌟 What is this?

Latent Feed is a little tool that scours your favourite corners of the internet—papers, repos, threads, and discussions—then bundles the good stuff into one tidy digest. No more tab-hopping. Just set it up once, let it run daily, and wake up to a fresh batch of what’s worth reading.

You choose where it lands: your Obsidian vault, your inbox, or both.


📸 See it in action

Latent Feed demo — Daily AI signal to Obsidian or Email

Features: Run once a day · Clean digest by topic · Write to Obsidian or email

→ ExamplesEmail · Obsidian daily note

Click to expand — quick sample
## 🏢 Frontier Labs
**[Claude 4.5 Released](https://anthropic.com/...)**  · anthropic
> New model with improved reasoning.

## 📄 Research
**[Transformers Are Bayesian Networks](https://arxiv.org/...)**  · arxiv
> Connections between attention and probabilistic inference.

## 🔓 Open Source Repos
**[vLLM v0.6.0: Prefix Caching + LoRA](https://github.com/...)**  · github
> 5x faster serving.

📡 News Sources

We pull from six places. Toggle any on or off in your config.

Source What you get
📄 ArXiv Fresh preprints (cs.CL, cs.LG, cs.AI) — the papers before they hit the mainstream
📝 Blogs OpenAI, Anthropic, Karpathy — evals, interpretability, fundamentals from the source
GitHub Trending Trending repos that match your interests — tools, libraries, and projects worth a star
🧡 Hacker News Top stories and discussions — the pulse of the builder community
🔗 Papers with Code Research papers with open implementations — read it, then run it
💬 Reddit r/MachineLearning, r/LanguageModels, r/LocalLLM — what the community is talking about

📚 Blog feed details

Blog Focus
OpenAI Evals, agent skills, reasoning
Anthropic Interpretability, alignment, model behaviour
Karpathy Fundamentals, systems-level understanding

Add your own RSS feeds in config.yaml under blogs.feeds.

🏷️ Categories

Items are auto-tagged into 10 categories. Edit processor/categorizer.py to adjust keywords.

Category What you get
🏢 Frontier Labs OpenAI, Anthropic, Google, Meta — model launches, API releases, product updates
📄 Research Papers from arXiv and labs — the core of Latent Feed
🔓 Open Source Repos GitHub, Hugging Face — repos, frameworks, tooling
📊 Benchmarks Evals, leaderboards, comparisons, failure analyses
🤖 Agents Coding agents, tool use, SWE agents
🧠 Reasoning CoT, RL, distillation, inference-time scaling
🛡️ Safety & Alignment Alignment, robustness, prompt injection, oversight
🔬 Interpretability Mechanistic interp, circuits, features, SAEs
🎨 Multimodal Vision, audio, video, robotics, world models
Systems Inference efficiency, training, kernels, compression

📺 Recommended follows (manual)

Latent Feed doesn’t fetch these, but they’re worth following:

YouTubeAndrej Karpathy, Stanford Online (CS25), Anthropic, Yannic Kilcher, DeepLearning.AI, Dwarkesh Patel

CoursesKarpathy: Zero to Hero, Stanford CS25: Transformers


✨ What it does

Feature
📥 One place for everything — ArXiv, blogs, GitHub, HN, Papers with Code, Reddit, in one feed
🔍 Filters by your interests — Set keywords once; only relevant items get through
Short summaries — Optional one- or two-line summaries so you can skim before clicking
🏷️ Organised by category — Frontier Labs, Research, Open Source Repos, Benchmarks, Agents, Reasoning, Safety & Alignment, Interpretability, Multimodal, Systems
📓 Obsidian-ready — Drops straight into your daily note
✉️ Or straight to your inbox — Email digest to you (and anyone else you add)

🚀 Get started

1️⃣ Install

pip install -r requirements.txt

2️⃣ Set up your config

cp config/config.example.yaml config/config.yaml

Open config/config.yaml and at least set your vault path:

vault_path: "/path/to/your/obsidian-vault"
daily_notes_subfolder: "LatentFeed"

3️⃣ Optional: Turn on summaries

If you want short summaries for each item, set your API key:

export ANTHROPIC_API_KEY="your-api-key"

And in config.yaml:

use_summarization: true
llm_provider: "claude"

4️⃣ Optional: Get it by email

Add this to config.yaml:

email:
  enabled: true
  subscribers:
    - "you@example.com"
  smtp:
    host: "smtp.gmail.com"
    port: 587
    from_addr: "your-bot@gmail.com"
  subject: "Latent Feed — {date}"

Then set your SMTP credentials (prefer env vars):

export SMTP_USER="your-bot@gmail.com"
export SMTP_PASSWORD="your-app-password"

💡 Gmail users: use an App Password, not your usual login.

5️⃣ Run it

python main.py

Try it in 30 seconds — preview the digest with no config:

git clone https://github.com/<you>/latent-feed && cd latent-feed
pip install -r requirements.txt
python main.py --dry-run
Flag What it does
--dry-run Prints the digest to the terminal without writing anywhere
--email-only Skips Obsidian, sends only to email subscribers

⏰ Run it every morning

Add a cron job so it runs at 8 AM:

crontab -e
# Add this line:
0 8 * * * cd /path/to/latent-feed && /path/to/python main.py

🔄 GitHub Actions (optional)

If your vault lives in a Git repo, you can run Latent Feed on a schedule:

  1. Add these Secrets in your repo settings:

    • ANTHROPIC_API_KEY (if you use summaries)
    • VAULT_PATH (path to your vault)
    • SMTP_USER, SMTP_PASSWORD (if you use email)
  2. If the vault is in another repo, clone it in the workflow first, then pass VAULT_PATH.

⚠️ Most local vaults can’t be reached from GitHub. For email-only, use --email-only with your SMTP secrets.


🔒 Keep your stuff private

These files are in .gitignore and must never be committed to GitHub:

File Contains
config/config.yaml Vault path, email, SMTP settings, project_url, buymeacoffee
.env SMTP_USER, SMTP_PASSWORD, ANTHROPIC_API_KEY — all secrets
  • Copy config/config.example.yaml to config/config.yaml
  • Copy .env.example to .env and fill in your real values
  • Never commit config.yaml or .env — they hold private data

📁 Project structure

latent-feed/
├── main.py              # Entry point
├── sources/             # News sources
├── processor/           # Filter, dedup, categorize, summarize
├── output/              # Markdown, Obsidian, email
├── models/              # Data models
├── config/              # Configuration
└── .github/workflows/   # GitHub Actions

📖 Docs


🙌 Spread the word

Found this useful? Star the repo, share it with a colleague, or post about it. Every bit helps.


📄 License

MIT

About

Automated AI news aggregation that feeds directly into your Obsidian vault. Stay current on the latest LLM research, trending repos, and breakthroughs — curated daily

Resources

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • Python 100.0%