Portable Agent Runtime Architecture: Interchangeable MCP Hosts
Generated artifact. Do not edit manually.
Generated by:
scripts/build_compendia.pyRegenerate with:python3 scripts/build_compendia.py --compendium runtime-workflows --web-and-texSource of truth:docs/concept/runtime-workflows/source/
Language / Sprache: English (EN) · Deutsch (DE) | PDF: English PDF · Deutsches PDF
Compendium: §1 Personalization · §2 Learning Workflow · §3 SRS Sync · §4 Import/Export · §5 Portable Host · §6 Coach Contract · §7 Coach Topology · §8 OAuth & Session · §9 Coach Behavior · §10 Plugin Lifecycle
5. Portable Agent Runtime Architecture: Interchangeable MCP Hosts
Scope and Structure
Strategic architecture governing SkillPilot's long-term host and model-provider independence. Binding operational contracts for current coach adapters are specified in 6 through 10 and take precedence whenever details differ. Part A defines the durable normative architecture; Part B records the dated market assessment (as of 19 August 2026, complemented by subsequent repository decisions in 10).
5.1. Part A — Durable architecture: three-tier separation and core invariants
SkillPilot is structured long-term into three independently replaceable tiers:
- SkillPilot Core as the durable, provider-neutral learning system,
- an interchangeable AI Chat Application / MCP Host,
- an interchangeable Model Provider (preferably addressed via an Open-Responses-conformant interface).
Two Co-Equal Architectural Rules
- SkillPilot Core must depend neither on a specific chat host nor on a specific LLM provider.
- Per learner, SkillPilot Core persists exclusively structured, schema-validated learning and control state — never chat messages, learner phrasing, free-text answers, student work, images, attachments, or model grading transcripts.
Learning conversations do not vanish by keeping Core narrow: they reside in the MCP Host and (when vision is used) at the chosen Model Provider. Because no single platform today satisfies every requirement simultaneously (hosted runtime, cross-device chats, direct user-to-provider billing, Open Responses, Remote MCP, Skills, MCP Apps UI, Agent Plugins, mobile UX, voice dictation, vision, and minor-student eligibility), SkillPilot deliberately supports two operating tracks.
Standards and their exact roles
| Standard / Term | Normative role in SkillPilot |
|---|---|
Open Responses (vs. proprietary OpenAI Responses API or emulated /responses) |
Open specification between the Agent Runtime (MCP Host) and Model Provider/Gateway; conformance requires passing official acceptance tests plus SkillPilot's capability profile — never inferred from a /responses URL alone. |
| Model Context Protocol (MCP) | Standardizes connectivity between MCP Host/Client and SkillPilot Core as a Remote MCP Server over Streamable HTTP. |
| MCP Apps | Optional sandboxed HTML UI resources attached to MCP tools. Every SkillPilot tool supports plain-text output (universal fallback), structuredContent, and optional MCP Apps UI; no essential didactic step may depend solely on UI rendering. |
| Agent Plugins v1 | Portable install artifact (plugin.json, skills/.../SKILL.md, mcp.json); MCP Apps UIs are served live by the MCP server, and OAuth client profiles stay host-managed outside the plugin archive. |
Runtime and installation topology
End Devices (Mobile / Desktop Browser / App: Text, Dictation, Camera)
| HTTPS
v
AI Chat Application / MCP Host
+-- Chat UI + Server-side Agent Runtime (Loop, Context, Attachments, MCP Client)
| |
| Open Responses API / Gateway | Remote MCP (Streamable HTTP + OAuth)
v v
Model Provider (Learner/Parent SkillPilot Core
account; vision images land HERE, +-- MCP Server (Tools, Resources, MCP Apps UI)
never inside SkillPilot Core) +-- Didactic Services (Skill Graph, SRS, Exams)
+-- Learning State DB (structured state only)
5.2. State boundaries, operating tracks, media, and billing
| Processing domain | Stored data | Controller / owner |
|---|---|---|
| MCP Host | Chat user account, chat transcripts, messages, attachments, sessions, optional BYOK credentials | Host operator (in self-hosted pilot: enpasos) |
| Model Provider | Submitted prompts and vision images under provider terms | Model provider (direct contract with learner / parent) |
| SkillPilot Core | Structured learning and control state (learner link, curriculum/personalization, focus, activeGoal, binary mastery, SRS schedule, binary Verified Recall outcome) |
enpasos |
- No cross-host chat portability: Chat history is host-bound while learning state is SkillPilot-bound (
learner,activeGoal,masteryValue,dueItems,lastRecallOutcome;nextRecommendedActionis computed dynamically rather than persisted). Active coach mutations exclude free-text fields (retiring legacylastFeedbackexceptions in active contracts; see 6.2). - Visible identifiers: A random, opaque
learningSessionIdis explicitly permitted inside model context, whereas internal learner, account, or database IDs remain strictly hidden. - Two durable operating tracks: Track A uses provider-hosted MCP hosts (ChatGPT, Claude) with near-zero infra overhead and direct consumer subscriptions; Track B uses a portable open-source MCP host (pilot: single-node Docker Compose LibreChat; secondary lab: Archestra) with BYOK, direct provider billing, and explicit operator policies for MongoDB backups, upload-volume retention, key rotation, and minor-protection access controls.
- Dictation, ephemeral vision, and billing: Voice input converts to text in browser/host; photographed student work travels from MCP Host to the chosen vision Model Provider and never to SkillPilot Core (Core receives only structured writes such as
setMasterywith1.0). Provider accounts and API credentials belong strictly to learners or parents/guardians — a central SkillPilot operator key reselling tokens is prohibited.
5.3. Phased roadmap and mandatory host acceptance suite
- Phase 1 — Stabilize interfaces: Host-neutral Remote MCP surface (Streamable HTTP, OAuth 2.0, stable tool names, versioned schemas, idempotency, text fallback,
structuredContent, optional MCP Apps) plus canonical Agent Plugin bundle with zero image/solution upload tools. - Phase 2 & 3 — Self-hosted pilot & standards lab: Closed LibreChat pilot (5–10 testers across phone/desktop, dictation, vision, BYOK) alongside practical evaluation of Archestra (Open Responses acceptance tests, MCP Apps).
- Phase 4 & 5 — Hosted channels & future managed host: Claude (adult testers) and ChatGPT (directory release) sharing the same SkillPilot Core state; migration to a third-party managed portable host only once all 12 requirements (Open Responses, BYOK, MCP Apps, Agent Plugins, export/deletion, minor-eligible accounts) are proven.
Mandatory host and model acceptance gates: Cross-device session continuation without conflicting writes; 60 s German domain dictation triggering a tool call; phone-camera handwritten solution analysis with documented vision-provider retention; MCP negative test (proving zero image bytes, OCR text, solution prose, image URLs, or grading transcripts in MCP args, logs, traces, or DB); credential negative test; mobile OAuth refresh and opaque learningSessionId with zero internal ID leaks; write idempotency; account/chat deletion verification; complete text-only learning flow plus sandboxed MCP Apps check; direct user billing; official Open Responses test suite.
5.4. Part B — Dated market appendix (as of 19 August 2026)
| Criterion | ChatGPT | Claude | LibreChat | Archestra | Target Managed |
|---|---|---|---|---|---|
| Runtime ops | OpenAI | Anthropic | self/3rd-party | self/3rd-party | 3rd-party |
| Mobile MCP | verify in directory | yes (iOS/Android) | mobile web | to verify | required |
| Voice & camera | dictation/vision yes; live voice limited | yes | yes (vision direct to provider) | attachments doc.; mobile test open | required |
| Billing | ChatGPT sub | Claude sub | direct BYOK | personal keys | direct BYOK |
| Open Responses | internal proprietary | no | partial | /responses router to test |
required |
| MCP + Apps | Remote MCP; dev mode web-only | Remote MCP + mobile Apps | Remote MCP + PKCE; Apps draft | Remote MCP + Apps | required + text fallback |
| Age policy | 13+ (13–17 w/ consent) | Consumer 18+ (API separate) | operator-defined | operator-defined | minor-eligible |
| Role | strategic channel | adult benchmark | immediate pilot | 2nd candidate | long-term goal |
Open WebUI is not prioritized ahead of LibreChat or Archestra due to lacking native core MCP Apps support. Related normative contracts: 6, 7, 8, 9, 10, and OpenAI MCP Client Binding.