Architecture¶
OpenTranscribe owns exactly one transformation: authorized audio to a normalized transcript.
flowchart TD
C[MCP client] --> A[Auth and MCP tools]
A --> R[Capability router]
R --> S[Source broker]
S --> P[Provider adapter]
P --> N[Canonical transcript]
N --> I[Inline result]
N --> O[Optional result store]
The public contract is defined in domain/. Provider-specific request and response shapes remain inside providers/. The router filters configured models by explicit capabilities before applying a deterministic policy. The source broker validates URLs and chooses provider-side fetching or an ephemeral proxy file. The service applies preflight limits, invokes one provider at a time, falls back only after normalized transient failures, and chooses inline or stored output.
Normal inline operation is stateless. Memory storage exists for tests and one-process development. S3-compatible storage enables scale-to-zero and multiple instances without a database. The application does not discover recordings, summarize text, create documents, or track downstream idempotency.
Extension boundary¶
A provider contribution implements TranscriptionProvider, declares every model capability, translates one canonical request, and returns CanonicalTranscript. Routing and tools do not import provider-native models.
Trust boundaries¶
Client arguments, source URLs, provider responses, audio, and transcript content are untrusted. Credentials and policy configuration are trusted server-side inputs. No transcript content is executed or supplied back into routing.