Providers
Provider Quick Browse
- Project:
.agents/skills->.claude/skills,.agents/agents->.claude/agents,.agents/rules->.claude/rules - User:
~/.agents/skills->~/.claude/skills,~/.agents/agents->~/.claude/agents - Rule files stay
.mdand are rendered with Claude-compatible frontmatter when needed - Managed phase implementers and optional nested workers use the exact configured candidate returned as
providers.claude.dispatchArgs.model; OAT passes that value as the actual Agentmodel
Managed dispatch views
Reusable ordered candidate ladders live in workflow.dispatchCeiling.providers.
The project or phase named ceiling is only a maximum over those candidates; it
does not select one permanent model family for the project.
Adopt the complete ladder into an explicit owning config scope before sync:
oat config adopt dispatch-matrix --shared
oat config adopt dispatch-matrix --local
oat config adopt dispatch-matrix --userProject-config candidates materialize into the tracked, version-controlled
project .codex view. User-config candidates materialize under ~/.codex.
OAT does not auto-ignore project output or create its Git commit; the team owns
that repository change.
At implementation time, the root passes the recorded named maximum through
invocation-only --ceiling-tier, resolves one exact candidate per phase, and
dispatches one phase implementer. Codex first attempts the resolver-returned
materialized role as the native agent_type. The launcher records the target,
model axis, and effort axis from that resolved payload; child self-report is not
provenance and cannot replace those values.
Only an explicit pre-start native role-selection rejection permits a fresh
pinned-child fallback. An accepted child, including one that later returns
BLOCKED or lacks telemetry, is a task outcome rather than a fallback signal.
Claude and Cursor bind the exact model arguments described above. A missing or
unselectable managed target blocks rather than falling back to the root target
or a base role.
Scope rules
- Project scope: skills + agents + rules
- User scope: skills, plus the two bundled managed Codex role definitions used only for user-owned target expansion (provider mappings vary by adapter)
- Rules are project-scoped only in this release
- Codex user-scope sync materializes user-config custom roles under
~/.codex; project-config and supported-catalogue output remains project-scoped and version controlled
Adoption model
- Stray adoption is available in
oat initandoat status. - Adoption reconciles canonical plus the adopted provider first.
- Rule adoption normalizes provider filenames back to canonical
.agents/rules/*.mdentries before cross-provider fanout. - Cross-provider fanout is explicit via
oat sync --scope all.
Reference artifacts
.oat/projects/<scope>/<project>/spec.md(FR5)packages/cli/src/providers/**packages/cli/src/providers/shared/adapter.utils.ts