Featured Projects Open source · MIT Hacktoberfest Open-Source AI Challenge

Night Scout reads the internet while you sleep

Before bed you do nothing. By morning, a local Gemma model has read the night's feeds, filed the few stories that matter under your topics, and turned the rest into a next step for the projects you're building. Nothing leaves your laptop, and nothing runs until you say so.

Code on GitHub Read the DEV post →
Night Scout app icon

Night Scout

Open source · Mac, Windows, Linux

Overnight, a local Gemma model reads the feeds you'd otherwise doom-scroll: YouTube, blogs, Hacker News, Reddit, Bluesky, Mastodon and GitHub. In the morning you get a short Digest for your topics and, for your own projects, a few next steps you can actually take.

125
commits, spec to launch
556
unit tests
114/114
end-to-end steps passing
7
kinds of feeds
$0
per night, on your Mac
MIT
open source on GitHub
The Night Scout Digest for Oct 22: sixteen stories filed under four topics, with a Gemma summary and key points for each Night Scout Actions for Oct 21: seven picks, with llm-echo 0.5 open and labelled an Improvement for the llm project

One night, seven steps

On the night of Oct 21: 12 feeds, 140 new items, 40 read by Gemma in about 14 minutes on a 16 GB M4 Mac, and 7 picks in the morning. Some nights it says "nothing cleared the bar", and that's the point.

  1. 1

    Fetch

    Official feeds and public APIs only, politely spaced. A source that fails says so and the run goes on.

  2. 2

    Dedupe

    By canonical URL and by embedding similarity. A story on both HN and Reddit counts once, with a little extra buzz.

  3. 3

    Pre-filter

    EmbeddingGemma turns each interest into its own query, so Gemma reads the 40 likeliest items instead of 140.

  4. 4

    Judge

    Gemma returns schema-checked JSON: topic, score, summary, key points and, with projects, a label and a next step.

  5. 5

    Propose

    Try it, Research more, Note for project or Watch later, for the picks above the bar.

  6. 6

    Digest

    Markdown on disk and the morning page, with everything else one click below.

  7. 7

    Ideas

    One more Gemma call turns the night's reading into two small side-project ideas.

Inside the app

Night Scout Run in sandbox sheet: the exact pip install and import-check commands, where they run, a 300-second time limit, what counts as a pass, and a supply-chain warning

Try it, safely

You read the exact commands, the time limit and a supply-chain warning, then tick a box. It runs in a throwaway sandbox that cannot see your home folder.

Night Scout Sources page: YouTube channels, RSS feeds and Hacker News searches with on/off toggles, and the last run per source

What the scout reads

Twelve feeds on the demo profile, each with its own look back and optional Scout key terms. The last run's count sits beside every source.

Night Scout AI Providers settings: Judge, Chat, Fallback and Embeddings roles, all on this Mac, with Ollama connected

Your models, your machine

Every job runs on Ollama by default. Hand one to a cloud model if you like, and the app marks that job as leaving the machine.

Night by night

Night Scout was an entry in DEV's Hacktoberfest Open-Source AI Challenge, built from a locked spec on October 21 to a published post on October 25. Our developer approved every mockup and made every product call; Snippbot agents led the build in parallel tracks, each in its own worktree.

  1. 1 Spec Oct 21
  2. 2 First night Oct 21
  3. 3 v2 Oct 21 – 22
  4. 4 Digest + Ask Oct 22
  5. 5 Listen Oct 23
  6. 6 Published Oct 25
1

Spec

Oct 21

The rules were written down before any code: no spend, local models only, official feeds only, and nothing runs on its own.

$0 budget
Open-weight models on the laptop, by the kickoff rule.
7 kinds of feeds
YouTube, RSS and Atom, Hacker News, Reddit, Bluesky, Mastodon and GitHub.
5 days to the deadline
Spec on Oct 21, the post due Oct 25.
  • A brand-new MIT project: no code copied from Snippbot or any private repo.
  • Try-it plans run only in a sandbox, only after you confirm, and a command denylist applies.
  • Demo footage uses public projects only, so no private repo names or local paths appear on screen.
2

First night

Oct 21

Sources, scoring, actions and the sandbox were built in one evening, then audited twice.

