{
  "id": 4266820,
  "title": "Giving AI Agents a Deterministic Clock (Zero LLM in the Loop)",
  "url": "https://urgent.news/2026/08/29/giving-ai-agents-a-deterministic-clock-zero-llm-in-the-loop",
  "topic": "ai",
  "section": "AI",
  "published": "2026-08-29T19:50:18.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/jservodotcom/giving-ai-agents-a-deterministic-clock-zero-llm-in-the-loop-3fk5"
  },
  "original_language": "en",
  "account": "When creating autonomous AI systems, developers inevitably encounter a critical design limitation. Your coding agent poses a question, and you step away from the keyboard. The session stalls, the query stagnates, and progress grinds to a halt. At J. Servo LLC, we engineer enterprise AI systems to function predictably. We developed Sundial to serve as the missing piece in the human-in-the-loop framework. Sundial operates on a single guiding principle: measuring absence rather than time.\n\nWhen the human becomes a blocker, Sundial's clock continues ticking. It gently prompts you on your desktop, escalates politely through your absence, and welcomes you back with seamless continuity. If no response is forthcoming, the agent proceeds based on its predetermined judgment or ceases operation altogether. This deterministic operation is achieved without relying on any model calls and runs entirely locally.\n\nThe flawed conventional approach involves using Large Language Models (LLMs) to determine user abandonment. This violates lean architecture principles, as time tracking should reside at the system level. Sundial enforces a strict architectural boundary across three primary components: Sensors, Watcher Daemon, and Ledgers.\n\nSensors perform zero-permission OS reads using HIDIdleTime, lsappinfo, pmset on macOS, and xprintidle or loginctl on Linux. If any sensor returns no data, Sundial defaults to wall time instead of blocking the system. The Watcher Daemon, a pure Python loop running via launchd, handles presence classification and escalation without utilizing any LLMs.\n\nLedgers store plain JSON files in a git-ignored data/ directory. State transitions are written atomically using NamedTemporaryFile, fsync(), and os.replace(), and serialized through inter-process locking via fcntl.flock. The core architecture comprises four main components: Presence-Scaled Absence Ladder, Bounded Breakpoint Delivery, Self-Calibrated Task Estimation, and the Autonomy Gate.\n\nThe Presence-Scaled Absence Ladder defines three strict presence states: HERE (chat visible, clock paused), ELSEWHERE (in another application, clock runs at half speed), and AWAY (workstation idle, clock runs at full speed). Escalation only occurs while the human is genuinely absent. The Bounded Breakpoint Delivery ensures that ripe nudges are not delivered mid-keystroke, holding them for up to three minutes until a natural typing gap or application switch occurs. Self-Calibrated Task Estimation tracks the empirical ratio distribution of actual versus estimated task durations, applying a small-n honesty floor to ensure reliable estimates. Finally, the Autonomy Gate provides a deterministic verdict on whether to proceed with an action based on user input, with distinct responses for silence while present versus silence while absent.",
  "summary": "When building autonomous AI systems, developers eventually hit a fundamental architectural wall. Your coding agent asks you a question, and you step away from the keyboard. Today, nothing happens. The session hangs, the question rots, and the work stalls. At J. Servo LLC , we architect enterprise AI systems to operate predictably. We built Sundial to act as the missing half of the…",
  "key_points": [],
  "editors_take": null,
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}