Files
alknet/docs/architecture
glm-5.1 6db1266672 docs: fix inconsistencies in architecture specs
- Replace hub/spoke with head/worker terminology in call-protocol.md,
  auth.md, open-questions.md, napi-and-pubsub.md
- Update operation paths from /{spoke}/{service}/{op} to
  /{node}/{service}/{op} throughout call-protocol.md
- Unify Identity struct: auth.md already had {id, scopes, resources},
  add note clarifying this is canonical (vs research/services.md which
  used {node_id, fingerprint, scopes})
- Update integration-plan.md inconsistencies section to track what's
  been fixed (hub/spoke, identity model) and expand service naming
  to include external services
- Update call-protocol.md last_updated date

ADRs are intentionally left unchanged as historical records.
2026-06-07 07:50:00 +00:00
..
2026-06-05 10:04:32 +00:00
2026-06-05 10:04:32 +00:00
2026-06-05 10:04:32 +00:00

status, last_updated
status last_updated
draft 2026-06-04

Alknet Architecture

Current State

Architecture specification in active development. 22 ADRs accepted. Unified auth and call protocol architecture being specified — see auth.md and call-protocol.md. Configuration architecture under exploration — see research/configuration.md.

Architecture Documents

Document Status Description
overview.md reviewed Package purpose, exports, dependencies
transport.md reviewed Transport abstraction: TCP, TLS, iroh
auth.md draft Unified auth: SSH + token, IdentityProvider trait
call-protocol.md draft Bidirectional call/event protocol, operation registry
client.md reviewed Client connection, SOCKS5, port forwarding
server.md reviewed Server acceptance, channel handling, proxy
tun-shim.md deprecated TUN interface wrapper — deferred, use tun2proxy
napi-and-pubsub.md reviewed NAPI wrapper and pubsub event target adapter

Research Documents

Document Status Description
configuration.md draft Configuration architecture: static/dynamic split, hot reload, forwarding policy

ADR Table

ADR Title Status
001 Pluggable transport via AsyncRead+AsyncWrite trait Accepted
002 TUN shim as separate process Superseded by ADR-014
003 iroh stream via tokio::io::join Accepted
004 SSH runs over transport, not alongside Accepted
005 SOCKS5 as primary interface, TUN as add-on Accepted
006 No logging of tunnel destinations Accepted
007 NAPI exposes single duplex stream Accepted
008 ACME/Let's Encrypt certificate provisioning Accepted
009 Default iroh relay with override Accepted
010 Transport chaining in CLI Accepted
011 Programmatic-first API, no file-based config Accepted
012 Ed25519 keys + OpenSSH cert-authority, no password auth Accepted
013 Fail2ban-friendly logging + built-in rate limiting Accepted
014 Defer TUN, recommend local SOCKS5 + tun2proxy Accepted
015 napi-rs for FFI bridge Accepted
016 NAPI exposes both connect() and serve() Accepted
017 Stealth mode — protocol multiplexing on port 443 Accepted
018 Control channel for pubsub over SSH Accepted
019 --proxy dual semantics (client vs server) Accepted
023 Unified auth with shared key material + token auth Accepted
024 Bidirectional call protocol (EventEnvelope) Accepted
025 Handler/spec separation for downstream service registration Accepted

Open Questions

Most open questions have been resolved. Open questions remain for configuration, auth, and call protocol — see open-questions.md for details.

Lifecycle Definitions

Status Meaning Transitions
draft Under active development. May change significantly. → reviewed when open questions resolved
reviewed Architecture final. Implementation may begin. Changes require review. → stable when implementation verified
stable Locked. Changes require review and may warrant an ADR. → deprecated when superseded
deprecated Superseded. Kept for reference. Removed when no longer referenced