DHttp
DHttp: The True Internet. Clients are servers, names are identity, and every endpoint should be able to speak HTTP APIs directly.
DHttp is an Apache-2.0 open-source endpoint stack built on QUIC and HTTP/3. It keeps the Web's request/response model, then adds peer-to-peer transport, mutual-TLS identity, endpoint-aware name resolution, and policy-based access control so applications, devices, services, and agents can connect as equals.
What DHttp gives you
- HTTP/3 over QUIC — secure transport, multiplexed streams, and modern congestion control as the default foundation.
- Endpoint equality — an application endpoint can be both a client and a server.
- Name as identity — DHttp names and certificates authenticate peers through mutual TLS instead of treating DNS as only a routing hint.
- Endpoint-aware DNS — DHttp DNS records can describe reachable endpoint addresses, including private or proxied endpoints.
- Local-first networking — LAN-first and peer-to-peer paths are first-class; public infrastructure is used for bootstrap and reachability when needed.
- Fine-grained access control — authorize requests by verified identity and HTTP context.
- Language SDKs — Rust is the source implementation; native Node.js and Python bindings expose the same endpoint model.
Repository layout
This repository is a Cargo workspace for the DHttp SDK crates and native bindings:
| Package | Path | Purpose |
|---|---|---|
dhttp |
dhttp/ |
Endpoint facade for client/server HTTP/3, DNS resolver planning, trust defaults, and QUIC network integration. |
dhttp-identity |
identity/ |
DHttp name validation, identity certificates, subject-key metadata, and signing/verification helpers. |
dhttp-home |
home/ |
Local DHttp home directory, identity profiles, settings, and certificate/key loading. |
dhttp-access |
access/ |
Access-control expressions, matchers, HTTP integration, optional SQLite persistence, and CLI helpers. |
dhttp-api |
api/ |
Native Node.js (@genmeta/dhttp) and Python (dhttp) bindings for the endpoint facade. |
Lower-level crates can be used independently, but application code should normally start with the dhttp endpoint facade.
Quick start
Add the Rust SDK
Until the crates are published through the registry flow you use, depend on this repository directly:
[]
= { = "https://github.com/genmeta/dhttp.git", = "0.1.0" }
Build an endpoint
use Endpoint;
async
Serve HTTP APIs from the same endpoint
use ;
async
Endpoint::load uses the standard DHttp home profile and enables H3 DNS, mDNS, and system DNS. Use Endpoint::builder() when you need custom identity material, DNS schemes, bind patterns, QUIC configuration, or a shared network.
Node.js and Python bindings
The native bindings mirror the Rust endpoint model while following each ecosystem's conventions.
Node.js:
import from "@genmeta/dhttp";
const endpoint = await ;
const response = await endpoint.;
console.log;
Python:
= await
See api/README.md for raw stream primitives, high-level service APIs, and binding-specific notes.
Development
Run commands from this repository root:
Useful package-focused commands:
Binding builds live under api/:
Learn more
- Website: dhttp.net
- Documentation: docs.dhttp.net
- Repository: github.com/genmeta/dhttp
- License: Apache-2.0