Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 16 additions & 16 deletions docs/about/release-notes.mdx

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion docs/deployment/deploy-to-remote-gpu.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -182,7 +182,7 @@ nemoclaw onboard
```

If onboard ends with `Sandbox '<name>' was created but did not become ready within 180s`, onboard first deletes the partially created sandbox, so the next attempt with the raised budget starts from a clean state.
For the inference-probe budget that runs earlier in onboarding, refer to [`NEMOCLAW_LOCAL_INFERENCE_TIMEOUT`](../inference/use-local-inference#timeout-configuration).
For the inference-probe budget that runs earlier in onboarding, refer to [`NEMOCLAW_LOCAL_INFERENCE_TIMEOUT`](../inference/local-compatible-inference-setup#timeout-configuration).

## Proxy Configuration

Expand Down
4 changes: 2 additions & 2 deletions docs/get-started/windows-preparation.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -169,10 +169,10 @@ Use one instance, or move one of them to a different port before running `$$nemo
On Windows on Arm N1X systems with a Snapdragon X processor, let NemoClaw choose the Ollama starter model automatically.
It selects the compute-constrained `qwen3.5:9b` path instead of recommending the 30B and 35B starter models.
<AgentOnly variant="openclaw">
For the selection boundary and remaining N1X limitations, refer to [Use a Local Inference Server](/user-guide/openclaw/inference/use-local-inference).
For the selection boundary and remaining N1X limitations, refer to [Use Ollama for Local Inference](/user-guide/openclaw/inference/use-local-inference).
</AgentOnly>
<AgentOnly variant="hermes">
For the selection boundary and remaining N1X limitations, refer to [Use a Local Inference Server](/user-guide/hermes/inference/use-local-inference).
For the selection boundary and remaining N1X limitations, refer to [Use Ollama for Local Inference](/user-guide/hermes/inference/use-local-inference).
</AgentOnly>

## Next Step
Expand Down
13 changes: 11 additions & 2 deletions docs/index.yml
Original file line number Diff line number Diff line change
Expand Up @@ -54,9 +54,12 @@ navigation:
- page: "Inference Options"
path: _build/agent-variants/inference/inference-options.openclaw.generated.mdx
slug: inference-options
- page: "Use Local Inference"
- page: "Use Ollama for Local Inference"
path: _build/agent-variants/inference/use-local-inference.openclaw.generated.mdx
slug: use-local-inference
- page: "Set Up Self-Hosted Inference Servers"
path: _build/agent-variants/inference/local-compatible-inference-setup.openclaw.generated.mdx
slug: local-compatible-inference-setup
- page: "Tool-Calling Reliability"
path: inference/tool-calling-reliability.mdx
slug: tool-calling-reliability
Expand Down Expand Up @@ -243,6 +246,9 @@ navigation:
- page: "Inference Options"
path: _build/agent-variants/inference/inference-options.deepagents.generated.mdx
slug: inference-options
- page: "Set Up Self-Hosted Inference Servers"
path: _build/agent-variants/inference/local-compatible-inference-setup.deepagents.generated.mdx
slug: local-compatible-inference-setup
- page: "Model Capability Audit"
path: _build/agent-variants/inference/model-capability-audit.deepagents.generated.mdx
slug: model-capability-audit
Expand Down Expand Up @@ -363,9 +369,12 @@ navigation:
- page: "Inference Options"
path: _build/agent-variants/inference/inference-options.hermes.generated.mdx
slug: inference-options
- page: "Use Local Inference"
- page: "Use Ollama for Local Inference"
path: _build/agent-variants/inference/use-local-inference.hermes.generated.mdx
slug: use-local-inference
- page: "Set Up Self-Hosted Inference Servers"
path: _build/agent-variants/inference/local-compatible-inference-setup.hermes.generated.mdx
slug: local-compatible-inference-setup
- page: "Model Capability Audit"
path: _build/agent-variants/inference/model-capability-audit.hermes.generated.mdx
slug: model-capability-audit
Expand Down
56 changes: 37 additions & 19 deletions docs/inference/declarative-agents-manifest.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,11 @@ status: published
---

