Claude Hot Path
The fastest way from your code to Claude. One file, no SDK.
The hot path to Claude is one HTTPS POST, one JSON body, and a stream of six Server-Sent Event types. Every SDK wraps that in thousands of lines, and the wrapping costs you: in cold start, in memory, and in the milliseconds between the model finishing a thought and your code acting on it. Every client on this page writes the path by hand in a single file, with no SDK, and the same harness measures what each one adds.
The numbers come from a mock that replays a recorded exchange with its original timing, so they are about the client and not the network, and you can reproduce them without an API key.
Leaderboard
The API took about 1.5 seconds to answer the recorded exchange. These are the milliseconds each client added, fastest first. Cold start is process spawn to the first request arriving at the mock. Turnaround is the first reply finishing to the second request arriving: parse the stream, run the tool, send the next request. Client total adds the tail after the last reply, so it is every millisecond the mock was not streaming. Medians over the runs, from timestamps the mock recorded, with nothing subtracted. Lines are non-blank, non-comment lines of the one source file.
| # | Client | On the path | Cold start | Turnaround | Peak RSS | Ship | Artefact | Runtime | Lines | Toolchain | Post |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | rust | 3.16 ms | 1.14 ms | 0.73 ms | 3 MB | 3.3 MB | 1.4 MB | 2.0 MB | 184 | rustc 1.99.1 (58cf8f9c3 2026-10-13) | queued |
| 2 | zig | 3.67 ms | 1.39 ms | 0.99 ms | 2 MB | 488.3 KB | 488.3 KB | 0 | 179 | zig 0.17.0 | queued |
| 3 | go | 4.79 ms | 1.72 ms | 1.16 ms | 6 MB | 5.8 MB | 5.8 MB | 0 | 156 | go version go1.27.2 linux/arm64 | queued |
| 4 | csharp | 7.09 ms | 3.01 ms | 1.4 ms | 7 MB | 7.8 MB | 5.4 MB | 2.4 MB | 102 | dotnet SDK 10.0.402 | queued |
| 5 | bash | 35.3 ms | 6.98 ms | 19.09 ms | 11 MB | 23.7 MB | 3.7 KB | 23.7 MB | 75 | GNU bash, version 5.2.37(1)-release (aarch64-unknown-linux-gnu) | queued |
Apple M4 Max under Docker, linux/arm64. Download the data (CSV). A row marked queued has a post written and dated.
The spec
Every client must do all of this, and the bench checks each point rather than trusting the code.
- Read the key from
ANTHROPIC_API_KEYand the base URL fromANTHROPIC_BASE_URL. Nothing else from the environment. - Read the prompt from stdin.
POST /v1/messageswithx-api-key,anthropic-version: 2023-06-01andcontent-type: application/json, and a body withmodel,max_tokens,stream: true,messagesandtools.- Print each
text_deltaas it arrives. The bench checks the first visible byte reached stdout before the stream finished, so buffering the reply, or flushing only on newlines, fails. - Declare one tool,
local_time. When the stream ends withstop_reason: "tool_use", assemble theinput_json_deltafragments, run the tool, send thetool_resultback with the assistant turn echoed, and stream that reply too. - On a non-2xx response, print the body's
error.messageto stderr and exit non-zero. - One source file. HTTP and TLS from the platform where it has them. Where it does not, one named library, which counts towards size.
The posts
The first post publishes on Thursday 22 October 2026. Until then the repo is the post.