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

- 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'scall_apptool). - 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_shotwith several agents and nocoordinatorrole, 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

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:
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):
queuewaits for the agent to finish its current turn before handling a new message;injectadds 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.
directsends the full tool list every turn (most reliable, costs more).compact_directsends a shortened list (cheaper).discoveryhas 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):
summarizecondenses older messages when the conversation gets too long;truncatedrops 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).