A runtime server lets a program of yours drive DataMind Oda without the app window: the program talks to the runtime over standard input and output and speaks the Oda SDK messages. This page describes the runtime's side of that conversation, from the handshake to shutdown. For the parts of the SDK, see the Oda SDK overview; to connect a program of your own, see Automation clients.
Standard output carries only protocol messages, and clients parse every byte of it. Keep anything else, such as a logger that writes to standard output, out of the runtime: a stray line corrupts the connection. Diagnostics belong on standard error.
initialize before it sends anything
else. Until a handshake completes, prompts are refused: SDK server is not initialized.no adapter registered for provider "<provider>". A route that cannot run with the effort you
asked for fails with provider "<provider>" model "<model>" does not support reasoning effort "<effort>".initialize reasoningEffort must be a non-empty string), and the token cap must be a positive safe
integer (initialize maxTokens must be a positive safe integer). Omit a field to keep its default.{ messageId } immediately. Nothing later is attributed to it; the answer arrives in the
session. event stream while the run works.SDK image prompt requires an attachment store.session. event, and
every whole-agent lifecycle change as session. status: running while the agent works, idle
when it stops.subagent. finished is sent only for a subagent run that
happened in this runtime's own process; a run elsewhere is not reported through it.shutdown request the server writes the response, disposes the
runtime so the agents and data it owns settle, and exits with code 0.SDK server is shutting down.SDK server teardown failed.
Restart the runtime before the next run.session agent was disposed outside the server: <id>; the session
cannot continue.No. A runtime serves one client from the first message until it disconnects; give each client its own runtime.
SDK server is not initialized. What does that mean?The runtime has not completed an initialize handshake, so it does not accept prompts yet. Complete a
successful handshake before sending prompts; if the handshake itself failed, its error says why.
Yes. More work can be enqueued on the same session; prompts for one session wait their turn, and a busy session does not block prompts for other sessions.
SDK image prompt requires an attachment store?The runtime has no attachment store to keep the image, so it refuses the prompt instead of losing the image. The image itself is fine; the runtime needs attachment storage before it can accept inline images.
subagent. finished notification?It is sent only for a subagent run that happened in this runtime's own process. A subagent that ran elsewhere is not reported through it.
running and idle statuses describe?The whole agent, not one turn: running while the agent works and idle when it stops.
By default a max-token stop is not a success. A runtime can be configured to report max-token terminations as successful results.
A prompt that needs a new session is refused with SDK server is shutting down. The runtime is
finishing its shutdown; start a new runtime for the next run.
SDK server teardown failed. What do I do?Several parts of the runtime did not shut down cleanly at once. Stop the runtime process and start a new one before the next run.
session agent was disposed outside the server. Why?Something outside the server stopped that session's agent, so the server refuses to drive the session further. Continue in a new session.