This page covers the runtime errors and log messages you are most likely to hit, what each one means, and how to recover. The error strings below come directly from the engine and standalone source.Documentation Index
Fetch the complete documentation index at: https://docs.idun-group.com/llms.txt
Use this file to discover all available pages before exploring further.
Server returns HTTP 503 agent_not_ready
Server returns HTTP 503 agent_not_ready
Symptom. A POST to Cause. The standalone server is running, but no agent has been materialised yet. This is the first-run state before the wizard completes.Fix. Open
/agent/run, /agent/stream, or the deprecated /agent/invoke returns:http://<host>:<port>/ in a browser. The chat root detects the unconfigured state and redirects to /onboarding/, which scaffolds an agent and seeds the DB. After the wizard completes, the next /agent/* call returns 200.If you expected an agent to be configured, check the admin panel at /admin/agent/ to confirm the agent row exists.Boot log: engine layer skipped, admin-only mode
Boot log: engine layer skipped, admin-only mode
Symptom. At startup the log contains:Cause. The standalone read the DB and could not assemble an
EngineConfig from the stored rows. This usually happens because no agent row exists yet, or because the seeded YAML failed validation. The server still boots so you can reach /admin/ and /onboarding/, but the /agent/* routes return agent_not_ready until the agent is materialised.Fix. Either complete the onboarding wizard, or read the AssemblyError reason printed in the log. If your config.yaml was supposed to seed an agent on first boot, the YAML failed schema validation; fix the validation error and rerun idun init.Reload pipeline outcomes
Reload pipeline outcomes
Every admin-panel save flows through the three-round validation and reload pipeline in
libs/idun_agent_standalone/services/reload.py. The response carries one of three statuses, each with a different effect on the running engine.RELOADED
Validated and applied live. DB committed, engine rebuilt.UI toast: Saved and reloaded.
RESTART_REQUIRED
DB committed, engine NOT rebuilt. Triggered by a structural change (
agent.type or agent.config.graph_definition).UI toast: Saved. Restart required to apply.RELOAD_FAILED
Engine refused the new config. DB write rolled back, prior config still active.UI toast: Engine reload failed; config not saved. Error detail attached.
Engine reload failed (RELOAD_FAILED)
Engine reload failed (RELOAD_FAILED)
Cause. One of:
- The new
graph_definitionpath is wrong or the variable does not export aStateGraph. - A guardrail config references a guard type the engine cannot instantiate (e.g. missing Guardrails Hub validator).
- An MCP server is unreachable and the engine could not discover its tools.
- An observability provider rejected the credentials at init time.
Round 2 validation failures (HTTP 422)
Round 2 validation failures (HTTP 422)
A save that fails Round 2 returns:Common causes:
- Framework mismatch: e.g. setting
agent.type=langgraphbut configuring an ADKSessionServicefor memory. Each framework has its own valid memory and checkpointer set. - Missing required field for the chosen
agent.type. The admin UI surfaces these inline; if you hit a 422 via API, thefield_errorsarray points at the offending field.
EngineConfig), so the error may reference a field that lives in a different admin sub-page than the one you edited.Graph load errors
Graph load errors
Symptom. At startup or after a Cause.
RESTART_REQUIRED reboot, the engine fails to initialise with an exception like:agent.config.graph_definition is parsed as <path_or_module>:<variable_name> and must resolve to a StateGraph (or a CompiledStateGraph, from which the engine extracts .builder).The engine tries the file-path interpretation first, then falls back to Python module import. So my_agent.py:app works if my_agent.py is in the current directory, and my_pkg.agents.router:graph works if my_pkg is importable.Fix:- Confirm the path or module exists and exports the named variable.
- Confirm the variable is a
StateGraphfromlanggraph.graph, not a custom wrapper or a function. If you have a builder function, call it before assigning to the module-level variable. - Confirm
langgraphis installed in the same environment asidun-agent-engine.
How to verify the graph loaded
How to verify the graph loaded
If the engine boots without error but you are not sure your graph is the one running:
GET /healthreturns the engine version andagent_namefield. A non-nullagent_namemeans an agent was successfully instantiated.GET /_engine/info(engine-only deployments) returns more detail, including the framework type.- In the admin panel, open
/admin/agent/. The live LangGraph visualisation reflects the currently loaded graph; if it shows your graph’s nodes and edges, the graph is loaded. - Open a trace from
/admin/traces/and inspect the span tree. The root span name corresponds to your graph’s entry node.
ADK adapter: could not load spec for module
ADK adapter: could not load spec for module
Symptom. Engine startup fails with:Cause. The ADK adapter (Relative paths resolve against the working directory you launched the server from. Absolute paths also work.
libs/idun_agent_engine/src/idun_agent_engine/agent/adk/adk.py) resolves agent.config.agent with importlib.util.spec_from_file_location, so the value must be a path to a .py file. Unlike LangGraph’s graph_definition, it does not fall back to dotted module imports. Values like my_pkg.agent:root_agent are interpreted as the literal file my_pkg.agent, which doesn’t exist, so spec_from_file_location returns None and the loader raises.Fix. Rewrite the path in file-path form:Edits to config.yaml don't apply after restart
Edits to config.yaml don't apply after restart
Symptom. You edit
config.yaml (change a model, add an MCP server, tweak a guardrail), run idun init again, and nothing changes in the running agent.Cause. config.yaml is a one-shot bootstrap, not a runtime config file. The seeder (libs/idun_agent_standalone/src/idun_agent_standalone/infrastructure/scripts/seed.py) runs each _seed_<resource>_if_empty helper, and every helper bails when the corresponding row already exists. After the first successful boot, the DB is the source of truth and config.yaml is effectively ignored.Fix. Edit through the admin panel at /admin/ instead. Saves there flow through the three-round validation + reload pipeline and apply immediately (subject to the RESTART_REQUIRED rules under “Reload pipeline outcomes” above).If you really want to re-seed from YAML, clear the relevant DB rows first. For a clean restart, stop the server, delete idun_standalone.db (on Postgres, truncate the seeded tables), then run idun init again.CLI startup warnings
CLI startup warnings
Three deprecation warnings appear on every CLI invocation today:Noise from upstream packages, no effect on functionality. Will be filtered in a future release.
What’s next
Connect your existing agent
minimal config for an existing
StateGraphProduction hardening
production env-var checklist
SSO
require an OIDC JWT on
/agent/*