DataMind Oda is the desktop app that works with your company's DataMind OS, and it can also run from a command line in named profiles. A profile selects how that run works; this page covers the profiles Oda ships, how a profile is built, and how to add bundles to one.
A command-line start names exactly one profile: oda --profile <name>. Oda ships five profiles:
| Profile | What it serves |
|---|---|
web | The Oda interface in a browser on this computer. |
headless | Answers one task and exits. |
acp | Automation clients that speak the Agent Client Protocol. |
sdk | Oda SDK clients, over standard input and output. |
sdk-minimal | A small standalone runtime for SDK clients. |
Naming a profile, its flags and its templates is on Command line and flags. The web mode has its own reference on The Oda web interface, one-shot runs are on Headless runs, and the serving profiles are described below.
web, headless, acp and sdk profiles start from Oda's shared core; sdk-minimal carries its own standalone tree instead.Install the package into the profile from a command line:
oda plugin --profile <name> add <package>
Start the profile again. After the command succeeds, Oda updates the profile's bundle list: a package that carries a patch document joins the profile's layers, and a package that carries none stays an ordinary dependency.
pnpm on your PATH. The command forwards its arguments to the package manager, so removing or updating a package works the same way.Every shipped profile answers --help the same way: it prints the profile's help and exits with code 0, before its transport starts, and it does not claim standard input or output.
The acp profile serves automation clients that speak the Agent Client Protocol, over standard input and output. It serves one client per process and runs until that client disconnects; closing its standard input shuts it down cleanly. Its help describes it: Serve automation clients over Agent Client Protocol stdio.
session/ close, session/ list and session/ resume against the stored sessions, and a resume reconnects the MCP servers its request declares, without replaying earlier updates. Driving a session is walked through on Automation clients, and the protocol in depth is on Automation with ACP.The sdk profile serves Oda SDK clients over newline-delimited JSON-RPC, on standard input and output. One runtime serves one client and runs until that client disconnects; closing its standard input shuts it down cleanly. Its help describes it: Serve DataMind Oda SDK clients over stdio JSON-RPC.
How a client starts and drives a runtime, and the messages it sends, are on Oda SDK overview.
sdk-minimal is a small standalone runtime for SDK clients: JSON-RPC, one model adapter, a single persistent shell tool, and sessions kept as plain JSON lines under the Oda home folder. It does not layer over Oda's shared core.
The minimal runtime runs with full access to the computer: its shell can change any path the process can reach, with no sandbox limits and no approval prompts. Use it only with an isolated workspace.
bash on macOS and Linux, pwsh on Windows.web serves the interface in a browser, headless answers one task and exits, acp serves automation clients that speak the Agent Client Protocol, sdk serves Oda SDK clients over standard input and output, and sdk-minimal is a small standalone runtime for SDK clients. Each command-line start names exactly one of them.
The last write wins. Layers and your own settings file write the same entries, and a patch replaces the whole setting of the entry it targets, not only the values it names. The profile settings file covers the file your changes live in.
From a command line: oda plugin --profile <name> add <package>. Managing packages from outside Oda needs pnpm on your PATH, and a package that carries a patch document joins the profile's layers once the command succeeds. A running profile keeps the bundle set it started with, so restart it afterwards.
--help start the mode?No. --help prints the profile's help and exits with code 0, before the profile's transport starts, and it does not claim standard input or output.
No. A serving runtime works with one client and runs until that client disconnects; give each client its own process. Closing standard input shuts the runtime down cleanly.
For automation clients, keep the automation bundle, or another automation bridge, or no client gets an answer. For SDK clients, keep the SDK bundle, or another SDK server, or client initialization fails. Either way, configuration changes need a restart.
A persistent shell: bash on macOS and Linux, pwsh on Windows. It is the runtime's only tool.
As plain JSON lines under the Oda home folder.
Two settings: whether a run that stops at its token limit counts as accepted or as an error, and the bundled Python runtime for Office document features, which a deployment setting can replace or turn off with an empty value.