Multi-link bonding
Each link is an independent, isolated path with its own queue and watchdog — a wedged link never blocks the rest. Six dissimilar link types have been bonded on one field node.
Everything the platform does, in plain language — one hundred and four capabilities across ten groups, each with an engineering deep link where your advisors can go deeper. What this page claims, the engineering site can demonstrate.
Each link is an independent, isolated path with its own queue and watchdog — a wedged link never blocks the rest. Six dissimilar link types have been bonded on one field node.
Any IP-capable transport joins the bond: satellite, cellular, microwave, Wi-Fi, 802.11s mesh, Bluetooth, serial telemetry radios via PPP, wired — each with a declared capacity — from a few kbps to multi-gigabit links — that the scheduler respects.
Applications see a normal Linux network interface. Command links, video, SCADA and voice run unmodified — no SDK, no integration project.
Large packets are fragmented and reassembled across MTU boundaries, so a full-size frame still crosses a narrow serial-radio link. Out-of-order arrival is handled; applications never know. When a link cannot take every piece of a packet, the rest of that packet is withdrawn from it, pieces already queued included, so no airtime goes to a packet that could never be put back together.
A link whose public address changes mid-mission — a cellular modem crossing carriers, a moving vehicle — keeps its tunnel without a reconnect. Only cryptographically verified traffic can move an endpoint.
Links and peer endpoints may be IPv6; radios on IPv6-only carrier networks bond without translation layers. The inner tunnel is IPv4 today — a stated boundary, not a footnote.
A re-enumerated modem or radio — an unplugged USB hub, a power blip — is detected and rebound automatically. No daemon restart, no operator action.
Every link is probed on its own clock — four times a second by default. Delay is smoothed by moving average; jitter and loss are windowed; a link is never assumed alive before its first completed round trip. A link that is quietly filling a buffer is noticed within a fraction of a second, before any packet is lost.
A 4G path checked four times a second can be bonded beside a geostationary satellite path checked once a second — without the slow link reading as phantom loss.
Sequence numbers ride the real traffic, so loss is measured on the packets that matter — not only on sparse control probes that can miss burst interference.
Companion adapters feed live signal strength, noise, SNR, buffer depth and error counters from the radio itself into the same decision loop — the radio’s own early warnings, not just end-to-end symptoms.
A link can be alive and still bury every packet in a buffer the tunnel never sees. Atlas reads every queue the host can show it — its own, the operating system’s, and a serial radio’s line — so a saturated bearer shows up as delay, per link, before it shows up as loss.
Thirty packets in a queue are nothing on Ethernet and several seconds on a serial radio — so a link is judged by how long its packets wait, not by how many are waiting, against a target that follows the link’s own round trip. A queue that stands adds its delay to the link’s score, and traffic steers away before any packet is lost. Extra redundant copies are held back while any link to the peer waits more than 250 ms, because copies on a congested link only deepen the queue.
Best delivery time, weighted distribution, strict priority order, broadcast, hop-count — and three adaptive modes that escalate redundancy from one to two to three simultaneous paths as loss or latency worsens, then scale back when conditions clear. The interference-adaptive mode is the live demonstration mode.
Three independent links each losing 2% of packets yield 0.0008% effective loss in broadcast mode. In the scripted demonstration, three links forced to 30% loss delivered roughly 2.7% effective loss end-to-end.
Load shifts in proportion to measured quality, on a cadence typically configured between 0.1 and 0.75 seconds. A response cadence, not a universal recovery guarantee — and by the time a link actually dies, the traffic has usually already left.
The daemon measures its own added latency continuously and publishes it: p50 0.18 ms, p95 0.42 ms added in the reference measurement. A reproducible number, not a slogan.
When the mission needs throughput, the weighted-distribution strategy adds links together: two 100 Mbit links carry about 181 Mbit/s — twice one link, 95% of their combined capacity. The default strategy sends each packet over the best single link instead, because most fleets bond for continuity first; aggregation is a one-line choice of strategy.
The whole control loop runs at sub-second cadence: every link measured four times a second, traffic reweighted on a cadence typically configured between 0.1 and 0.75 seconds as quality changes, mesh routes recomputed the moment a change is detected (≈1.5–1.75 s at default probe settings for a lost node) — while the bonding pipeline itself adds about 0.18 ms (p50, self-measured). Decisions are made per packet, on current evidence — never on last minute’s averages. A response cadence, not a universal recovery guarantee.
A satellite or cellular link can be given a monthly allowance. Once it is spent the scheduler stops preferring that link while anything else is usable — but still uses it when it is the last path left, because running out of budget is not the same as running out of connectivity.
The trend of a fading radio is projected ahead; traffic leaves a link before it crosses its usable floor — while it still carries — instead of waiting for probes to start missing.
Nodes share GNSS position and velocity inside the routing flood. The scheduler projects each node along its track and raises the cost of links about to stretch out of range — handing traffic to a closer path before the geometry breaks, not after packets start missing. A moving node shares its new position as soon as it has moved 25 metres, and at least every ten seconds while it moves, under a rate limit that keeps a fast mover from flooding the network, so a route that depends on where it is moves within about half a second instead of half a minute.
Each radio is scored against its own declared reach: a 300 m Wi-Fi leg and a multi-kilometre telemetry-radio leg to the same node get different risk from the same distance — so traffic walks onto the longer-legged radio first.
Position, velocity and signal all miss one case: two nodes stay in range while a ridge slides into the path between them. Each node carries elevation data for the area and checks every path against the ground: line of sight, and whether the ridge cuts into the radio’s Fresnel zone at that link’s own frequency. Traffic leaves a link sliding into terrain shadow before the radio confirms the fade, and the route moves onto a relay that still sees. The node’s own dashboard draws the ground in 3D, every link coloured by line of sight, with nothing fetched from outside.
Range, signal and terrain fold into a single per-link risk that drives both packet scheduling and multi-hop routing. Whichever threat arrives first, the route bends around it on one shared cost model.
Prediction biases decisions; it never kills a link and never falsifies measurements. Dashboards always show what was measured, not what was predicted.
Nodes flood a shared topology view — costs, liveness, prefixes, positions. When a node joins, moves or is lost, the topology refloods and every node recomputes independently — within whatever detection costs, ≈1.5–1.75 s at default probe settings. No controller anywhere.
Traffic routes through other nodes — not just across the links on one node — eight hops by default, re-encrypted at every hop. The limit is a setting, not a ceiling — a long relay ladder or convoy raises it — and the count is Atlas’s own: hops inside a MANET or 802.11s mesh underneath are not counted. Relay nodes are trusted, authenticated members of your fleet — stated plainly, because your security review will ask.
Two or more disjoint routes per destination; critical traffic rides all of them with receive-side deduplication. The demonstration shows zero-loss relay failover at twice the backbone cost.
When several stations watch the same drone feed across the mesh, the scarce hops carry it once — not once per viewer. The network computes where the watchers’ paths diverge from the topology it already floods and duplicates the video only there; a feed nobody subscribes to costs nothing at all, and the tree re-forms as the fleet moves — no controller, no multicast infrastructure to stand up. Measured on an eight-node verification rig — an ISR aircraft, two layers of drone relays, three subscribed ground stations: five minutes of video at full-HD rate — 6 megabits per second, 187,500 packets — crossed the mesh with at least 187,454 of the 187,500 packets arriving at every station. The scarce first hop carried exactly 187,500 copies — one per packet — where sending each station its own copy would have tripled that, and the copies tripled only at the junction where the stations’ paths separate. However many stations watch, the scarce hops carry the stream once — the cost of the trunk does not grow with the audience. Opt-in; delivery stays video-shaped — losses repaired by forward error correction, never by retransmission storms. How the tree is computed — nexusatlas.io
For rehearsed operations, routes can be pinned statically — fully deterministic behavior when predictability matters more than adaptation.
A relay that is busy carrying video is not where a command should wait in line. Every node tells the fleet how loaded each of its links is — how full it runs and how long packets queue on it — and command traffic takes the path with room, even when a shorter one exists, while video and bulk data keep the shortest. Every node works from the same shared figures, so the two paths never hand traffic back and forth, and no capacity is set aside in advance.
Push a configuration change at any node — it reaches every node over the encrypted tunnels themselves. A new node joins with a bootstrap peer and a shared secret, not a hand-edit on every box.
Three position sources — static configuration, a live GPS feed, or operator entry on the dashboard. Park a relay vehicle, type its coordinates, and every peer’s map updates.
Each node can declare what it is — ground station, UAV, UGV, USV, dismount, relay — and a fleet-wide policy change can target roles, so one push tightens the drones without touching the ground stations. The topology views use the same roles to draw the right symbol.
Type ssh isr02.narva instead of reading an address off a laminated card. Nodes already share who they are and where they are reachable, so every node answers name lookups locally, from its own copy of the fleet — there is no name server anywhere in the mesh to lose. Names keep resolving when reachback is gone, and when a network partitions, each half keeps resolving its own half. Split-horizon overrides keep existing corporate hostnames working over the tunnel, and a mesh-only mode fits EMCON postures: no query ever leaves on an uplink. Opt-in, and honest about its boundary: names resolve only inside the tunnel — and the tunnel itself never depends on a name lookup.
Membership updates are paged, and a page fits a single UDP datagram by construction — losing one costs a page, never the roster. Measured to fit a 250 kbit tactical bearer.
A partner runs one network and an agency another; your job is to connect them. Your node joins each as an ordinary member, under that owner’s rules, and bridges the two: hosts on one side reach the chosen hosts on the other at addresses of their own network, with nothing installed, configured or renumbered on any of their devices. Neither network learns the other’s topology or keys, each owner decides which of its hosts take part, and each can revoke you like any other member. Where every node is yours, the answer is simpler still: one network.
Control > Voice > Position > Telemetry > Video > Bulk — Atlas’s QoS: each class with its own reliability mode, priority and latency budget. Classification by standard packet marks and flow heuristics: zero application changes.
Strict priority with reserved floors: video can never starve the command link. With classes enabled, a 4 Mbps video stream cannot crowd out a 2 kbps command channel — and every packet that is dropped is counted, by class and by reason, so an operator sees what gave way and why. Within the video lane a primary camera outranks a secondary one, so the feed that matters is the last to lose a frame.
Priority order inside Atlas is not enough on a slow bearer: video fragments already handed to the operating system sit in the device queue in front of the next voice frame. So the low band — video, telemetry, bulk — is released to the kernel only as fast as the link drains it, with a few milliseconds of airtime in hand, and the high band is never held. Voice crosses a 64 kbit/s bearer beside video without waiting behind it; on fast links nothing changes.
Every frame carries a latency budget derived from the live path set; too-late frames are dropped, not retransmitted. Stale video never chokes fresh video. Video bends — it doesn’t break.
Commands are normally duplicated across links. When a node is down to one live link there is nothing left to duplicate across, so each command is sent again in time instead: up to three copies, a third of a round trip apart, all inside its deadline. The far end keeps the first copy and discards the rest — repeats stop the moment a second link is alive, and never take more than a fifth of the link’s capacity.
Bulk data addressed to an unreachable peer is held and drained automatically the instant a path returns. It is held in memory — ten minutes and 16 MB by default, both settable — or on disk when the node is configured for it, where it survives a restart. Data arrives even though sender and receiver were never simultaneously connected.
The live picture gives up late frames so the link stays usable for the pilot. The vehicle keeps every packet of the stream on its own disk, the ground station asks for exactly the pieces it missed, and those pieces come across on the lowest-priority lane — during the flight whenever a link has room, or after landing — so the copy kept for review is complete. Only what is missing crosses the air, never the whole stream again, and when the node encrypts its disk, the vehicle’s copy is encrypted too.
Duplicate command traffic across the best links, aggregate video across all of them, keep position on the single best — and adapt the mix as conditions change. Per class, not per tunnel.
Group the links and say which kinds of traffic each group may carry: no video on the satellite link, no bulk transfers on the metered cellular modem. Each packet is also offered only to links that can still deliver it in time, so a 600 ms satellite never carries a voice frame it would deliver late. When every link a class may use is gone and others still work, the class falls back to them rather than losing its path.
Telemetry that describes a video frame can travel with it — the same link, the same receive buffer — so an overlay or a gimbal controller gets the record together with the frame, not a tenth of a second ahead of it. Every class also publishes the hold the transport adds to it and the delay of the links it rides, so ground software reads those figures instead of guessing them.
Forward error correction across the bond: systematic Reed–Solomon parity striped across the bonded links — any K of K+M shards reconstruct the block. Even a whole link going dark is repaired in one trip — no retransmission, no return channel.
Everything stays plain UDP on the wire; wire format is compatible with nodes that have classes off; switching QoS off leaves the data path byte-identical.
Noise IK handshake; X25519 key agreement, ChaCha20-Poly1305 authenticated encryption, BLAKE2s — the cryptographic family of WireGuard and Signal. Always on; there is no unencrypted production mode.
The suite is the default, not a lock-in. The security subsystem is built so the primitives behind the handshake can be exchanged without changing the protocol — the engineering basis of the FIPS and post-quantum tracks — and Atlas composes freely with the encryption you already trust: end-to-end tools inside the tunnel, or an outer layer such as IPsec or MACsec around it.
New keys are negotiated make-before-break every 2 minutes or 1 GiB, with the previous session kept warm for in-flight packets — measured at zero packet loss across rotations. Across a fleet, a node’s long-term keys and the shared secret change on the same principle, on a schedule no node has to be online for.
Turn it on and every file a node keeps about its work — the event journal, carried data, dashboard accounts, configuration history, crash records — is encrypted under one key of the node’s own, which can live off the disk entirely: on removable media, or supplied at boot. Pull the disk without that key and it gives up none of the node’s traffic history, carried data or dashboard credentials. One command, atlasd zeroize, crypto-shreds the node: the key is destroyed, the node’s own keys are overwritten, and it stays inert until it is provisioned again.
A node is known by its name, and a name can carry more than one key. A key is replaced, then retired, without the node leaving the fleet and without a single route changing. The records are signed and reach every node on their own. The keys can come from your own key-management process, while Atlas manages the names.
Each node’s record says what it may do: whether it may carry traffic for others, which kinds of traffic it may send, whether it may change the fleet’s settings, and how much of the fleet it may see. A new node gets the least. A captured sensor is still only a sensor: nothing is routed through it, its traffic cannot claim command priority, and it cannot sign a configuration.
A node’s record says which classes of traffic it may send and whether it may relay, and the fleet enforces that at every hop, not only at the first. A relay cannot raise a packet’s class or forge where it came from: the next hop clamps the class to what the sender’s record allows and counts what it clamped, and a packet forwarded by a node whose record forbids relaying is dropped. With end-to-end sealing the destination checks class and sender under the seal and refuses a packet whose class or origin changed on the way.
A 2048-entry sliding window per session rejects replayed traffic — the same mechanism deduplicates broadcast-mode copies.
A static allowlist, a hot-reloaded keyfile, an external command hook wired to your identity systems, or a signed list of node records. Nodes are added and removed without restarting anything: a node taken off the signed list loses its live connections on every node at once, and with the other methods a removed key gets no new connection and one command ends the ones it still holds. Every failure mode fails closed.
A new node gets in one of four ways: a one-time pairing code that admits one device, once, with the least it needs; a certificate from your fleet authority, so units built at your factory join with nothing to edit on any hub; its key plus a second secret, so a stolen key alone opens nothing; or an operator approving each request from a queue that shows who knocked and from where. A hub that admits a device but cannot sign the fleet’s list hands it to one that can. Nothing gets in by accident, and every admission is recorded with who made it.
A pairing code is more than a secret. Under its signature it carries the keys the fleet’s list is signed with and both tunnel addresses — the new node’s and the hub’s. A node invited by a hub that cannot sign still knows whose list to trust, takes the signed list when it reaches it and is reachable at the address the code named, with nothing derived or guessed. A code for a pool of addresses hands out the next free one at admission, and the node runs on it from its first start — no restart in between.
A hub that admits a node but cannot sign the fleet’s list does not keep the record to itself. It hands the record to a node that can sign — over the session to a neighbour, or sealed end to end across several hops, so the relays between cannot read it — and the author checks it under its own policy before signing it into the next list, which reaches the fleet about a second after the admission. No hub can hand out a right it does not hold itself. Where the author prefers, forwarded records wait in its queue for an operator to approve.
Pick the nodes to remove — one command, or one action on the dashboard — and they are out everywhere at once. Every node ends its connections with them and refuses them from then on, the hosted relays refuse them too, and the fleet’s shared secret is replaced, so what a removed node knew stops being useful. A removed node cannot come back under the same identity, and every removal is signed, numbered and recorded in each node’s log.
In a fleet of signed node records, every route a node learns was signed by the node that announced it, and every node checks that signature against the announcer’s record before the route counts. A device outside the fleet, or one just removed from it, cannot steer traffic, make a dead link look alive or speak in another member’s name: what it sends is dropped and counted. A flood of fake connection attempts is turned away before it costs a node real work.
Draw an area on the map and the nodes last seen inside it come back as a list, each with the age of its position; the operator confirms, and exactly those nodes are removed everywhere at once. Each node can also carry a signed operating area: taken outside it for longer than a grace time, it cuts itself off or wipes its own keys, as the operator chose, and a node without a position fix never acts, because a jammed receiver proves nothing. One signed command wipes a node remotely and removes it from the fleet in the same step.
Direct peer traffic is end-to-end encrypted. Mesh relays re-encrypt per hop and are trusted nodes of your own fleet. Hosted Traversal relays forward envelopes they cannot open. Three different boundaries, stated as three different facts.
Where a relay may be a captured vehicle, an unattended mast or a partner’s node, seal the payload end to end: the sender encrypts each packet for its destination alone, so every relay on the path forwards what it cannot read, with no handshake to carry across the mesh. Sealing covers traffic addressed to one destination — broadcast and multicast stay protected hop by hop — it is not combined with forward error correction, its key does not rotate the way session keys do, and it carries no replay check of its own, so a relay can resend a sealed packet it cannot open.
Every link classifies the NAT in front of it from its own data socket — the mapping that is measured is the mapping traffic actually uses — and re-checks periodically.
A node behind carrier-grade NAT becomes reachable outbound-only in under a second through a relay — and the relay path is an ordinary link in the bond: its own probes, its own quality, the same scheduler.
Path candidates are exchanged over the already-working relay; crossing probes open a direct path through both NATs. The upgrade is a scheduler decision — the relay stays in the bond as a warm standby, so a failed attempt costs nothing. Proven end-to-end behind two simulated carrier-grade NATs.
Both ends independently compute the same relay choice from measured latency — no negotiation protocol to fail — and re-elect make-before-break when a relay degrades. When a relay stops answering, both ends drop it within two sweeps and settle on the same next relay, while a direct path or a second elected relay carries the traffic. Hardware-verified on the standing fleet.
Each node attaches to a relay near it — a short first hop instead of a session held open to the far side of the world — and still reaches every peer it is configured to reach. Two nodes that share a relay meet at the one with the lowest combined latency. Two nodes that share none still meet: each leaves a presence record, sealed to its peer, naming the relays it is on, and the peer opens a link to one of them. With forwarding between relays switched on, no second link is needed at all: a node’s own relay hands the traffic exactly one hop to the peer’s relay, and both ends rank that path against shared relays on the same measured latency. A second relay is a second observer, so a path through two relays is used only with end-to-end sealing on, unless an operator knowingly allows otherwise. How relays forward to each other — nexusatlas.io
Hosted relays run in North America, Europe and Asia — Los Angeles, New York, Zurich and Hong Kong. Private, on-premises relay estates serve closed networks; hybrid estates mix both. Relays are published only after outside-in verification. Exit gateways, listed in the same signed way, carry a device’s whole internet traffic through the bond and out at the gateway.
A Linux desktop or laptop sends its entire internet traffic through a bonded exit node of your own. The leak guard fails closed: whether the tunnel is up, down or not running at all, nothing leaves by any other route — only the tunnel’s own packets cross the uplinks, no IPv6 leaves at all, and name lookups are pinned to the tunnel. A switch in the desktop’s top-bar indicator shows the guard’s state and lets the operator arm or disarm it; the icon turns red whenever traffic is unguarded. The exit node forwards for the named devices only, keeps the card that carries its relay link apart from the card that carries the traffic out, and starts closed — forwarding nothing — until the exit card has an address. One bundle sets up the whole desktop side on a Debian live system with a single command.
Relay and gateway lists are signed with an offline key and verified by every client — a compromised directory server cannot forge membership, and a directory outage never becomes a tunnel outage.
No server holds a map of which node is attached to which relay. Relays report their sessions to the control plane under a salted hash, never a node’s key, so session counts, ages and traffic stay visible without naming a client. A presence record is sealed to the one peer it is for, filed under an identifier only that pair of nodes can compute, and fetched by that exact identifier: there is no listing and no search, and the control plane never sees which relay a record names or which peer it is for. It cannot produce a list of node-to-relay assignments, because it never holds one.
Every node is autonomous and carries everything it needs: its full configuration, its own view of the topology, its own decisions. There is no orchestrator to stand up, no cloud that must be reachable, nothing that phones home. Autonomy is the architecture, not a fallback.
Yes — completely, and by design rather than as a degraded mode. The data plane needs no internet at any point in its life: not to install, not to start, not to keep routing. Air-gapped networks, disconnected sites and denied environments are first-class operating conditions, and a partitioned network keeps operating on both sides of the split. The only components that touch the outside world are the optional hosted services — Traversal relays and the fleet console — and losing them costs visibility, never connectivity.
Links with live delay, jitter, loss, capacity and queue depth; live topology, as a graph or on a map; the scheduler’s actual decisions, explorable after the fact; a timeline that replays what every link, route and peer was doing at any moment, from the node’s own event journal; alerts when a link dies, a node goes quiet or a change reverts; traffic-policy editing; a position editor. Each node keeps its own accounts with hardware-key (FIDO2) sign-in, and can hold the whole dashboard behind a full-screen sign-in. A device that asks to join waits in an approval queue on the dashboard, with approve and deny one click away. Draw an area on the map to pick the nodes inside it for removal. A high-contrast theme stays readable in direct sun. A browser, not an SSH session.
One human-readable TOML file that lives in your version control and ships through your existing automation. Traffic policy reloads live, and so do scheduler and link-measurement settings; the daemon validates configuration at load time and warns about field-known mistakes. For tooling that works in other formats, the atlas-config tool exports the configuration as JSON, YAML or XML, with keys withheld, and imports it back onto the TOML with your comments kept — the node itself reads only TOML.
A guided wizard builds a node’s configuration and rolls changes out across the fleet over the Atlas mesh itself — there is no central controller to do it for you — while tracking the rollout as it spreads: which nodes have received the change, which have applied it, and how far the propagation has reached. Watch the change reach every node on the network map, see at once who is holding it, and play any past rollout back from the start. The wizard also runs offline, serving the same interface on an air-gapped machine.
Mark the nodes a change must reach, and a release is not complete until each of them has confirmed it. If one of them is silent or has failed when the deadline comes, the change is withdrawn on its own — the previous settings go back out, signed, to everyone — and the operator is told which node held it. Nodes marked best-effort take the change when they are next seen and never hold anyone up; a node that must stay on a known build is left where it is, and shown as such.
A node’s keys and the fleet’s shared secret change on a schedule every node acts on when it holds it: new keys are accepted before they are used, and the old ones are kept until every node that matters has moved. A vehicle out of contact for a week comes back on its old key, receives the new one over its first connection and switches by itself, with nobody doing anything; one that stays away past the end is refused everywhere and rejoins the way a new node does.
A configuration change goes in on probation: unless it is confirmed — by the operator, or by the node reaching its peers again — it reverts on its own, even across a crash, so a bad change cannot cut you off from a node you reach only through it. Fleet-wide changes travel signed, and a node applies only what an authorised key has signed; a change can go to a few canary nodes first and reach the rest once they have applied it. Tuning changes take effect without a restart, so the tunnel never drops.
Status, statistics and a live terminal monitor for headless estates; structured logs with configurable verbosity to journald, syslog or any aggregator.
The same telemetry the daemon uses internally — links, topology, scheduler decisions, traffic policy, positions — exposed for your NOC and C2 integrations.
Enrolment by one-time code with cryptographic proof-of-possession, nodes on a live map, per-link telemetry, offline alerts with recovery notices, organisations and roles, an audit trail, hardware-key second factor.
The configuration has a published schema, generated from the daemon’s own types and served by the node, so an editor completes and checks keys as you type and the dashboard’s form is built from the same source. config check runs the daemon’s exact load pipeline without starting it and lists every finding with the key it concerns, an exit code and JSON a pipeline can act on. The misconfigurations that bite in the field — two links sharing one port, a single-address NAT-test server list, mismatched address families, inert knobs — are caught at load time with a plain-language warning. A change that passes goes in on probation and reverts itself unless confirmed; export and import in JSON, YAML and XML happen outside the daemon.
The daemon speaks Prometheus/OpenMetrics on its own endpoint, so link quality, session state, traffic classes and the bonding overhead land in the monitoring system you already run. No exporter process and no second agent to keep alive on a remote node.
Operationally meaningful events — a link going down, a session tearing down — are exported as RFC 5424 syslog or ArcSight CEF to a collector of your choosing. A collector outage drops and counts events rather than slowing the node down.
One endpoint answers whether the daemon is alive, whether its data path is actually being serviced, and whether anything is reachable — separately. A daemon whose data path has stalled reports unhealthy even though the process is still running — the case ordinary process checks miss. An idle-but-serviced tunnel stays healthy by design: a node whose peer is legitimately offline is a healthy node with nothing to talk to.
A single command, or one button in the dashboard, packages configuration, statistics, health, the event journal, scheduler decisions and any crash reports into one archive for support. The configuration is filtered by an allowlist, so keys and credentials never leave the node — including keys a newer version might add.
If the daemon ever dies, the failure is captured inside the dying process, stripped of keys and secrets as it is written, and stored on the node under a hard size limit. Sending it anywhere is a separate decision, off by default: a report can go attributed, anonymously, or be forwarded by a neighbouring node for a radio-only device with no route to the internet at all. Identical failures group together automatically, so a fleet-wide bug reads as one problem rather than fifty — and optional memory dumps are encrypted with your key or not written.
There is no controller, so any node can pull every other member’s configuration over the tunnels and show where they differ. Policy that has drifted is flagged; node-local differences that are supposed to differ stay quiet. Each node redacts its own secrets before sending.
Thirty-nine checks answer the question a single node cannot ask alone: not “do these configurations differ?” but “are they wrong about each other?” — a peer listed on one side only, a key that resolves to no node. Each finding names the nodes, the exact settings, and what will go wrong.
One question — “is my fleet healthy?” — answered for every member, from whichever node you happen to have open.
Where a hardware security key protects human sign-in, scripts and monitoring use operator-issued API tokens instead. Any mesh member can also mint a read-only token that expires within minutes, for reading a locked-down node without holding a password.
A Linux daemon for x86-64 and ARM, from datacenter servers to a board weighing around 15 grams — and the same engine as an Android VPN app on aarch64 devices. A hardened systemd unit, SELinux and AppArmor policies, and an Ansible role with an optional STIG baseline are included.
Small companion processes own a specific radio, split its byte stream into a transparent data channel and an out-of-band telemetry channel, and feed both to the daemon. Serial telemetry radios, Wi-Fi, Ethernet and Bluetooth adapters exist today; any hardware family can have one.
Where both ends run Atlas, a serial telemetry radio carries Atlas with no PPP and no IP in between: about 29 bytes less on every small packet, no address plan per radio pair, and traffic back within a fifth of a second after a radio reset or a replug. Atlas writes only when the radio’s buffer has room, so voice goes on air ahead of video, and the radio’s own signal readings steer the routing. Several radios share one channel. Devices that only offer PPP or IP keep it and bond as before.
Adapters carry telemetry upward; the same boundary can carry intent downward. Atlas is the glue between vendors, so it holds the whole topology — every link, peer and hop — while a vendor-locked segment such as an IP mesh radio sees only its own cell. Downward intent hands that segment an objective rather than a setting — carry the control class here, hold latency under this, favour range over rate — and lets the segment’s own intelligence decide how, so an isolated part can be tuned for what the whole network is trying to achieve. Objectives, never knobs; advisory by construction. Research direction: the upward half ships today, the downward half is a design.
The same Rust engine on a phone: Wi-Fi and cellular bonded into one tunnel. Per-app routing decides which apps the tunnel carries, and a full-tunnel mode sends the whole phone’s internet traffic out through a bonded exit gateway. A phone pairs by scanning the QR code on a node’s dashboard; per-path speed tests show what each radio and relay path really carries; field tools such as ping and traceroute are built in; the identity key is protected by the Android keystore; and the interface is available in Bulgarian.
An optional governor watches link health and steps the camera encoder’s bitrate to what the surviving links can carry — the stream degrades before the link does, and recovers with hysteresis instead of flapping.
A partner who must watch one mission gets a link, not a device on your network. A gateway inside the fleet sends one feed outward — live video, positions, or both — to a feed server, hosted by us or running on your own premises, and each viewer opens a link in a browser with a token that is theirs, until it expires or is cut. A link opens exactly the feeds it names, and nothing else. It can also require a code — a six-digit PIN or a password — that you send over a different channel; the server keeps only its hash, and repeated wrong codes lock the link. With your say-so on both the gateway and the link, the viewer also sees a map of the mesh nodes beside the picture. The fleet opens no port and nothing travels inward. The gateway host itself can be a member that may only listen, so even a compromised one reads one feed and nothing more.
The gateway that publishes a feed is a read-only member of the fleet — reachable, and able to send nothing inward — and its last hop can be made redundant. The gateway asks for two tree parents: a second neighbour that already carries the stream forks one extra copy over its own link, the stream arrives through both, and the duplicate is dropped before the player sees it. Cutting either path loses nothing — measured, with the figures on the engineering site: zero loss with two parents, against a picture frozen for 1.4–2.4 s with one. No other node is pulled onto the tree for it.
The topology map draws over a world basemap the node serves itself, from public-domain data — no internet, no tile service, and no request that announces the node. For close work an operator loads an area-of-operations map built offline from OpenStreetMap, and every node serves the area maps placed on it to any browser that asks.
We will map the links, vendors, shared failure domains and integration boundary—and define what a useful demonstration or pilot should prove.