Export read-only OpenClaw agents sharing an attached Ollama route
- Dominant language
- TypeScript
- Stars
- 22.5k
- Forks
- 3.1k
- Avg merge
- 1d 43m
- Merged PRs (30d)
- 718
Description
Parent: #10904. Implementation target: **main**.
## Problem and outcome
The exporter understands a read-only secondary agent and the attached-Ollama/managed-proxy topology separately, but [`sharesPrimaryHostedRoute`](https://github.com/NVIDIA/NemoClaw/blob/f5c05a0e6a59bd5133c50e31becbff25af274c33/src/lib/config/schema.ts) rejects any read-only roster whose provider has a `serving` object. Allow their supported combination.
Source baseline: `f5c05a0e6a59bd5133c50e31becbff25af274c33`.
## Before / after
### Before
At the recorded source revision, `ollama-roster` has primary OpenClaw plus a read-only `researcher`, both using the verified `qwen3.5:9b` route through the attached daemon and managed proxy.
```bash
nemoclaw config export ollama-roster --output ollama-roster.yaml
```
The hosted-only read-only-roster rule prevents successful export of this combination. A single-agent Ollama deployment and a hosted-inference read-only pair are supported separately.
### After
The same command succeeds. Its agents share the same exported Ollama provider and model:
```yaml
# spec.sandboxes[0].agents
- name: primary
type: openclaw
inference:
routes:
- name: primary
providerRef: local-ollama
overrides:
model: qwen3.5:9b
- name: researcher
type: openclaw
tools:
allow: [read]
inference:
routes:
- name: primary
providerRef: local-ollama
overrides:
model: qwen3.5:9b
```
This is a roster/route excerpt; any supported retained tuning is included identically on both routes in the full output. The provider retains the verified daemon/proxy ports, external-daemon ownership, managed-proxy ownership and selected model digest.
The full export must preserve every admitted secondary after #11854. Different secondary routes/models, unsupported tools/settings, missing roster authority and daemon/proxy/model drift still refuse publication. The regression exercises this combination without changing either agent or the inference resources. Broader Ollama model support remains #11857.
## Scope
Native Linux, Docker, primary OpenClaw plus read-only secondary agents, all sharing the same single verified attached-Ollama route. Build on #11854; retain existing daemon/proxy/model ownership and authentication semantics.
## Acceptance
- Export primary plus researcher on the currently supported Ollama model with matching routes and `tools.allow: [read]`.
- Also accept a larger roster once 1..* export support lands, without introducing another special agent-count limit.
- Validate Ollama backend, proxy, model digest and live route through the existing observer before publication.
- Reject any secondary with a different route/model, unsupported tools, duplicate identity or unsupported per-agent execution settings.
- Keep hosted-roster and single-agent Ollama outputs unchanged; exercise the complete action and an existing Ollama qualification scenario.
This slice does not broaden models, daemon management, platforms or per-agent inference selection.
## Delivery boundary
Extend the existing observation → verification → document builder → schema → publication pipeline. Export remains read-only and emits credential references only. Preserve successful existing exports and refusals for unrelated unsupported state. Regenerate the checked-in schema when its source changes.
Use a failing behavioral test before implementation, focused schema/action tests, and an existing installed-CLI scenario for the real boundary. Reuse coverage work in #11485; branch-to-branch translation and deployment parity remain with #11810. This issue does not add config-driven apply, resource adoption, or change existing onboarding inputs.
Contributor guide
Assessment
This issue has not been assessed yet.