Skip to main content

Runtime node

Chooses how the app runs. This is the single most consequential setting in any Digitorn app - it decides whether it is a chat assistant, a one-shot function another system calls, or something that runs unattended on a schedule or event.

Mode​

The Runtime node's Mode section, with the mode dropdown and its help text

  • Mode (required), one of three:
    • Conversation - back-and-forth chat, like a chatbot.
    • One-shot - answers a single request and stops, no chat history. Called by another app or an external system (POST /api/apps/{id}/invoke, or another app's call_app tool).
    • Background - runs on its own with no one watching, woken by a schedule or an external event (webhook, Telegram, RSS...).
  • Entry agent (optional), which agent answers first. Left empty, the first agent declared takes it - except one_shot with several agents and no coordinator role, which then requires this field to compile.
  • Sessions per user (optional), how many conversations one person can keep open at once. Empty means no limit.
  • Workdir mode (optional): whether this agent gets its own folder of files to work in. none - no file access. required - must have one to run. fixed - always the same folder. auto - created per conversation.

Background mode needs a trigger​

The unarmed-background warning, both in the panel and as a compile error

Picking Background mode alone does nothing - the runtime panel says so directly: "Background mode needs at least one trigger to actually run - add a Schedule (Cron), Webhook, RSS, or chat trigger from the canvas. Until you do, this node shows 'unarmed' and nothing happens." This isn't just a hint text either - a background app with no trigger fails to compile (DGT-E0407: mode: background requires at least one armed channel provider), and the Runtime node itself gets a red error badge on the canvas:

The Runtime node on the canvas showing the red error badge and "unarmed" subtitle

Confirmed by testing this directly in Studio: switching an app to Background mode with no trigger wired produces exactly this - a compile error, a red badge, and a toast saying "Background is unarmed: add a Cron/Webhook/channel trigger (or digitorn-background won't start)."

Loop​

  • Max parallel runs (optional), how many runs of this app happen at once; extra runs wait their turn. Empty means no limit of its own.
  • Max turns (optional), the agent loop iteration cap.
  • Timeout (s) (optional), the wall-clock limit for a run (background / one-shot).
  • Mid-turn messages (optional): queue waits for the agent to finish its current turn before handling a new message; inject adds new messages into what the agent is already doing, mid-turn.

Context​

  • Tool injection (advanced, optional): how the agent finds out what tools it has. direct sends the full tool list every turn (most reliable, costs more). compact_direct sends a shortened list (cheaper). discovery has the agent look tools up only when it thinks it needs one (cheapest, slightly less reliable).
  • Stop retries (optional), how many times the agent may resume after deciding it is done.
  • Context max tokens (optional), the compaction window size (e.g. 1000000 for large models).
  • Compaction strategy (optional): summarize condenses older messages when the conversation gets too long; truncate drops the oldest ones.

One-shot apps also get a reminder in this section that the maximum depth of a call_app chain (how many one-shot apps can call each other before it's rejected) is a daemon-wide setting, not per-app - Admin Console → Runtime limits → Max call_app depth (default 4).