The Oda Python SDK lets a Python program drive DataMind Oda as a subprocess: your program starts a bundled Oda runtime and talks to it over newline-delimited JSON-RPC on standard input and output. Use it when a script or an internal tool of yours should run Oda tasks from outside the app.
This page covers installation, a first run from the shipped example, the profiles and the settings you pass. The run results, the runtime's lifecycle, the wire surface and the error details are in the Python SDK reference.
The Python side of the SDK is two packages, installed together: the SDK package (the client, which starts the bundled runtime for you and drives runs through it) and the runtime package (the bundled Oda runtime for one system, with its supporting files). The SDK package declares the runtime package as a dependency, so an install brings the package that matches your operating system and processor, and the two share one version.
The SDK package ships a runnable minimal example: it drives the sdk-minimal profile, runs one task and prints the agent's final response. These are the choices it takes:
| What you pass | What it decides |
|---|---|
| The task text | The prompt for the run. |
| The workspace folder | The folder the agent works in. |
| The home folder | Where the runtime keeps its profile and sessions; the example stops without one, with a message that an explicit home is required. |
| The profile | Which profile to drive; it defaults to sdk-minimal. |
| The session id | A name for the session; without one, the run gets its own. |
| The provider and model | The model route; without them, the built-in route applies, and the runtime resolves it before the first prompt. |
| The token cap | Optional; caps the output of each request. |
sdk is the default. A client you create runs the sdk profile unless you pass another; it answers SDK clients and carries the usual tool set.sdk-minimal is a small standalone runtime. It exposes exactly one tool, a persistent shell, and it is built as its own tree rather than an extension of the usual profile, so anything extra is an explicit change. Automation clients describes what it includes and leaves out.These are the settings you pass when you create the client, with their defaults:
| Setting | Default | What it does |
|---|---|---|
| Home folder | required | Where the runtime keeps its profile and sessions; every launch needs one and the SDK never falls back to a default. |
| Working folder | your program's folder | The folder the agent works in; resolved to an absolute path before launch. |
| Runtime folder | the working folder | The folder the runtime process itself starts in. |
| Profile | sdk | The profile the bundled runtime runs. |
| Patch files | none | Applied in order after the profile's own layers; the later file wins. |
| Provider and model | the built-in route | The model route, resolved before the runtime accepts a prompt; a route it cannot serve fails the start instead of falling back. |
| Reasoning effort | the model's default | How long the model thinks before it answers; omit it for the model's own default. |
| Token cap | none | Caps the output of each request. |
| Service address and key | your environment | Override the address and key the runtime starts with; without them the runtime inherits your program's environment, so credentials already set there keep working. |
| Start-up timeout | 30 seconds | How long the start-up handshake may take before the client gives up. |
| Shutdown timeout | 1 second | How long the shutdown request may take before the client moves on. |
| Request timeout | none | With no value, a run waits for the task, however long it takes. |
Two packages, installed together: the SDK package (the client) and the runtime package for your operating system and processor. The SDK package brings the matching runtime package with it, and the two share one version. Both run on Python 3.10 or later.
No. The runtime ships prebuilt inside the runtime package, so using the SDK needs no system Node.js and no build step. Only a development source build needs a system Node.js, and that route is an explicit request.
The launch is refused: every launch needs an explicit home folder, and the SDK never falls back to a default one. The error says an explicit home is required.
Start with sdk, the default: it answers SDK clients with the usual tool set. Choose sdk-minimal for exactly one persistent shell tool; Automation clients describes what it includes and leaves out. A profile you build must keep the part that answers SDK clients.
It drives the sdk-minimal profile, runs one task and prints the agent's final response. You give it the task, the workspace and home folders, the profile, a session id and the model route; without a home folder it stops with a message that an explicit home is required.
At the runtime's next start. There is no rebuild step, even for skills and other resources.
Yes. Disable the Office skill in a patch, or point it at a replacement resource folder; the change takes effect at the next start. A skill you keep on the filesystem still overrides a bundled skill with the same name.
The start fails: the runtime resolves the route before it accepts a prompt, and a route it cannot serve does not fall back to a default. Name a provider and model this runtime can serve and start again.
It is missing the part that answers SDK clients (the JSON-RPC server). Without it the profile cannot serve a client, and the problem surfaces when the runtime starts or the SDK initializes. Keep that part in the profile and try again.
No. The web application is separate and is not a serving profile, so an SDK client cannot select it.