NemoClaw can bake a multi-agent OpenClaw layout into a sandbox image from a single checked-in manifest.
Supply the manifest at onboard time with `--agents <path>` and NemoClaw embeds the resulting `agents.list` entries, per-agent overrides, and `agents.defaults.subagents` block into `openclaw.json` during the image build.
Supply the manifest at onboard time with `--agents <path>`.
During the image build, NemoClaw embeds the resulting `agents.list` entries, per-agent overrides, and `agents.defaults.subagents` block into `openclaw.json`.

The schema mirrors OpenClaw's own `agents.list[]` field names, so the same keys from [OpenClaw's sub-agents reference](https://docs.openclaw.ai/tools/subagents) appear verbatim in the manifest.
The schema mirrors OpenClaw's `agents.list[]` field names.
The manifest uses the same keys that appear in [OpenClaw's sub-agents reference](https://docs.openclaw.ai/tools/subagents).

## When to Use This

Expand All @@ -44,10 +46,13 @@ For a single primary agent on the configured inference route, no manifest is req
nemoclaw onboard --agents ./agents.yaml --name my-assistant
```

NemoClaw reads the manifest on the host, sets `NEMOCLAW_EXTRA_AGENTS_JSON` for the Dockerfile patcher, and the build-time validator in `scripts/generate-openclaw-config.mts` is the single source of truth for structured errors.
NemoClaw reads the manifest on the host and sets `NEMOCLAW_EXTRA_AGENTS_JSON` for the Dockerfile patcher.
The build-time validator in `scripts/generate-openclaw-config.mts` is the single source of truth for structured errors.
A malformed manifest fails the image build with a clear error message.

## Manifest Shape
## Define the Manifest

Define the primary and secondary agents in a checked-in YAML manifest.

```yaml
defaults:
Expand Down Expand Up @@ -87,8 +92,10 @@ agents: # required when secondary agents are needed
| `main.subagents` | Sub-agent delegation policy for `main`. Same shape as a secondary agent's `subagents` block. | `agents.list[id=main].subagents` |
| `agents[]` | Secondary agents to append after `main` in `agents.list`. | `agents.list[]` |

The `main` agent is always written first into `agents.list` with `default: true`.
Operators cannot set `default: true` on a secondary agent and cannot rename the primary slot.
### Primary Agent

NemoClaw always writes the `main` agent first into `agents.list` with `default: true`.
You cannot set `default: true` on a secondary agent or rename the primary slot.

### Per-Agent Fields

Expand All @@ -102,9 +109,10 @@ Operators cannot set `default: true` on a secondary agent and cannot rename the
| `model` | no | `provider/model` reference. The provider must match the onboard provider; cross-provider manifests are not supported. |
| `subagents` | no | OpenClaw-native sub-agent delegation policy. Refer to the section below. |

### Sub-Agent Delegation Block
### Configure Sub-Agent Delegation

Both `main.subagents` and `agents[].subagents` use the same shape, which mirrors OpenClaw's [`agents.list[].subagents`](https://docs.openclaw.ai/gateway/config-agents).
Both `main.subagents` and `agents[].subagents` use the same shape.
That shape mirrors OpenClaw's [`agents.list[].subagents`](https://docs.openclaw.ai/gateway/config-agents).

| Field | Type | Purpose |
|---|---|---|
Expand All @@ -117,14 +125,16 @@ Both `main.subagents` and `agents[].subagents` use the same shape, which mirrors
OpenClaw only honors `maxSpawnDepth` on `agents.defaults.subagents`, so the manifest exposes it only under the top-level `defaults` block.
Do not set `maxSpawnDepth` per agent.

### Multi-Model Sandboxes
## Configure Multiple Models

When a secondary agent declares its own `model` (or `subagents.model`), NemoClaw widens the baked `models.providers[<onboard-provider>].models[]` array with one entry per unique `provider/model` reference.
When a secondary agent declares its own `model` or `subagents.model`, NemoClaw adds each unique `provider/model` reference to the baked `models.providers[<onboard-provider>].models[]` array.
The base `contextWindow`, `maxTokens`, `reasoning`, and `input` settings from the onboard route apply to each appended entry.
Per-model overrides beyond these defaults are out of scope for v1.
Edit the generated `openclaw.json` in place if you need finer control.

## Manager-Worker Example
## Create a Manager-Worker Layout

Use the following manifest to let `main` delegate log-reading tasks to a dedicated secondary agent.

```yaml
defaults:
Expand All @@ -144,7 +154,7 @@ agents:
allow: [read]
```

What this produces in the baked `openclaw.json`:
This manifest produces the following baked `openclaw.json` configuration:

- `agents.list[0]` is `main` with `default: true`, the operator-supplied `tools`/`subagents` merged in.
- `agents.list[1]` is `logs-reader` at the canonical workspace/agentDir paths.
Expand All @@ -155,23 +165,31 @@ What this produces in the baked `openclaw.json`:
## Iterating

Edit `agents.yaml`, re-run `nemoclaw onboard --agents ./agents.yaml --recreate-sandbox`.
Workspaces under `/sandbox/.openclaw/workspace-<id>` are preserved across rebuilds because the runtime startup script provisions them on first boot rather than baking their contents.
Workspaces under `/sandbox/.openclaw/workspace-<id>` are preserved across rebuilds.
The runtime startup script provisions them on first boot rather than baking their contents.

For ad-hoc per-agent edits inside an existing sandbox (no rebuild), use the in-sandbox CLI: `nemoclaw <name> agents add|delete|list`.
The manifest path is for fixed, checked-in layouts; the CLI passthrough is for interactive work.
For ad-hoc per-agent edits inside an existing sandbox without a rebuild, use the in-sandbox CLI, `nemoclaw <name> agents add|delete|list`.

Use the manifest for fixed, checked-in layouts.
Use the CLI passthrough for interactive work.

## Apply to an Existing Sandbox

`nemoclaw <name> agents apply -f <agents.yaml>` reconciles the live sandbox roster against the manifest **without a rebuild**.
The verb lists current agents via `openclaw agents list --json`, diffs them against the manifest, and drives `openclaw agents add|delete` per item.
Per-agent `model`, `subagents.*`, top-level `defaults`, and `main` overrides require a sandbox rebuild and are reported as warnings the verb prints before exit; rerun `nemoclaw onboard --agents <file> --recreate-sandbox` to bake those.
`nemoclaw <name> agents apply -f <agents.yaml>` reconciles the live sandbox roster against the manifest without a rebuild.
The command lists current agents with `openclaw agents list --json`.
It compares the current roster with the manifest and runs `openclaw agents add|delete` for each difference.

Per-agent `model`, `subagents.*`, top-level `defaults`, and `main` overrides require a sandbox rebuild.
The command reports those unsupported live changes as warnings before it exits.
Re-run `nemoclaw onboard --agents <file> --recreate-sandbox` to bake them.

```bash
nemoclaw my-assistant agents apply -f ./agents.yaml --yes
```

The `--yes` and `--non-interactive` flags are required for scripted use.
`--yes` confirms the printed roster diff, and `--non-interactive` makes the verb fail fast when `--yes` is absent rather than waiting for an interactive prompt that scripted callers cannot deliver.
The `--yes` flag confirms the printed roster diff.
The `--non-interactive` flag makes the command fail fast when `--yes` is absent rather than waiting for an interactive prompt that a script cannot answer.

## Next Steps

Expand Down
Loading
Loading