Dibbla Docs Get started Guides Workflows Changelog
Open Console
Beyond apps

Runs and logs

Watching a run while it happens, finding one afterwards, and the log-persistence rule that explains why a finished run looks quiet.

Every execution is a run with an id, a status, logs and an output. There are two moments you care about: while it is happening, and afterwards.

While it happens

Executing with --follow starts the run and tails it:

$dibbla wf execute incident_triage --follow --data '{"question":"..."}'
Started run b6034b16-… — tailing logs

run completed
$dibbla wf execute incident_triage --async --data '{...}'
# returns run metadata immediately
 
$dibbla wf logs <runId> --follow
$dibbla wf runs output <runId>

The editor shows the same stream in its Logs panel, which is useful when you are looking at the graph anyway:

The editor's Logs panel during a run

The editor's panel is live-only, and nothing is backfilled

It shows whatever streams while you have that workflow open — including a run you triggered from the CLI, as long as the editor was already open. What it cannot show you is a run that finished before you opened the tab: the panel is built from what arrived over the socket, not from stored history. Use the Runs view for anything in the past.

Afterwards

The runs view listing past executions with status and duration

$dibbla wf runs list
$dibbla wf runs list -w incident_triage -n 20
 
$dibbla wf runs output <runId>
Why a finished run looks quiet

Only WARN and ERROR lines are persisted, plus the terminating run completed marker. INFO and DEBUG are live-only. So tailing a run that finished an hour ago can show almost nothing, and that is not a bug — it means nothing went wrong. For the full picture of a finished run, use wf runs output, not wf logs.

When a run does not finish

A run that neither completes nor errors is the confusing case. In order:

  1. --follow it. A watchdog reports a stalled run within about 30 seconds, with a per-input diagnosis — far more useful than waiting out the server-side timeout.
  2. Check the worker. If the graph calls functions from your own execution server and that process is gone, the dispatch has nowhere to land.
  3. Suspect input types. function execution failed is the same message whether your handler returned an error or the arguments failed to deserialize, so the message alone will not tell you which. Type mismatches are the most common cause: send true, not "true"; 42, not "42". A panic is the one case that is distinguishable — it logs panic during function execution with a stack, so if you do not see that, your code ran and something else went wrong.

Triggering on a schedule

Cron-triggered runs are covered in Pipelines and schedules, which is also where the scheduler’s own quirks live.