Agent-First HTTP
Persistent HTTP client for AI agents — one request, one JSON line.
Supported platforms: macOS, Linux, Windows.
curl opens a new TCP+TLS connection for every request. An agent making 20 calls to the same API pays 20 handshakes — on a 200ms RTT link, that's over 4 seconds of pure overhead before a single byte of useful work. afhttp is a long-lived process: connections stay open, concurrent requests share them, and the agent never thinks about transport.
CLI Mode
The default mode — one request, one JSON response, exit:
# {"code":"response","status":200,"body":[...],"trace":{"duration_ms":120,...}}
# {"code":"response","status":201,"body":{"id":42},...}
# {"code":"response","status":200,...}
Exit codes: 0 = got HTTP response (any status), 1 = transport error, 2 = invalid arguments.
Pipe Mode
For long-lived sessions with connection reuse, concurrent requests, and WebSocket — use afhttp --pipe:
output:
What just happened:
- One bash call — the heredoc sends all requests into one
afhttpprocess; afhttp exits when stdin closes - Auth set once — the
configheader applies to every subsequent request; nothing is repeated - Three requests fired without waiting —
models,usage, andchatall in-flight simultaneously - Connection reuse is automatic — requests to the same host can reuse pooled connections without extra agent logic
- Out-of-order responses —
usagearrived beforechatfinished; the agent matches byid - Streaming inline —
chatdelivers events as they arrive, no buffering, no special setup - HTTP errors are data —
usagereturned 403; afhttp delivers it ascode: "response"withstatus: 403; the agent checksstatus, not exception types or text patterns
MCP Mode
afhttp --mcp runs as a Model Context Protocol server, letting AI tools like Claude Desktop make HTTP requests directly:
Claude can then call http_request and http_config tools. See docs/mcp.md for the full setup guide.
curl Compatibility
Drop-in replacement for curl scripts — afhttp understands curl flags and returns structured JSON instead of raw bytes:
# {"code":"response","status":201,"body":{"id":42},...}
# or via symlink
# macOS/Linux
# Windows PowerShell
)
Install
Docs
- CLI Manual — CLI, MCP, and curl compat modes
- MCP Reference — MCP tool reference and Claude Desktop setup
- Protocol Reference — full field specification
- Design — architecture and principles
License
MIT