Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
eggfetch
eggfetch is a Rust-native async HTTP client engine (tokio + hyper) with Python bindings and a CLI. There is exactly one networking implementation, living entirely in eggfetch-core; the Python sync API blocks on the async engine while releasing the GIL, and the async API integrates with asyncio.
Features
- HTTP/1.1, HTTP/2, HTTP/3 — ALPN negotiation; HTTP/3 over QUIC stays experimental (graduation gate)
- Streaming — request/response bodies without eager buffering (
bytes_stream(),text_lines()); trailers viaResponse::trailers()(guide) - Pooling, timeouts, observability — per-origin in-flight limits, phase-aware timeouts (pool/connect/write/read/total), connector/DNS/TLS and H3 transport metrics (pool/timeouts)
- TLS — rustls with custom CA bundles, mTLS client certs, version policy, verification toggle (TLS)
- Proxy — HTTP forwarding, HTTPS CONNECT, proxy auth, per-request override,
NO_PROXY; SOCKS5 and UDS routes (proxy) - Cookies, auth, multipart — RFC 6265 jar, Basic/Bearer with redaction, streaming multipart uploads (cookies)
- Retries and redirects — policy-driven backoff with
Retry-After, replayable-body redirect handling (retry) - Compression — feature-gated streaming gzip/brotli/zstd/deflate with zip-bomb limits (compression)
- Native Rust JSON (opt-in) — replayable
RequestBuilder::json(), single-consumptionResponse::json()via thejsonfeature (guide) - Python API — requests/HTTPX-compatible sync and async interfaces (guide), plus versioned
eggfetch.compat.httpx(0.28.1) andeggfetch.compat.httpx2(2.12.0) facades (compatibility) - Upgrades — 101 responses expose an owned
network_stream(WebSocket/SSE building blocks); CONNECT tunnels stay body-iterator only - CLI — streaming output, machine-readable formats, shell completions (guide)
- C ABI and Node.js prototype — opaque-handle FFI plus an experimental N-API wrapper (ffi-and-node)
Installation
Python:
Rust:
[]
= { = "0.1", = ["http1", "tls-rustls", "tls-native-roots"] }
See the feature profile matrix for minimal, deterministic, and embedded recipes.
CLI:
Usage -- Python
=
=
=
= await
= await
=
Versioned HTTPX-compatible facades over the same engine:
# HTTPX 0.28.1 surface
# httpx2 2.12.0 surface
See docs/python/guide.md for the full Python API reference.
Usage -- Rust
use Client;
use StreamExt;
async
The opt-in json feature adds RequestBuilder::json() / Response::json() Serde helpers, and resolved_addresses() pins caller-validated destinations without a second DNS lookup. See docs/rust/guide.md for the full Rust API reference.
Usage -- CLI
# GET request
# POST JSON
# With authentication
# Streaming download
# Machine-readable output
See docs/cli/guide.md for the full CLI reference.
Examples
Runnable starting points (each takes an optional base URL argument, default https://httpbin.org):
crates/eggfetch-core/examples/quickstart.rs— core client: configured GET/POST, timeout override, auth, streaming (cargo run -p eggfetch-core --example quickstart)examples/python_sync.py— sync client, JSON POST, streaming downloadexamples/python_async.py— async client with concurrent requests
More patterns are in docs/cookbook/.
HTTPX Compatibility
Two versioned, independent facades over the single Rust engine — eggfetch.compat.httpx (0.28.1) and eggfetch.compat.httpx2 (2.12.0, adds FunctionAuth, Origin/URL.origin, QUERY, SSE, optional WebSocket). Both are Stage C qualified on frozen executable SHA 22a6f5c0dc0207c1356b6143c0eda3d4075063b0; HTTPX 1.0 preview under compat/httpx/1.0-preview/ is reconnaissance only.
See docs/reference/compatibility.md for the full feature matrix and retained differences.
Documentation
| Section | Description |
|---|---|
| getting-started/ | Installation and quickstart guide |
| concepts/ | Architecture, lifecycle, timeouts, streaming, cookies, auth, proxy, TLS |
| rust/guide.md | Rust API guide with examples |
| python/guide.md | Python sync/async API guide |
| cli/guide.md | CLI reference and usage guide |
| migration/ | Migration guides from requests and HTTPX |
| cookbook/ | Practical runnable examples |
| reference/ | Compatibility matrix, feature matrix, error reference |
| security/ | Security guidelines and troubleshooting |
| architecture/ | Internal architecture documentation |
| ffi/ | C ABI and FFI binding guide |
Security
- Dependency auditing:
cargo-denyconfigured indeny.toml - Secret redaction: all
Debug/Display/error output redacts credentials, cookies, bearer tokens, and proxy passwords - Threat model: see docs/architecture/threat-model.md
- Vulnerability reporting: see SECURITY.md
License
eggfetch is licensed under the MIT License.
MSRV
The minimum supported Rust version is 1.80, declared in workspace.package.rust-version and checked in extended validation. rust-toolchain.toml pins the stable channel for development.