Provider Mux & Launcher — Remaining Work
49 open items ordered by dependency. Items earlier in the list unblock items later.
Tier 0: Cleanup & Fixes (no dependencies, unblocks everything)
These are quick fixes that remove confusion and unblock correct work downstream.
| # | Task | Files | Depends on |
|---|---|---|---|
| 1 | Remove dead OllamaManager class and its tests — OllamaServerManager is the real implementation | providers/ollama_mgr.py, tests/test_ollama_mgr.py | — |
| 2 | Remove stale re-exports in launch.ts (isNativelySupported, getRequiredProxyTransport imported but only re-exported, never used in resolution) | packages/cli/src/commands/launch.ts:22-24 | — |
| 3 | Remove a2a from TransportId type and config validator (no implementation, misleads users) | packages/core/src/provider-config.ts, packages/amux-proxy/src/amux_proxy/config.py | — |
| 4 | Update spec: docs/provider-mux.md §2 lists translate.py and health.py as separate files — they're inline in transport endpoints and server.py. Update spec to match | docs/provider-mux.md | — |
| 5 | Update spec: docs/amux-provider-config.md §8.2 says "single-use bearer token" — it's session-scoped. Fix wording | docs/amux-provider-config.md | — |
| 6 | Delete or populate empty tests/conftest.py (contains only import pytest) | packages/amux-proxy/tests/conftest.py | — |
| 7 | Fix /v1/count_tokens to return HTTP 400/500 on error instead of {"count": -1, "error": "..."} with 200 | packages/amux-proxy/src/amux_proxy/server.py | — |
| 8 | Fix ollama list string matching — parse line-by-line and check first column instead of includes() | packages/cli/src/commands/launch.ts | — |
| 9 | Fix default proxyMode — should be 'never' when no --with-proxy* flag is given, with clear error when proxy is needed | packages/cli/src/commands/launch.ts | — |
| 10 | Add --resume validation — check adapter.capabilities.canResume, error for unsupported harnesses | packages/cli/src/commands/launch.ts | — |
| 11 | Migrate FastAPI @app.on_event("startup"/"shutdown") to lifespan context manager (deprecated API) | packages/amux-proxy/src/amux_proxy/server.py | — |
Tier 1: Core Infrastructure (unblocks most feature work)
| # | Task | Files | Depends on |
|---|---|---|---|
| 12 | Fix Python env: CI workflow must use isolated venv (python -m venv or uv) to avoid pydantic v1/v2 conflict | .github/workflows/amux-proxy-ci.yml | — |
| 13 | ProviderConfig.params → Record<string, unknown> — support rich LiteLLM config (RPM/TPM, custom headers, retry policies, aws_bedrock_runtime_endpoint, vertex_credentials) | packages/core/src/provider-config.ts, provider-resolver.ts, all translators | — |
| 14 | Add --provider-arg key=value repeatable CLI flag — flows arbitrary key-value pairs into ProviderConfig.params | packages/cli/src/commands/launch.ts | 13 |
| 15 | Dynamic provider detection — pass provider/model string to LiteLLM directly via custom provider instead of maintaining static ProviderId union. Keep named providers for defaults but let unknown prefixes pass through | packages/core/src/provider-config.ts, provider-resolver.ts | 13 |
| 16 | Transport-level redundancy detection — if harness's native transport matches provider's API format, skip proxy even when provider isn't in the native support matrix | packages/core/src/provider-support-matrix.ts, packages/cli/src/commands/launch.ts | — |
| 17 | Proxy installation pre-check — --with-proxy-if-needed should verify amux-proxy is installed before attempting spawn, with pip install amux-proxy guidance | packages/cli/src/commands/launch.ts | — |
| 18 | PTY allocation for interactive mode — use node-pty for TUI harnesses (Claude, Codex, Gemini) | packages/cli/src/commands/launch.ts | — |
| 19 | JSON schema file for providers.json — create schema, reference from spec | packages/core/schemas/amux-providers.schema.json, docs/amux-provider-config.md | — |
Tier 2: Transport Endpoints (unblocks cloud-provider fidelity)
| # | Task | Files | Depends on |
|---|---|---|---|
| 20 | Passthrough transport — forward requests in provider's native format (no translation). Add passthrough to TransportId. URL pattern: PROXY/anthropic/v1/messages → api.anthropic.com/v1/messages | packages/amux-proxy/src/amux_proxy/transports/passthrough.py, packages/core/src/provider-config.ts |