Repository navigation
Highlights
- Separate gateway routing, provider adapters, protocol codecs, and upstream transport so Codex subscriptions, GitHub Copilot subscriptions, and OpenAI-compatible APIs share explicit adaptation boundaries.
- Complete bidirectional Chat Completions and Responses conversion, including tool declarations, calls, results, conversation history, and JSON/SSE rendering.
- Improve Copilot compatibility for Codex clients and GitHub Copilot CLI, including native Responses tools, model-specific request normalization, and stable streaming output identities.
- Add native
POST /v1/responses/compactforwarding for Codex and OpenAI-compatible providers that implement standalone compaction.
Protocol compatibility and reliability
- Preserve function, custom, and namespaced tool semantics across native and translated requests, including named tool choices, text tool results, call IDs, and custom grammars.
- Normalize Copilot tool schemas while preserving validation constraints, resolving schema references and object unions, and restoring client-facing tool names and types.
- Keep Copilot native stream item identities stable across added, delta, and completed events to avoid duplicate output items.
- Apply provider-scoped compatibility rules for Grok reasoning history, Claude assistant history and forced tool choices, and Gemini reasoning-effort validation without rewriting other providers' requests.
- Preserve the original request for retries and mixed-provider fallback rather than carrying an earlier provider's normalized payload into the next attempt.
- Try the alternate wire API for OpenAI-compatible providers only after endpoint-level 404, 405, or 501 responses; do not reinterpret model, authentication, rate-limit, or validation failures as missing endpoints.
- Preserve dense Chat streaming tool-call indices and requested terminal usage chunks, and avoid duplicated subscription-credit response headers.
Console and documentation
- Align Accounts table typography with the other console tables.
- Replace the reset-credit box with a top divider and a simpler inline presentation.
- Add provider account, GitHub Copilot CLI configuration, capability-limit, and provider-adapter architecture documentation.
Upgrade notes
Pull public.ecr.aws/cloudpilotai/subpool:v0.5.0 for the stable image. Linux AMD64 and ARM64 images are published together.
No new database migrations or deployment configuration changes are included since v0.4.0. The separate API and console listeners remain required, with unchanged settings and defaults.
Protocol limitations are now reported explicitly instead of silently losing request semantics:
- Standalone compaction requires a native upstream compaction endpoint. Copilot subscriptions return
unsupported_compaction; Subpool does not fabricate encrypted compaction items. - Image and file tool results require native Responses support. Conversion to Chat returns
unsupported_tool_output; ordinary user image messages remain supported. - Stateful continuation, in-band compaction, and non-default Chat controls that the alternate protocol cannot represent are not silently downgraded.
- Subpool exposes OpenAI-style wire APIs, not Anthropic Messages. For GitHub Copilot CLI, use
COPILOT_PROVIDER_TYPE=openai, a provider base URL ending in/v1, and an appropriate Chat or Responses wire API for the selected model.
Verification includes Go, web, release-page, race-enabled adapter/gateway, and illustrative local protocol-matrix tests. This coverage is not a blanket live-compatibility guarantee for every client version or upstream model.
Full changelog: v0.4.0...v0.5.0