Summary
A durable news agent: cron ticks, a Pi Durable agent behind an API, Jev as a cheap gate, and taste weights you tune by chatting
A proactive agent, in IndyDevDan's words, is a durable agent plus a trigger inside a sandbox. His example is a news agent that wakes on a cron tick, uses a cheap classifier to filter before spending model tokens, and lets him correct it by thumbs-up, thumbs-down and plain-language instructions. The code is in a link he gives, which we have not reviewed; the design is described clearly enough to follow.
"My Jev Pi Durable Agent CURATES News: HYPE, FACT, or SIGNAL" by IndyDevDan — Watch on YouTube → He also promotes a paid course launching at the end of November; that is not part of the project.
The architecture
- Client-server split. The real agent runs on his Mac mini (and separately in an exe.dev cloud sandbox). The browser UI, the terminal UI, the CLI and the cron job are all thin clients of one API, so the browser and the terminal show the same session.
- Layers. SQLite databases, then Pi Durable (the durable-task layer built on the Pi agent), then a custom durable agent exposed over an API, with Jev for classification, and an SDK used by every client. Models named: a GPT-6 Luna agent; he says cheap models such as Luna, Haiku 5.5 and DeepSeek V4.1 Flash keep cost down.
- Trigger. Cron fires every minute. Each tick looks for a maximum of seven cards.
The pipeline: gather, gate, dedupe, rank
- Jev is the gate. Jev (from TypeSafe) is a cheap, fast classifier placed in front of the language model so expensive calls only happen on items that pass. Uses: is this relevant, is it a duplicate story (after a content hash), and is this claim a fact. A final pass scores the item as hype, fact or signal.
- His definitions. Hype is attention driven by excitement; fact is objectively true; signal is a fact you can act on. In the demo, a Gemini 4 Argon release item scored mostly signal and fact, with 66 out of 100 for hype.
- Agent tools. Run a news sweep, list candidates, read items, search the web, scrape a URL, research items, classify with Jev, present news, present a timeline, and ask about taste. The agent has no file or code tools; the tools are specific to the job.
Feedback that changes the ranking
- Thumbs-up or thumbs-down on a card feeds back into ranking.
- You can message the agent while it sweeps; the message queues. He typed "increase the weight of Gemini, and add it as a keyword if it isn't one". The agent read its taste files and raised the existing Gemini keyword weight from 1.2 to 1.3.
- The settings page lists weighted keywords and weighted source links (for example Hacker News, Latent Space, the Pi project, Claude Code, Anthropic, Codex, OpenAI and Simon Willison), all editable.
Gotchas & Caveats
- We did not read the linked code, so tool names and weights are as shown on screen. He says he is not sharing his own settings.
- A job that runs every minute with a model call costs real money; the gate is there for that reason, and he says costs have barely moved.
- "In the loop, near the loop, out of the loop" is his framing for how much human attention a system needs. It is a mental model, not a measured result.
Key Takeaways
- Put a cheap classifier ahead of the model, and dedupe by hash before asking a model if two items match.
- Give a proactive agent a small set of job-specific tools rather than general file access.
- Store preferences as editable weights so you can correct the agent in a sentence.
What you can actually set up from this
Extracted from the video's own transcript — the specifics the original summary left out.
Reproducible steps
- Treat the agent as a server and everything else as a client
A durable agent runs on a Mac mini, backed by SQLite and exposed over an API. The browser, terminal UI and CLI are thin clients through an SDK, so they stay in sync and the agent keeps running while you are away. A second instance runs on an exe.dev sandbox with a different feed.
- Trigger it with cron
A cron tick fires the API every minute. Each sweep gathers candidates, gates them, dedupes, ranks, and returns up to seven cards for the agent to render.
- Gate expensive calls with a cheap classifier
Jev (a classifier from the TypeSafe team) runs before the language model call to judge relevance, duplicates (after a content hash), claim research and ranking at sub-half-second per call. One example item scored mostly signal and fact with 66 out of 100 hype.
- Close the feedback loop
Thumbs up or down on a card feeds the ranking, and the agent can edit its own taste files from chat. Asked to increase the weight of Gemini, it raised the existing keyword from 1.2 to 1.3. Source links such as Hacker News, Latent Space and Simon Willison's blog are weighted the same way.
- Give the agent product-specific tools
Tools listed in the video: run news sweep, list candidates, read items, search web, scrape URL, research items, Jev classify, present news, present timeline and ask taste. The agent does not read files or change code.
Gotchas
- The speaker sorts information into hype (attention without basis), facts (true but not actionable) and signal (something you can act on). A new model you can use today is signal; a maths-proof dump is a fact.
- The chat model in the demo is GPT-6 Luna, chosen because it is cheap; even so, the classifier is placed in front to cut language-model calls.
- Do a content hash first and use the classifier only as the fallback for near-duplicates.
- The durable-agent layer is Pi Durable, covered in a previous video; this video is a demonstration of his own build, not a package you can install from it.





