All projects

Secure systems · Active

Unmoor

An authenticated UDP terminal and verified file transport that keeps session identity across changing network addresses.

At a glance

Evidence and scope

Repository measurements and recorded project results. Test and benchmark claims were inspected, not rerun during this catalog refresh. Physical line counts use the stated file scopes.

C source + headers
75,367 lines132 files directly in src/; excludes vendored libraries and test tools. Physical lines include comments and blank lines.
Routed-path gate
781 checksTen impairment scenarios with no reported check failures and one explicit stale-return-path characterization.
Local checks
136 passing117 frame, reassembly, and negotiation checks plus 19 PQ checks in the recorded macOS run.
Random-loss sessions
99/100 completedThe 10% loss row completed 19/20 under the harness oracle; its one non-completion remains counted.
Reviewed sources · 2026-10-16 · 93c3ef65f12c

191 tracked files · 7 documentation files · 1 workflow files. Inventory includes data and vendored or generated files; workflow presence does not establish a passing run.

Download inventory and line-count file scopes

Executive summary

Unmoor carries a remote terminal and verified single-file transfers over an authenticated UDP session. The session belongs to a cryptographic pair identity, so a change in address or NAT mapping need not destroy it. SSH authenticates the initial public-record exchange; endpoints derive traffic keys locally and complete a hybrid post-quantum rekey before admitting application traffic. The terminal transports and repairs a byte stream, while file transfers verify the full file before atomic installation. It is the network-oriented descendant of URTB, with documented Linux and macOS paths.

How it works

Absolute byte offsets, a pending bitmap, and a running hash support loss and reordering repair. The client exposes SYNC, OUT-OF-SYNC, and STALLED so missing output is visible. Return-path adoption requires fresh authenticated traffic that advances the replay window. Multiple UDP legs can share a session. The default profile uses two for a terminal and four for a transfer; the lab profile allows power-of-two counts from 2 to 32. Multiple ports do not prove physically separate network paths.

Evidence and validation

The 132 C and header files directly in src/ contain 75,367 physical lines: 65,280 in .c files and 10,087 in .h files. This count excludes vendored libraries and test tools and includes comments and blank lines.

The September 15, 2026 source record reports 136 local checks, a real two-host internet session, and 781 checks across ten routed impairment scenarios. These cover IPv4/IPv6, asymmetric delay, reordering, NAT rebinding, black holes, corruption, and temporary loss.

The separate 100-session random-loss matrix completes 99 sessions under its exact-line oracle. In the remaining attempt the session closed successfully, but an interleaved diagnostic broke the harness's marker comparison. The source still counts that attempt as a failure; this catalog preserves that outcome.

Boundaries

Version 0.2.0 is experimental and has no protocol compatibility promise or external security audit. It needs a usable bidirectional UDP path and does not provide NAT hole punching or a public multi-user service. The stale-return-path scenario remains stalled without opening a replacement source port. The lab harness for the two-machine results is not published here, and the smoke test uses best-effort confinement rather than exercising the Linux required mode.

Repository map and first run

The documented local build and loopback path is:

make -j2
make check
make smoke

README.md introduces the terminal and transfer workflows, HOWTO.md covers operation, SECURITY.md states the threat boundaries, and SOURCE.md records the validation environments and limitations. Remote use expects SSH access and matching endpoint versions.