# ADR-0069: Claude is an installable provider; echo is the only built-in

- **Status:** Accepted
- **Date:** 2026-09-04
- **Deciders:** jka
- **Decision:** D69

## Context

ADR-0066 moved OpenAI out of the tree but kept Claude in-tree as an always-present
provider. The maintainer's intent was that agent integration belongs to rio while
individual LLM providers are extensions. Keeping one provider inside and one outside
blurred that line.

## Decision

Claude installs as a `kind = provider` extension from `extensions/claude/`, exactly
like OpenAI. The core ships only the offline `echo` provider. A real agent, including
on the maintainer's own development core, is installed from a repository and
activated on restart.

`plugins/lib/` stays in the tree: it is the `provider-api` runtime the core loads
before any provider, not a provider.

## Consequences

- Providers track fast-moving vendor APIs outside the core, and every provider goes
  through the same install, version gate, key entry and contract.
- A fresh core offers no hosted model until a provider is installed. The Preferences
  Agent page shows a hint pointing at Extensions… while only echo is present.
