Counting visitors…
Browse all docs
Start · 9Find your path through RunifoldLearn Runifold in 45 minutesUnderstand the complete Runifold platformYour first trustworthy runChoose the right execution APIChoose crates and Cargo featuresBuild common Runifold applicationsRunifold frequently asked questionsTroubleshoot Runifold applications
Execution kernel · 7Understand RunContextCoordinate external effects safelyBound work with budgets and cancellationHandle errors and retries safelyEvents, journals, and execution evidenceDesign capability-safe executionRecover safely from checkpoints
Models & providers · 7Route across models without duplicate outputChoose and configure a providerUse the provider-neutral model protocolBuild on the Provider Runtime contractUse OpenAI control-plane and Realtime APIsTest and benchmark provider adaptersSet up OpenAI, Anthropic, Gemini, and Ollama
Agents · 7Build and configure an AgentGive an Agent typed toolsAdd conversations and semantic memoryDelegate to child Agents safelyReturn structured Rust valuesStream without losing semanticsGround an Agent with retrieval
Durable workflows · 7Compose deterministic workflowsMake workflows durableOperate durable workflow workersCoordinate timers, signals, and durable waitsRun multi-tenant workflow infrastructureRun parallel branches and safe racesVersion and evolve durable workflows
Integrations · 7Connect through MCPChoose stores and persistence boundariesExpose durable work through MCP TasksBuild and evaluate retrieval pipelinesUse MCP Resources, Prompts, and SamplingCache MCP responses without crossing authorityDeploy Runifold in a Rust web service
Quality & operations · 10Test without the networkEvaluate quality and prevent regressionsObserve the complete run treeRun safely in browsers and at the edgeRead reliability claims preciselyRun reproducible evaluations in CIOperate Runifold with SLOsGovern Task retention and deletionArchive audit evidence to S3-compatible WORM storageManage compatibility and trusted releases
Docs/Help
NEW TO RUNIFOLD?Build the complete mental model in 45 minutes
Help

Troubleshoot Runifold applications

Diagnose installation, credentials, model capabilities, streams, retries, workflows, storage, and recovery with a repeatable path.

Practical guide·12 min

Installation and compilation

SymptomLikely causeAction
ProviderModelExt or from_api_key is missingold runifold releaseconfirm runifold = "0.9.0" and run cargo update -p runifold
provider module cannot be importedCargo feature is disabledenable openai, anthropic, gemini, ollama, or bedrock
Tokio main macro is missingruntime features are absentenable tokio/macros and tokio/rt-multi-thread
two Runifold types do not matchmixed crate versionsupdate all runifold-* crates to the same release
compiler is too oldMSRV is not satisfiedRunifold 0.9.0 requires Rust 1.88 or newer

Start diagnosis with:

rustc --version
cargo tree -i runifold
cargo check

Authentication and endpoints

An HTTP 401 usually means a missing, invalid, revoked, or wrong-environment credential. A 403 usually means the identity exists but lacks project, model, region, or organization access. A 404 may mean the model identifier or base URL does not match the selected provider protocol.

Check the credential in the same process environment that launches the application. Never print the secret. Log only whether configuration was present, which provider and model were selected, and the sanitized error category.

Model and capability errors

If a request works as plain text but fails with Tools or structured output:

  1. verify the exact model supports the feature;
  2. inspect Runifold warnings and the full outcome;
  3. confirm the adapter is native or uses the intended compatible wire protocol;
  4. reduce to the smallest request;
  5. run a live smoke test for that model-feature combination.

Do not silently fall back from required structured output or Tool execution to unvalidated text.

Timeouts, retries, and streams

A network timeout bounds one operation. A Run deadline bounds the useful lifetime of the execution tree. Inspect which boundary fired before changing limits.

Do not retry refusals, invalid requests, denied capabilities, exhausted budgets, or ambiguous writes blindly. Runifold retries only when the adapter marks the failure safe, but application retries must preserve the same rule.

For a stream that appears truncated, verify that the consumer reads until a terminal event, handles error events, and does not discard the final usage or outcome. Cancel the Run when the downstream client disconnects.

Workflows, storage, and recovery

SymptomCheck first
workflow resumes an old definitiondefinition version and checkpoint schema
two Workers execute the same tasklease fencing token and heartbeat expiry
completed Tool runs again after restartwrite-ahead effect record and idempotency key
task never wakessignal name, tenant scope, retention, and timer clock
checkpoint update is rejectedstale revision or compare-and-swap conflict

Ambiguous state is not success. Preserve the record, reconcile against the external system, and apply an explicit resume policy.

Build a useful minimal reproduction

Include:

  • exact runifold and Rust versions;
  • enabled Cargo features;
  • provider and model identifiers without credentials;
  • the smallest request, Tool schema, or Workflow definition;
  • sanitized error kind and retry-safety classification;
  • whether failure occurs in offline tests or only live;
  • relevant Run and invocation IDs without user content.

First reproduce with a scripted model or cassette. If only the live service fails, add a narrowly budgeted Provider smoke test and compare the wire capability evidence.