<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: AgentBuff</title>
    <description>The latest articles on DEV Community by AgentBuff (@agentbuff).</description>
    <link>https://dev.to/agentbuff</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4120278%2F3f12e0e8-e7df-4af8-944d-a21d6aeadbdb.jpg</url>
      <title>DEV Community: AgentBuff</title>
      <link>https://dev.to/agentbuff</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/agentbuff"/>
    <language>en</language>
    <item>
      <title>A practical learning path for TypeSafe Jev (System One)</title>
      <dc:creator>AgentBuff</dc:creator>
      <pubDate>Fri, 18 Sep 2026 14:49:08 +0000</pubDate>
      <link>https://dev.to/agentbuff/a-practical-learning-path-for-typesafe-jev-system-one-2ei5</link>
      <guid>https://dev.to/agentbuff/a-practical-learning-path-for-typesafe-jev-system-one-2ei5</guid>
      <description>&lt;p&gt;TypeSafe’s &lt;strong&gt;Jev (System One)&lt;/strong&gt; is a decision model: Choice / Score / Noul — not a chat model. The hype is real; the hard part for most builders is &lt;strong&gt;how to ask&lt;/strong&gt; and which repos to learn from first.&lt;/p&gt;

&lt;p&gt;This post is a &lt;strong&gt;community learning path&lt;/strong&gt; (not affiliated with TypeSafe). We don’t resell the API. We point you at public docs/repos and ship copy-paste question templates.&lt;/p&gt;

&lt;h2&gt;
  
  
  Start here (four steps)
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://docs.typesafe.ai/concepts/use-case-map" rel="noopener noreferrer"&gt;Official use-case map&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/nishimotz/hello-jev" rel="noopener noreferrer"&gt;hello-jev&lt;/a&gt; — three question types + confidence branching&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/browser-use/jev-ultrafast" rel="noopener noreferrer"&gt;jev-ultrafast&lt;/a&gt; — browser agent chooses actions/elements fast&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/tamaratran/fast-jev-compaction" rel="noopener noreferrer"&gt;fast-jev-compaction&lt;/a&gt; — KEEP/DROP tool-result compaction&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;We mirrored this path on our docs site:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.jev-tutorial.org/tutorials" rel="noopener noreferrer"&gt;https://www.jev-tutorial.org/tutorials&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Also browse chaptered use cases (routing, moderation, agent guardrails) under &lt;code&gt;https://www.jev-tutorial.org/use-cases&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What we sell (optional)
&lt;/h2&gt;

&lt;p&gt;A &lt;strong&gt;template pack&lt;/strong&gt;: ready Choice/Score patterns (ticket routing, moderation, livestream comment labels via paste — not DOM scraping). Price target ~$49 one-time on Gumroad when the buy link is live. CTA on the site: Get the template pack.&lt;/p&gt;

&lt;h2&gt;
  
  
  Hard no’s
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Not an API relay / Gateway reseller&lt;/li&gt;
&lt;li&gt;Not money/refund final decisions&lt;/li&gt;
&lt;li&gt;Community-sourced indexes ≠ official endorsement&lt;/li&gt;
&lt;li&gt;Accuracy not guaranteed — use confidence gates + humans&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why this beats a random awesome-list dump
&lt;/h2&gt;

&lt;p&gt;Directories are swallowing new GitHub repos daily. A short path + a few runnable killers beats 50 undifferentiated links.&lt;/p&gt;

&lt;p&gt;If you only have an hour: use-case-map → hello-jev → jev-ultrafast → compaction.&lt;/p&gt;

&lt;p&gt;Site: &lt;a href="https://www.jev-tutorial.org" rel="noopener noreferrer"&gt;https://www.jev-tutorial.org&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>tutorial</category>
      <category>devops</category>
      <category>saas</category>
    </item>
    <item>
      <title>When your monitor dies, who watches the watcher?</title>
      <dc:creator>AgentBuff</dc:creator>
      <pubDate>Fri, 11 Sep 2026 07:13:17 +0000</pubDate>
      <link>https://dev.to/agentbuff/when-your-monitor-dies-who-watches-the-watcher-31eh</link>
      <guid>https://dev.to/agentbuff/when-your-monitor-dies-who-watches-the-watcher-31eh</guid>
      <description>&lt;p&gt;Your cron job can fail in an obvious way: it throws, exits non-zero, leaves a stack trace. The worse case is quieter. The job never starts. The worker process is gone. The queue is stuck. Or — the most uncomfortable one — your monitor itself dies, and nothing alerts you because the alerter was part of the same failure domain.&lt;/p&gt;