140 new items
From 12 feeds on the first real run.
40/40 judged by Gemma
In about 14 minutes on a 16 GB M4 Mac, with 0 failures.
2 → 7 on-topic picks
After the pre-filter was rebuilt.
  • On the first run, 13 of Gemma's 40 slots went to items it then scored 0, like PHP CVEs and game news. One query per interest, EmbeddingGemma task prompts and batch-normalised similarity fixed it.
  • The first audit found 3 high and 8 medium issues, including a Linux sandbox with no isolation; the second found 9 more. All were fixed with regression tests.
  • Homebrew's Ollama formula ships without the grammar library, so structured output failed with a 501. Night Scout now detects it and falls back to schema-in-prompt plus validation.
3

v2

Oct 21 – 22

Our developer approved a clickable mockup, and three parallel tracks turned it into the real app the same night.

3 parallel tracks
The UI port, the pipeline, and AI providers.
4 impact labels
Issue, Change, Improvement or Relevant, for the project it fits.
2 project ideas a night
Each with Start as a project, README and all.
  • The Try-it confirm became a sheet inside the card, with the exact commands, the time limit and a supply-chain warning.
  • A Sources page with on/off toggles and an add-source picker that finds the feed for a site, channel or subreddit.
  • API keys moved into the OS keychain, and every page works at phone width.
4

Digest + Ask

Oct 22

The Digest made projects optional, and Ask put Gemma, with tools, on every page.

80 % bar for the Digest
Only stories Gemma files at 80 % or more make it, 25 at most.
16 stories on Oct 22
Gemma read 40 of the 90 new items against 4 topics.
7 + 4 real matches
"kling" and "veo" in one YouTube channel, from 9 and 10 search results.
  • Scout key terms search a whole source once, then push new posts that mention a term to the front of the queue every night.
  • Ask looks things up before it answers, and when it suggests following a channel it shows a button. Nothing changes until you click.
  • Anthropic, Gemini and six more cloud providers can take a job, and the app marks that job "Leaves this machine". Embeddings always stay local.
5

Listen

Oct 23

An optional voice reads the Digest aloud, recorded after the nightly run so it plays at once in the morning.

28 English voices
Kokoro, an open-weight speech model on your Mac.
0 network calls to speak
Once Kokoro and the voice are downloaded.
2 double-click launchers
Night Scout.command for macOS and Night Scout.cmd for Windows.
  • Pronunciation was checked with faster-whisper, so "LLMs" and "Hermes" come out right.
  • ▶ Run now sends the scout out straight away, with an estimate, and a later run keeps the morning's picks.
  • Setup gained Choose folder…, which opens Finder or File Explorer to pick project folders.
6

Published

Oct 25

The repo is public under MIT, and the post went live on DEV with a two-minute demo.

7 Playwright kits
They drive the real app in a browser: 114 of 114 steps pass.
10.5 s sandboxed Try-it
pip install llm-echo plus an import check, while reads of your home folder fail.
2 min demo video
The real app on screen; the voice-over and the opening stills are AI-made.
  • The kits caught chat history dropping tool calls, so Gemma claimed buttons it never made. Fixed before the final run.
  • Each kit runs sandboxed, with a throwaway home, a throwaway keychain entry and a faked scheduler.
  • Feed text is treated as data in every prompt, and the UI needs a per-launch key, so other programs on the machine cannot click its buttons.

From the build chat

Adam Dev avatar
Adam Dev

"The behaviour matters as much as the button: what happens to the morning's Digest if you run the scout again at 2 PM?"

Adam Dev avatar
Adam Dev

"A silhouette has to read at about 20 px inside the button, so I'll draw it as a vector (SVG) rather than generate an image."

Adam Dev avatar
Adam Dev

"Chat history drops tool calls: later in the same chat, Gemma says “I've put buttons below” when no cards were made (3 of 3 attempts)."

Steven avatar
Steven

"First I'm checking which source types Night Scout actually supports, so the questions don't promise something it can't do (X/Twitter, for example)."

Who built it

Our developer

product, every mockup approval, the publish call

Adam Dev avatar

Adam Dev

Snippbot agent: led the build, split it into parallel tracks and merged them, and built the Digest and Actions

Steven avatar

Steven

Snippbot agent: directed the two-minute demo, from a narration written as questions to the voices, music and final cut, checked line by line with Whisper

Claude Code

coding sessions; co-author on 116 of the 125 commits

Send it out tonight

You need Python 3.11 or newer. Clone the repo and double-click Night Scout.command on macOS or Night Scout.cmd on Windows: the first launch installs it and opens a short setup in your browser. Ollama is optional; without it, pick a cloud model in setup.

git clone https://github.com/saixiong/nightscout Get it on GitHub

More projects