ADR-099 — Int64/Uint64 as first-class kinds: - schema.rs: add Int64/Uint64 to TypeDefKind (19 kinds), type_size=8, natural_alignment=8, is_fixed_size=true, needs_endian=true, FromStr - data_access.rs: add read_i64/write_i64/read_u64/write_u64 + tests - sequential_reader.rs: add I64/U64 to FieldValue + dispatch arms + test - engine.rs: add I64/U64 read_field/write_field dispatch arms - validation.rs: add Int64/Uint64 validators (as_i64/as_u64 check) + registration + tests. Hand-written (not macro) to avoid clippy 'comparison useless due to type limits' for the full-range check. ADR-100 — reject non-final inline length-prefixed variable fields: - offset_map.rs: compute_struct now checks if a variable-length field using inline length-prefixing (no maxLength, no offset-indirect) is non-final → TypedefError::Offset at compile time. Prevents silent data corruption (write_string clobbering subsequent fields). ADR-101 — packed-mode read factory: - engine.rs: Layout::Packed no longer stores a SequentialReader. sequential_reader() returns Option<SequentialReader> (owned, fresh) instead of Option<&SequentialReader>. The reader's cursor state is consumer-owned. ADR-102 — reject TUnion in aligned mode: - offset_map.rs: compute_field returns TypedefError::Offset for TypeDefKind::Union. Removed the dead compute_union_field, variant_size_range, and find_discriminator_field methods (had three bugs: no variant offsets, first-variant discriminator offset, misaligned variant region). 295 tests pass, clippy clean, workspace builds clean.
Alknet
Status: Pre-alpha — This project is undergoing a major architectural pivot to an ALPN-as-service model. The previous implementation has been archived and a greenfield rebuild is in progress.
A self-hostable networking toolkit built on QUIC+TLS with ALPN-based protocol dispatch. Each protocol handler (SSH, SFTP, Git, HTTP, DNS, messaging, call protocol) registers an ALPN string on a shared endpoint. The ALPN negotiation during the TLS/QUIC handshake routes connections to the correct handler before any application bytes are read.
Core Insight
A service IS an ALPN. One endpoint, one port, many protocols — dispatched by the TLS handshake, not by application-level peeking or separate listeners.
Crates
| Crate | Status | Description |
|---|---|---|
alknet-vault |
stable | Local key vault: BIP39/SLIP-0010/AES-GCM key derivation and encryption |
alknet-core |
planned | ProtocolHandler trait, ALPN router, auth/identity, config |
alknet-ssh |
planned | SSH handler (russh), SOCKS5, port forwarding |
alknet-call |
planned | JSON-RPC call protocol (EventEnvelope framing) |
alknet-fs |
planned | Content-addressed file storage (iroh-blobs backend) |
alknet-sftp |
planned | SFTP handler (russh-sftp protocol core) |
alknet-git |
planned | Git smart protocol handler (gix) |
alknet-http |
planned | HTTP handler (axum, REST API, MCP) |
alknet-dns |
planned | DNS handler (hickory-proto, pkarr) |
alknet-msg |
planned | E2E encrypted messaging, mixnet support |
alknet |
planned | CLI binary (assembles and registers handlers) |
Documentation
- ALPN-as-service architecture — pivot proposal
- Cleanup plan — greenfield transition plan
- SDD process — spec-driven development process
- Research references — iroh, russh, russh-sftp deep dives
Reference implementation (previous architecture) is preserved at /workspace/@alkdev/alknet-main/.
License
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.