Pular para o conteúdo
← Back to Skalablog

Published article

Proactive agents: why durable agents beat chat

Software EngineeringAnthropicGeminiOpenAI

Proactive agents are durable agents plus a trigger, usually a cron schedule, running inside a sandbox so work happens without a human prompt. In the durable news agent Walkthrough published by the IndyDevDan channel on 19 October 2026, that pattern is a cron job that calls an API, which owns the real agent and stores its state in a database.

What a proactive agent actually is

Proactive agents are durable agents plus a trigger inside a sandbox, so the system starts work on a schedule rather than on a typed prompt. The demo shown by the IndyDevDan channel on 19 October 2026 is a news agent whose cron job calls an API every minute; that API owns the agent and keeps its state in a database, while the browser and terminal display it.

The architecture has four separable layers, and mixing them up is where most chat-shaped agent designs stall.

How the durable news agent filters hype, facts and signal

The news pipeline runs one sweep per cron tick and splits it into four passes: gather, gate, dedupe, rank. The agent then decides which of a fixed number of returned candidates to render, and a small set of purpose-built tools carries out each pass instead of a general coding agent improvising.

The presenter's own sorting rule separates three buckets of incoming information:

BucketWhat defines itDoes it earn the slot?
HypeAttention from arousal or novelty, not evidenceNo
FactsCheckably true, whether or not anyone can act on themNot on truth alone
SignalInformation the reader can use right nowYes

Jev, the classification service from Type Safe that the build calls repeatedly, sits in front of the more expensive model calls. The claim is that filtering at this stage is cheaper than sending every raw item through a large language model, so the classifier becomes a gate rather than a replacement for reasoning.

Each dimension is a separate judgement. The four passes run in a fixed order, cheapest first:

  1. Gather — pull the raw candidates for the sweep.
  2. Gate — run Jev classification to drop hype and sort facts from signal before any large model is invoked.
  3. Dedupe — run a duplicate check after a content hash, plus a research step that compares sources for overlap.
  4. Rank — decide relevance against the reader's interests and settle presentation.

Cheap models still consume tokens, so the ordering matters more than any single model choice. The same trade-off shows up across the wider AI agent design space and in LLM cost planning generally: relevance answers whether an item matches the reader's interests, and every later step assumes it has already run.

Component map: who is in and who is near the loop

The presenter frames agentic engineering as a progression from in the loop, to near the loop, to out of the loop. Sitting in a terminal prompting back and forth is the first stage. A system that runs itself and surfaces results for review is the second. A system that runs and only asks for the occasional correction is the third.

StageHuman roleWho drives the loopSurvives a closed tab
In the loopPrompts back and forth in a terminalThe humanNo — session ends with the client
Near the loopReviews surfaced resultsThe agent, human approvesYes — state held server-side
Out of the loopOccasional correction onlyThe agentYes — state held server-side

Durability is what makes the middle stage possible. A server that holds agent state can survive a closed tab, a disconnected terminal, or a restart, and both front ends simply reattach to it.

The demo runs two instances to show portability: one on the presenter's M4 Mac mini and one in a hosted sandbox, each with its own feed and its own weights. Detaching the client from the agent is the property that allows that move without changing the code.

  1. Start the agent server so state lives outside any single client session.
  2. Attach a front end (local terminal or browser) and let it reattach rather than own the session.
  3. Run the same code on a second host — here the M4 Mac mini and a hosted sandbox — each keeping its own feed and weights.
  4. Detach the client, close the tab, or restart, then reattach and confirm the agent is still running.

Background on the write-ahead style of persistence that makes step 2 survivable is in the SQLite WAL documentation, and the trade-offs of shipping the same runtime to a sandbox are covered in the Docker documentation. For the broader framing of agents that run rather than chat, see Anthropic writing on building effective agents.

Feed quality depends on tunable weights, not a better model

The feedback loop is the product. Thumbs up and thumbs down on individual cards, plus natural-language instructions sent to the running agent, change a set of weighted keywords and sources that every later sweep uses.

That loop is why the sample weights are not the point. The demo's keyword table belongs to its owner, and copying it copies someone else's taste.

A current-state check on the model names in the demo

Several model and harness names in the 19 October 2026 demo are volatile, and two of them cannot be confirmed from primary sources on 21 October 2026. Treat the specific models as illustrations of a cost strategy rather than as a shopping list.

The design point survives the model churn. Put a cheap classifier in front of the expensive call, log what the gate rejected, and re-tune when the ledger moves.

Where proactive agents stop being worth it

A proactive agent is a bad fit when the work only exists because you asked for it. Ad-hoc research, one-off refactors, and exploratory debugging all need a human in the loop, and the demo's own framing puts those cases in the first stage rather than the third.

Work typeHuman in the loop?Fits a proactive agent?
Ad-hoc researchYesNo
One-off refactorsYesNo
Exploratory debuggingYesNo
Recurring multi-source monitoringNoYes

The staging of that demo is the same pattern you'll see in most agent write-ups, for example Anthropic guidance on building effective agents, which separates fixed workflows from open-ended autonomy. If the task doesn't recur, an agent adds a scheduler and a memory store to a job that would have taken one prompt.

There is also an arithmetic risk in any always-on loop. A minute-level cron over many sources with a classifier and a summarizing model is a recurring bill, and the presenter says the cost of the demo had barely moved at the time of filming without publishing a dollar figure. Measure your own token spend over several days before adding sources:

  1. Log token usage per run for at least three days at your current source count.
  2. Project that usage forward to the source count you actually want.
  3. Compare the projected monthly figure against the cost of running the task on demand instead.
  4. Only add sources if the projected bill still clears that comparison.

Useful reference points for pricing that third step are the OpenAI API pricing page and Google's Gemini API pricing; both are published per-token rates you can plug into your own logs rather than relying on a demo's qualitative claim. The failure mode to avoid is scaling sources on a hunch and discovering the cron bill months later — the same trap Cron's own documentation implicitly warns about by making interval the first thing you specify.

FAQ

  • What is a proactive agent? A proactive agent is a durable agent, meaning its state lives in a database behind an API, combined with a trigger such as a cron schedule inside a sandbox. It begins work without a prompt and waits for feedback afterward.
  • Is the durable news agent open source? The demo codebase is linked from the IndyDevDan video description, but this article could not verify a license on 21 October 2026. Check the repository's license file before reusing anything.
  • Can a proactive agent run fully offline? It can run on a local machine, but the demo still calls hosted classifier and model APIs. Local deployment and local inference are different things.
  • How do you control cost? Gate expensive calls behind a cheap classifier, cap the number of rendered items per sweep, and record token spend per day before adding sources.
  • When should a system stay in the loop? Keep it in the loop when the work is requested once, needs frequent judgment, or would be cheap for a person to do directly.

From video reasoning to a written article

The useful part of a build like this is judgement: which bucket an item belongs in, where the gate goes, and what stays out. That reasoning often lives only in a recorded walkthrough, where it is hard to search and easy to lose.

If your own videos hold explanations, opinions, or step-by-step decisions worth keeping, you can paste a YouTube URL into Skalablog, have the audio transcribed, and get a draft article back for review.

Try it at Skala Blog.

Source video