Files
alknet/docs/architecture/crates/core/endpoint.md
T
glm-5.2 8669594661 docs(arch): extract AlknetEndpoint into alknet-endpoint (ADR-083 Am. 2026-07-15)
Amend ADR-083 with the crate-extraction decision: the endpoint moves
from alknet-core into a new crate alknet-endpoint, mirroring the
alknet-client extraction (ADR-089). The ADR's shape (new + builder
methods + public dispatch + run/shutdown) is unchanged; only the
location changes.

The extraction is structural pruning, not an inline refactor. The
endpoint is a leaf consumer of core's shared types (zero handler crates
import it; 124 import sites for the other core modules). Extracting it
lets core shed quinn/iroh/rcgen/rustls-acme — handler crates no longer
transitively link those. A pure worker (client-only) does not pull
alknet-endpoint at all. The dep graph is symmetric: alknet-core is the
shared types crate; alknet-endpoint and alknet-client are the
server-side and client-side establishment crates.

New spec: crates/endpoint/README.md (the canonical endpoint spec).
core/endpoint.md is deprecated to a stub. Cross-references updated
across 8 docs (README, overview, tls, hub, client, core README, ADR-083,
ADR-089 references). Architecture review passed (3 critical, 9 warnings
— all addressed).
2026-07-15 13:19:30 +00:00

1.9 KiB

status, last_updated
status last_updated
deprecated 2026-07-15

Endpoint (moved to alknet-endpoint)

This document is deprecated. The AlknetEndpoint, HandlerRegistry, and EndpointError types have been extracted from alknet-core into a new crate alknet-endpoint (ADR-083 Amendment 2026-07-15). The canonical spec is now crates/endpoint/README.md.

The shared types the endpoint imports (ProtocolHandler, Connection, AuthContext, IdentityProvider, DynamicConfig) stay in alknet-core — see core-types.md, auth.md, config.md.

Historical summary

The endpoint was originally in alknet-core/endpoint.rs as the central runtime type — a multi-transport accept-loop runner that dispatches incoming connections by ALPN (ADR-010, ADR-083). ADR-082 extracted the TLS setup code to alknet-tls; ADR-083 restructured the endpoint to take pre-built transports via with_quinn / with_iroh / with_tcp_tls (no TLS config); ADR-083 Amendment 2026-07-15 extracted the endpoint itself into alknet-endpoint so that handler crates no longer transitively link quinn/iroh/rcgen via core.

The endpoint's semantics — ALPN dispatch, HandlerRegistry, accept loops, public dispatch for SSH/WT, graceful shutdown — are unchanged by the extraction. See crates/endpoint/README.md for the current spec and ADR-083 for the full decision.

What stayed in alknet-core

Connection::from_quinn / from_iroh stay in core's types.rs — they are shared-type constructors used by both the endpoint's accept loop (server) and alknet-client's dial (client, ADR-089), gated on core's quinn / iroh features. See ADR-083 §"The quinn feature split".