&lt;p&gt;That is the gap a &lt;strong&gt;dead man switch monitoring&lt;/strong&gt; setup is meant to close. Instead of only asking “did the check succeed?”, you ask “did anything check in at all?” If the answer is silence, you treat silence as the incident.&lt;/p&gt;

&lt;p&gt;This is &lt;strong&gt;not classic uptime&lt;/strong&gt; (pinging a public URL). It is a &lt;strong&gt;heartbeat watchdog&lt;/strong&gt;: jobs check in; silence is the incident.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why monitors fail silently
&lt;/h2&gt;

&lt;p&gt;Most stacks assume the monitoring path keeps working. In practice it shares fate with the systems it watches more often than we admit:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The agent or sidecar on the box stops, but the app container still responds to health checks elsewhere.&lt;/li&gt;
&lt;li&gt;Alertmanager / webhook delivery / bot credentials break, so “critical” never leaves the cluster.&lt;/li&gt;
&lt;li&gt;The scheduler that runs the check is the same scheduler that runs the job — both go dark together.&lt;/li&gt;
&lt;li&gt;Dashboards still load from cached metrics, so the console looks “alive” while fresh signals have stopped.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The failure mode that hurts is not a red page. It is a green-looking world with no new data. Customers notice before you do. That is what people mean when they say a &lt;strong&gt;monitor dies unnoticed&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What a heartbeat watchdog is
&lt;/h2&gt;

&lt;p&gt;A &lt;strong&gt;heartbeat watchdog&lt;/strong&gt; (also called a dead-man switch for jobs) inverts the default assumption. Your job — or your monitoring pipeline — must periodically prove it is still alive by sending a small signal to an independent watcher.&lt;/p&gt;

&lt;p&gt;As long as heartbeats arrive inside a timeout window, nothing happens. When heartbeats stop, the watcher alerts you on a channel that does not depend on the same box, same cluster, or same alert pipeline you just lost.&lt;/p&gt;

&lt;p&gt;The signal is deliberately dumb: an HTTP POST with a secret token is enough.&lt;/p&gt;

&lt;p&gt;Useful for cron/batch jobs, always-looping workers, NAT/homelab outbound-only boxes, and as a secondary check that your primary monitoring stack can still “pet” the switch. It is not full APM — it answers one question: “Has this thing gone quiet?”&lt;/p&gt;

&lt;h2&gt;
  
  
  Minimal setup (PulseGuard example)
&lt;/h2&gt;

&lt;p&gt;PulseGuard is a small MVP: create a probe, send heartbeats to an HTTP API with a Bearer token, watch status in a console, get Telegram alerts when the window is missed. Publicly: alerts &lt;strong&gt;within minutes&lt;/strong&gt;. Trial is single-tenant. Display name: &lt;strong&gt;PulseGuard Watchdog&lt;/strong&gt; (heartbeat when jobs go quiet — not classic uptime).&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create a probe (name + timeout) → receive a token.&lt;/li&gt;
&lt;li&gt;Heartbeat from cron / timer / end of successful run:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer &amp;lt;token&amp;gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  https://pulseguard.agentbuff.dev/api/heartbeat
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Miss the window → Telegram fires; console shows last-seen.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Try the trial: &lt;a href="https://pulseguard.agentbuff.dev" rel="noopener noreferrer"&gt;https://pulseguard.agentbuff.dev&lt;/a&gt;&lt;br&gt;&lt;br&gt;
If you want pricing updates later, use &lt;strong&gt;Interested in paid pricing&lt;/strong&gt; on the site.&lt;/p&gt;

&lt;p&gt;Docs: &lt;a href="https://pulseguard.agentbuff.dev/docs" rel="noopener noreferrer"&gt;https://pulseguard.agentbuff.dev/docs&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  When NOT to use this
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Public URL uptime alone is enough.&lt;/li&gt;
&lt;li&gt;You need APM/tracing/error budgets (watchdog is complementary).&lt;/li&gt;
&lt;li&gt;Alert channel shares fate with the job.&lt;/li&gt;
&lt;li&gt;You refuse any external dependency (self-host on unrelated infra).&lt;/li&gt;
&lt;li&gt;Human/irregular workflows → alert fatigue.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;“Is production up?” is incomplete without “Would we know if the watcher stopped?” A lightweight heartbeat watchdog closes that loop: require a check-in, treat silence as signal, alert independently.&lt;/p&gt;

&lt;p&gt;Know when the monitor dies — before your customers do.&lt;br&gt;&lt;br&gt;
&lt;a href="https://pulseguard.agentbuff.dev" rel="noopener noreferrer"&gt;https://pulseguard.agentbuff.dev&lt;/a&gt;&lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>devops</category>
      <category>saas</category>
      <category>sre</category>
    </item>
  </channel>
</rss>
