Terminal dashboard for AI, tech, and software engineering news. Pulls from RSS feeds and Hacker News on every launch, no accounts or paid APIs required. Cached stories render instantly; fresh ones stream in behind them. Point it at a local Ollama model and it summarizes the top stories into a digest.
git clone https://github.com/JoeyPatricio/up-to-date
cd up-to-date
uv tool install . # or: pipx install .
utdFor development: uv sync && uv run utd.
After uv sync, the repo includes UtoD.bat (launches utd with a proper window
title) and utd.ico. To add a clickable icon to your desktop:
$sh = New-Object -ComObject WScript.Shell
$lnk = $sh.CreateShortcut("$env:USERPROFILE\Desktop\UtoD.lnk")
$lnk.TargetPath = "<repo path>\UtoD.bat"
$lnk.WorkingDirectory = "<repo path>"
$lnk.IconLocation = "<repo path>\utd.ico,0"
$lnk.Save()Replace <repo path> with the folder you cloned into.
| Command | |
|---|---|
utd |
launch the dashboard |
utd config path |
print the config file location |
utd config init |
write a commented starter config |
utd --config <path> |
use an alternate config file |
| Key | |
|---|---|
Tab / Shift+Tab |
focus next / previous panel |
j / k, arrows |
move selection |
Enter / o |
open story in browser |
c |
open comments (HN) |
r / R |
refresh all / focused panel |
g / G |
top / bottom of panel |
? |
help |
q |
quit |
Optional TOML file (utd config init creates it). Sections control which panels show
and in what order; [[feeds]] entries replace the built-in defaults per section:
[ui]
sections = ["ai-news", "hackernews", "eng-blogs", "tech", "papers"]
[[feeds]]
section = "ai-news"
name = "Hugging Face Blog"
url = "https://huggingface.co/blog/feed.xml"Default sources: OpenAI, Google DeepMind, and Hugging Face blogs (ai-news); the
Hacker News front page; Simon Willison, The Pragmatic Engineer, and the GitHub
engineering blog (eng-blogs); Ars Technica and The Verge (tech); Hugging Face
Daily Papers (papers). The same story appearing in multiple sources is shown once,
keeping the publisher's title and the HN score/discussion link.
With Ollama installed and a model pulled, enable the digest in your config:
[digest]
enabled = true
model = "llama3.1:8b"A full-width panel appears above the grid once all sources finish fetching, streaming
a one-paragraph summary of the top stories (HN points first, with slots reserved for
AI publisher announcements and research papers). Enter opens the first story the
digest references. If Ollama isn't running, the panel simply doesn't appear and the
dashboard never waits on it.
Model notes: llama3.1:8b is the recommended default (fits fully in 8 GB+ VRAM).
qwen2.5:7b and mistral:7b instruct variants also work. Machines with 16 GB+ RAM
can try 14B-class models for better story grouping.
uv run pytest # tests
uv run ruff check . # lintMIT