Provider Conformance Matrix
Go Micro treats model providers as interchangeable pieces of the same agent harness: services expose tools, agents reason over them, and workflows stitch the work together. The conformance harness keeps that promise honest by running the same deterministic services → agents → workflows scenarios against every configured provider.
The live harness is in internal/harness/provider-conformance. It skips
providers without API keys by default, so it is safe to run locally, and it fails
when any configured provider breaks the shared contract.
go run ./internal/harness/provider-conformance
For a no-key smoke test of the same harness wiring, run the mock provider:
go run ./internal/harness/provider-conformance -providers mock
Status legend
| Status | Meaning |
|---|---|
| ✅ Verified | Covered by the provider-conformance harness for configured live providers. |
| ⚠️ Unverified | Implemented in the public API, but not yet exercised by provider conformance. |
| — Unsupported | Not exposed by that provider integration today. |
Harness coverage by capability
These rows describe what the conformance harness verifies today. A provider is considered conformant when the configured-key run passes all selected harnesses.
| Capability | Harness coverage | Notes |
|---|---|---|
| Simple generation | ✅ Verified | Each harness asks the provider to produce an agent response through ai.Model. |
| Service tool calls | ✅ Verified | Harness services are discovered and invoked as model-selected tools. |
| Multi-step tool use | ✅ Verified | The universe and plan-delegate harnesses require more than one service/tool action. |
plan |
✅ Verified | plan-delegate verifies that the conductor agent stores a plan in scoped state. |
delegate |
✅ Verified | plan-delegate verifies agent-to-agent delegation over real RPC. |
| Guardrail/stop behavior | ✅ Verified | universe runs with guardrails enabled and asserts the guarded path completes. |
| Streaming | ⚠️ Unverified | ai.Model.Stream exists on the interface, but end-to-end streaming conformance is a roadmap item. |
| Structured errors | ⚠️ Unverified | Error handling is covered by normal test suites, but provider conformance does not yet compare structured provider errors. |
Provider capability matrix
This matrix combines the registered provider interfaces with the conformance coverage above. The chat/text column is the harness path: when the provider has a configured key, the conformance command exercises the verified rows in the previous section.
| Provider | Chat/text agent harness | Image | Video | Streaming | Structured errors |
|---|---|---|---|---|---|
anthropic |
✅ Verified when configured | — Unsupported | — Unsupported | ⚠️ Unverified | ⚠️ Unverified |
openai |
✅ Verified when configured | ✅ Registered | — Unsupported | ⚠️ Unverified | ⚠️ Unverified |
gemini |
✅ Verified when configured | — Unsupported | — Unsupported | ⚠️ Unverified | ⚠️ Unverified |
groq |
✅ Verified when configured | — Unsupported | — Unsupported | ⚠️ Unverified | ⚠️ Unverified |
mistral |
✅ Verified when configured | — Unsupported | — Unsupported | ⚠️ Unverified | ⚠️ Unverified |
together |
✅ Verified when configured | — Unsupported | — Unsupported | ⚠️ Unverified | ⚠️ Unverified |
atlascloud |
✅ Verified when configured | ✅ Registered | ✅ Registered | ⚠️ Unverified | ⚠️ Unverified |
Running a focused check
Use -providers to select a provider and -harnesses to narrow the scenario:
go run ./internal/harness/provider-conformance \
-providers openai,anthropic \
-harnesses agent-flow,plan-delegate
By default missing live-provider keys are reported as skips. Add
-require-configured in CI when a selected provider must be present:
go run ./internal/harness/provider-conformance \
-providers openai \
-require-configured
The command also prints the registered model, image, and video provider
capabilities before running conformance. Disable that with -capabilities=false
when you only want pass/fail output.
For automation, add -summary-json to capture the selected providers,
harnesses, registered capability rows, and pass/skip/fail results in a stable
machine-readable file. Add -capabilities-markdown when you also want a
ready-to-publish Markdown support table for release notes, docs, or issue
updates:
go run ./internal/harness/provider-conformance \
-providers mock \
-summary-json provider-conformance-summary.json \
-capabilities-markdown provider-capabilities.md