ADR 0001 — Claude-native, not provider-agnostic
Status: accepted (2026-08)
Decision
Emissary consumes the Claude API exclusively (via the official Anthropic SDK behind an internal
transport seam). The public API exposes Claude concepts (thinking blocks, cache control, compaction)
directly. We do not abstract over model providers.
Outward interop is first-class: Emissary agents are consumable via IChatClient and MCP, so they
compose into multi-model systems (e.g. Microsoft Agent Framework orchestrations) without Emissary
itself driving other models.
Context
As of 2026: Microsoft Agent Framework 1.0 (GA April 2026) owns the provider-neutral .NET agent space. The differentiated features Emissary is built on — cache-aware prompt assembly, compaction lifecycle, block-level trajectory replay — live precisely in provider-specific details that a neutral abstraction erases.
Consequences
- Depth over breadth: one wire format, tested exhaustively.
- The provable-agents layer (contracts, taint, replay assertions) stays internally decoupled from Anthropic types so it could be extracted later — but no public multi-provider promise exists.
- The Anthropic SDK is beta; its types never appear in Emissary's public API surface.