Gateway Validation Report¶
This page summarizes end-to-end validation of the LLM-Rosetta Gateway (via argo-proxy) with real-world CLI tools, SDK test suites, and cross-format routing.
Last updated: 2026-04-12
Tested with llm-rosetta v0.5.0 and argo-proxy v3.0.0b7
Cross-Format Routing Matrix¶
Argo-proxy routes Claude models to the native Anthropic upstream and all other models (GPT, Gemini) to the OpenAI Chat upstream. The gateway automatically translates between auth credential formats (Authorization: Bearer, x-api-key, x-goog-api-key).
Text Generation (9/9 ✓)¶
| Client (API Format) | Claude Model | GPT Model | Gemini Model |
|---|---|---|---|
| Claude Code (Anthropic) | ✓ passthrough | ✓ anthropic→openai_chat | ✓ anthropic→openai_chat |
| Codex CLI (OpenAI Responses) | ✓ responses→anthropic | ✓ passthrough | ✓ passthrough |
| Gemini CLI (Google GenAI) | ✓ google→anthropic | ✓ google→openai_chat | ✓ google→openai_chat |
Image Understanding (9/9 ✓)¶
| Client (Image Method) | Claude Model | GPT Model | Gemini Model |
|---|---|---|---|
Codex CLI (-i flag) |
✓ | ✓ | ✓ |
| Claude Code (Read tool) | ✓ | ✓¹ | ✓ |
| Gemini CLI (read_file tool) | ✓ | ✓ | ✓ |
¹ Requires GPT-5.4+; GPT-4.1-nano may fail to interpret Read tool image results.
For reproducible commands and detailed test procedures, see CLI Cross-Format Testing.
Integration Test Summary (22/22 ✓)¶
| Test Suite | Tests | Result |
|---|---|---|
| Google GenAI SDK | 5 | 5/5 ✓ |
| Google GenAI REST | 6 | 6/6 ✓ |
| OpenAI Chat SDK | 5 | 5/5 ✓ |
| OpenAI Responses SDK | 3 | 3/3 ✓ |
| Anthropic REST | 3 | 3/3 ✓ |
| Total | 22 | 22/22 ✓ |
For SDK test details and curl-based validation, see SDK & Integration Tests.
Bugs Found and Fixed During Validation¶
| Issue | Description | Fix |
|---|---|---|
| #56 | OpenAI Responses streaming: missing id/object/model fields |
Fixed in converter |
| #57 | OpenAI Chat streaming: tool_calls missing index field |
Fixed in converter |
| #58 | stream_options leaked into Responses API requests |
Removed from ir_stream_config_to_p() |
| #59 | Google converter ignored tools in REST-format requests | Added fallback to top-level fields |
| #61 | Google camelCase functionDeclarations not parsed |
Handle both casings; extract all |
| #62 | Google streaming tool calls split into two chunks | Defer tool_call_start, emit on delta |
| — | Anthropic input_schema missing type for no-param tools |
Default to {"type": "object"} |
Known Limitations¶
- Claude Code + non-Claude models: Claude Code passes image data via its Read tool result. Some models (e.g., GPT-4.1-nano) may not interpret base64 image content from tool results correctly. Use GPT-5.4+ for reliable image understanding.
- Gemini CLI headless mode: In non-interactive (
-p) mode, Gemini CLI has no--imageflag. Images can be read via the built-inread_filetool by referencing a file path within the workspace. - Auth transparency: The gateway passes upstream auth errors through. A 401 from upstream means the API key is invalid for the target provider, not a gateway issue.