All projects

Secure systems · Active

URTB

An authenticated encrypted terminal bridge over USB-attached radios, local sockets, or untrusted jump-host streams.

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.

Implementation
8,737 lines27 host C/header and Heltec firmware files; vendored cryptography and test injection excluded.
Test and harness code
5,537 lines22 C/header, Python, and shell files for test injection, tools, and profile checks.
Protocol coverage
52 casesWire-format and security cases, plus 42 acceptance criteria.
Failure testing
8 classesSoftware, two-board hardware, failover, radio-down, and physical cable-removal paths.
Reviewed sources · 2026-10-15 · de2544d33278

84 tracked files · 18 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

URTB—USB-Radio Terminal Bridge—carries an interactive terminal through an authenticated encrypted session. Its main hardware path uses two USB-attached Heltec WiFi LoRa 32 V3 boards, preferring ESP-NOW and falling back to LoRa. The same host binary can be evaluated without hardware through Unix sockets, a child process, or an SSH jump host. Two endpoints share a passphrase-protected capsule; the intermediate transport does not receive the session secret. The repository includes firmware, host code, protocol documentation, threat modeling, decision records, and separate software and hardware test tiers.

Problem and context

Remote terminals usually assume an IP path and a trusted transport setup. URTB tests a narrower alternative for low-bandwidth or awkward links: keep the PTY protocol and cryptographic session on the endpoint computers, and treat the radio boards or jump host as untrusted byte transport.

What was built

  • A host terminal program with listener and connector modes.
  • Unix-socket, stdio, spawned-process, and Heltec USB transports.
  • ESP-NOW firmware with automatic LoRa fallback and regional build settings.
  • Passphrase-protected pre-shared-key capsules, optional one-time password, and
  • a burn mode for removing loaded key files.

  • Wire-format, security, porting, testing, and jump-host documentation.
  • Sandbox profiles that integrate with the sibling compartment project.

How it works

Both endpoints load the same capsule, derive and authenticate the session, then frame terminal traffic with XChaCha20-Poly1305. Unique nonces protect each frame. On the hardware path the host talks to its local board over USB serial; boards carry frames over ESP-NOW and move to LoRa when that path fails.

The stdio and subprocess transports make the encrypted stream composable with SSH or another carrier. A jump host forwards ciphertext but does not receive the capsule passphrase or session key.

Evidence and validation

The software test tier covers the frame and host behavior without requiring radio devices. A separate hardware tier is documented for two Heltec V3 boards, and the jump-host guide records validated stdio and subprocess scenarios. CI runs the software checks; acceptance criteria map features to their test paths.

Boundaries

Endpoints must provision the same capsule out of band. Security does not hide that a radio or stream is active, and low-bandwidth radio behavior depends on range, region, interference, and board configuration. Signal-time cleanup is best effort for fatal process faults. Hardware use requires two specific boards and the region-appropriate frequency and power settings.

Repository map and first run

make doctor
make
make smoke
make check

The no-hardware Unix-socket example is at the top of the source README. Use HOWTO.md for end-to-end scenarios, HOWTO_JUMPHOST.md for encrypted carrier setups, PROTOCOL.md for framing, and SECURITY.md for the threat model and key lifecycle.