An agent preset is a composition: the set of plugin parts a chat on that preset starts with. Presets that ship with DataMind Oda and presets you write are declared the same way, as one block of fields inside a composition, and Oda reads that declaration back to build a chat, list the preset and check whether it can compose a session. This page covers the fields a declaration carries, the row it sits under, and how to read what Oda reports about a composition. Editing a preset from the interface is on Create and edit agent presets, and choosing one for a chat is on Agent presets.
| Field | Needed | What it sets |
|---|---|---|
id | Yes | The preset's identity, in lowercase letters, digits and hyphens. Chats record this id, and your saved choices name it. |
plugins | Yes | The rows the preset composes. Each row names a plugin, may carry that plugin's configuration, and can be declared off. |
name | No | The label shown for the preset where presets are listed. Without one, the id is shown. |
description | No | One sentence on what the preset is for, shown with the preset. |
order | No | Where the preset sorts in the list: lower values come first, and a preset without an order sorts after those that have one. |
model | No | The provider and model chats on this preset start on. Without one, chats start on the default model. |
A declaration written down looks like this:
id: review name: Review description: Reviews changes with the shell only. order: 10 model: provider: <provider> model: <model> plugins: - name: <plugin>
id and plugins are the two required fields; the rest are optional.
preset-<id>: the preset review sits in a row named preset-review. The declarations that ship with Oda and the ones Oda writes when you create a preset in Settings both follow the convention.id. A second row reusing one fails to load and reports Duplicate agent preset: <id>; the declaration already in place stays.id, plugins and every other field the preset should keep. A field you leave out is not inherited from the version it replaces.What Oda reads back from a composition is an inventory of rows: the plugin each row names and the state it is in. The same read also runs over a live composition, where each row has a phase as well.
To follow a composition on your computer, open Settings > Built-in plugins: the Session plugins group is composed per session by agent presets, and Choose the agent preset to inspect follows another preset's composition (Built-in plugins).
A preset is created or changed by a composition that an installed bundle carries; a change to a built-in preset arrives as an override of it. Installing a bundle runs its code on this computer, so it needs Full access or your approval (Plugins and MCP connections). Creating or editing your own preset in Settings writes its declaration for you (Create and edit agent presets).
preset-<id>?It is a convention rather than a rule. The declarations that ship with Oda and the ones Oda writes for you both follow it; keep it unless you have a reason not to.
No. An id belongs to one preset at a time. A second declaration that reuses one fails to load with Duplicate agent preset: <id>, and the declaration already in place stays. Give the new preset its own id.
No. An override replaces the declaration as a whole, not field by field: restate id, plugins and every other field the preset should keep, because a field you leave out is not inherited.
plugins list is malformed?The declaration fails to load with the message for what is wrong:
plugins field that is not a list of plugin rows reports the composition must be a top-level list of plugin rows.row <n> names no plugin (a "name" string is required).id reports Preset id must not be empty.Yes. name, description, order and model are all optional. A preset with no name is listed under its id, and adding a name later does not change that id.
Give it an order. Lower values come first, a preset with no order sorts after those that have one, and presets that share a value fall back to their id.
No. A preset is a composition, not a boundary: the plugins a declaration names run with Oda's own access to this computer. For the limits on what a chat may change, see Command sandboxing and approvals.
Oda does not guess: the preset keeps its place in the list carrying the reason it cannot compose a session, and no new chat starts on it until the declaration is fixed.
Open Settings > Built-in plugins and look at the Session plugins group. It is composed per session by agent presets, and Choose the agent preset to inspect follows another preset's composition; Built-in plugins covers that list and the states a row can show.