Fawcett Innovations

Work with FrogNet.

FrogNet is free to build on under GPLv2. This page covers everything past the source: engineering services, the product stack, putting FrogNet into an existing network, fleet autonomy, the community around the code, and how to reach me.

Services

FrogNet is free to build on. When you need more, this is the help.

The source and the build manual get you a long way on your own. Past that — a commercial deployment, a custom UnREST handler, a hard network problem that has no Stack Overflow answer — Fawcett Innovations is the team that wrote the stack. A senior engineer who has shipped this class of system for fifty years, not a layer of account management over a junior bench.

What I take on

Six places I'm worth the call.

01

Distributed systems & coordination

Shared state across unreliable links, host election and failover, self-forming topology, split-and-merge recovery. I'll design it so it stays correct under partition instead of pretending partition won't happen.

02

Networking & custom protocols

Wire formats and framing, overlays and tunneling, NAT traversal, semantic compression, routing and discovery. When off-the-shelf doesn't fit, I build the protocol and prove it under loss, latency, and jitter.

03

Real-time media & streaming

Adaptive audio/video that holds a call together on a degrading link and recovers on its own — the same ladder I've driven from HD down to a bare beacon over a 900 MHz radio backhaul and back, in production.

04

Embedded, edge & offline-first

Systems with no cloud and no center — running on Pi-class hardware, mini-PCs, and radios, designed so a lost uplink is normal weather rather than an outage.

05

Legacy rescue & modernization

I've shipped on a 1970s Harris mainframe and on this year's Linux kernel. I can read an old system honestly, find the real fault instead of the convenient one, and move it forward without betting the business on the migration.

06

Architecture review & due diligence

An independent read of a design, a codebase, or an acquisition target: what's load-bearing, what's a liability, what the demo is quietly hiding, and what it will cost to make it real.

How engagements work

Four ways to use me — pick the smallest that solves your problem.

I'd rather sell you the focused engagement that actually moves the needle than the biggest one. Most relationships start with a review and grow from there.

01 · Review

Architecture & risk review

days · fixed scope

I read the design or the code, run it against the hard cases, and hand you a plain-spoken assessment with the risks ranked and the decisions named. The cheapest way to find out if you have a problem.

02 · Design sprint

Architecture & protocol design

weeks · defined deliverable

We scope a specific hard piece — a protocol, a coordination model, a media path, a migration plan — and I design it end to end, with the proof harness that shows it holds.

03 · Build

Hands-on implementation

project-based

I write the hard part myself and prove it on real hardware, then hand it over documented and tested so your team can carry it. Not a slide deck — running code with a gate that's green for a reason.

04 · Fractional

Fractional principal engineer

ongoing · part-time

A standing senior seat for a team that needs depth it can't hire full-time — design authority, code review, and the hard-call judgment that keeps a system from painting itself into a corner.

Rates

Published, so you can decide before you call.

Fixed fee wherever the scope can be named — you are buying a finding, not a timesheet. Hourly exists for the work that genuinely can't be scoped in advance.

EngagementWhat you getFee
Architecture reviewStart hereTwo weeks. I read the design or the code, run it against the hard cases, and hand back written findings with the risks ranked — plus one debrief call.$12,000fixed
Design sprintOne hard piece — a protocol, a coordination model, a media path, a migration plan — designed end to end, with the proof harness that shows it holds.$35–60kscoped
Build / integrationI write the hard part myself and prove it on real hardware, then hand it over documented and tested so your team can carry it.$35–60kscoped
RetainerStanding availability once you are running in production — design authority, review, and the hard calls, without a full-time hire.$6,500per month
HourlyFor work that can't be scoped up front.$275per hour · $2,200/day
Expert witnessPatent and technical litigation — source review, reports, and testimony explained so a court can follow it. Three issued patents; fifty years of shipped code.$450–650per hour · 1.5× deposition

Travel and expenses at cost where on-site work is required. Fixed-fee engagements invoice half at start, half on delivery.

Whether we're a fit
Good fit

You should call me if…

  • The problem is in the network, the protocol, or the coordination — not just the UI on top of it.
  • You need one accountable senior owner, not a team to manage.
  • "It works on the demo" isn't good enough; you need it to hold under failure.
  • You're evaluating someone else's system and want an honest second read.
  • You have a legacy system nobody left understands.
Not a fit

I'm probably the wrong call if…

  • You want a large staffing bench or a body-shop arrangement.
  • The work is a standard web/CRUD app a generalist can deliver faster and cheaper.
  • The decision's already made and you need someone to rubber-stamp it.
  • You need 24/7 production on-call as the core of the role.

If I'm not the right fit, I'll usually be able to point you at who is.

Get in touch

Start with a conversation, not a contract.

Tell me what's hard. I'll tell you straight whether it's something I can move, and what the smallest useful engagement would look like.

Get in touch →See the track record
Products

One stack. A box, a programming model, and the apps that ride it.

FrogNet is not a cloud you rent — it is software you install and own. A node turns any spare computer into a piece of a self-forming network; UnREST is the programming model that moves memory instead of messages; and a suite of real applications already runs on top. Free to build on. Free to ship.

The Communicator — the flagship application.

The nine rungs
The nine rungs
The NodeUnRESTThe BrokerThe CommunicatorThe AppsIn DevelopmentGet a nodeEditions
The line

Five parts, one network.

Everything below is the same system seen from a different seat — the box you install, the programming model you build on, the rendezvous that joins sites, the flagship app, and the everyday suite. You can adopt one part without the others.

Infrastructure

The Node

Any spare box becomes a self-forming, self-healing piece of the mesh. Discovers its neighbours, elects roles, projects Wi-Fi, routes over any bearer.

Developer surface

UnREST

The programming model and handler framework. Exchange memory, not messages — SAME / DIFF / FULL on the wire, and your own protocols on the same interface.

Rendezvous

The Broker

A rendezvous that joins sites across the internet with WireGuard tunnels. It holds no tuples, no node identity and no pond secret, and it runs none of the semantic stack — but it terminates the tunnels and forwards between them, so assume it can see the traffic it carries. Confidentiality across that seam is supplied above the tunnel, not by it.

Application

The Communicator

Presence, chat, calls, and games over one shared memory — with SotF, the adaptive media ladder that holds a call from HD down to a heartbeat.

Application suite

The Apps

FrogChat, the Family app, the Network Monitor, file sync, sensor bridges, board games — the software that has run a household for years.

The idea

The network is the database

Underneath all five: a shared operational memory the whole mesh reads and writes. Address by what a thing is, not who has it — three indices, query any combination, and the value is JSON. The books explain why →

Product 01 · InfrastructureRunning today

The Node.

Install the frozen FrogNet world on any Linux box — a Raspberry Pi, a mini-PC, an old laptop — and it becomes a lillypad: a sovereign node that configures its own networking, stands up its own Wi-Fi when there is no wire, discovers every neighbour it can reach, and takes on whatever role it is most capable of. No controller, no account, no cloud. Its identity is a GUID minted once at install; its address is its own. Pull the uplink and it keeps working — a lost link is normal weather, not an outage.

One node is a complete network. Add a second and they find each other; add a tenth and nothing changes but the reach.

Runs on
Pi-class · mini-PC · x86 Linux
Identity
/etc/fnid GUID
Networking
self-configuring at boot
Bearers
Ethernet · Wi-Fi · HaLow · LoRa →
Discovery
bounded HTTP walk
Partition
split & merge, automatic
Install
one script, offline
§— · Connectivity

Connectivity is accomplished by transport — not the other way around.

A transport is a way to move bytes. Connectivity is people and machines that keep reaching each other while conditions change. Most stacks start from a transport and build the solution around it — so the solution dies with the transport. FrogNet starts from connectivity, and every transport is interchangeable weather. Here is what's in, what's out, and why.

Ham is out — up front, before anything else. FrogNet's wire traffic is differences against state the far end already holds — frames a third party cannot read without the memory they refer to. The prevailing reading of FCC Part 97.113(a)(4) treats that as a message encoded to obscure its meaning, and amateur bands prohibit those. So FrogNet does not transmit on amateur radio bands — stated here the same way it's stated in the book. And Reticulum is out with it, on the same rule for the same reason: every Reticulum packet is encrypted by design, and by the project's own account that cannot be turned off. Whatever you think of either stack, neither one can legally carry its traffic over ham spectrum in the US.

Now the honest part about the alternative. Look at how amateur traffic actually moves. The RF hop is audio — software modems pushing tones through a voice radio, the same idea as a dial-up modem and at kindred speeds: 1200-baud packet still keys the Bell 202 tones of the acoustic-coupler era, and even the best modern HF modes deliver a few kilobits. And the moment the message needs to go farther than the radio reaches, it backhauls over the internet: Winlink through CMS servers, AREDN islands joined by tunnels over home broadband, EchoLink voice over IP by name. The screech does the last mile; the internet does the miles — in the clear, because the bands require it. FrogNet was built on accepting that fact instead of dressing it up: when the path must cross the internet, it crosses inside a WireGuard tunnel you own, on your own flat 10/8, through a relay that cannot read a byte.

Wire & Wi-Fi

Ethernet · Wi-Fi

The LAN case. Nodes on a switch or an access point find each other unaided — and a node with no wire stands up its own Wi-Fi. Running in production for years.

Across the internet

WireGuard tunnels

Cross-site links ride encrypted tunnels on your own flat 10/8, introduced by the broker — which terminates them but, running none of the semantic stack, can reconstruct nothing that crosses it. two years and counting in production, coast to coast.

Long-range radio

900 MHz · HaLow

The unlicensed band where compression and encryption are simply legal. An HD call has crossed the country over it, and a node was driven through Queens on it without a drop.

Narrowband

LoRa · MeshTastic bridges

Sensor-grade RF across acres the carriers gave up on. Bridges write RF-delivered readings straight into shared memory as sensor rows.

Satellite

Starlink & friends

Starlink supplies one network — the pipe to the internet. FrogNet supplies more than one: the local fabric keeps running on Wi-Fi and radio with the dish dark, and the cross-site tunnels light back up the moment it returns. One dish has fed dozens of working nodes without saturating the pipe.

Anything that moves packets

The general rule

Fiber, a phone's tether, point-to-point microwave — if two points can exchange bytes by any means, FrogNet links them. The application never sees the difference; that is what transport-independent means.

And transports combine — in one node, and across the network. A single node can carry several bearers at once, and a network mixes them by role: one machine is the tunnel gateway, another is the 900 MHz gateway, a third reaches its upstream on eth1 — and the fabric routes over whichever path reaches. The flagship call ran wired Wi-Fi, an encrypted internet tunnel, and a 900 MHz radio in one session. No node cares which bearer its neighbour used to get there.

One pond, three ways in and out — every link two-way, every methodology different

ONE POND · FLAT 10.0.0.0/8 LAN · Wi-Fi / Ethernet node Ceth1 gateway node Atunnel gateway node Dmember · no uplink node B900 MHz gateway eth1 · wired upstreamrouter / ISP WireGuard internet remote siteanother pond 900 MHz · radio distant noderidge · no wire at all

The same property is what makes FrogNet mobile. A device does not care what the transport is, so when it comes in contact with another FrogNet it latches onto whatever medium is available — with no operator intervention in most cases. A node has been driven through Queens at traffic speed on exactly this behavior: the topology changed under the mesh block by block and the walk re-formed it, nobody touching anything. That is the differentiator with a human face: people do not have to be network or RF engineers to get things up and working in the field.

transport independence → discovery & route optimization → route resilience & fault tolerance → system survivability

Each stage exists because the one before it feeds it. Survivability isn't a feature bolted on at the top — it's the last link of a chain that begins with refusing to care what the wire is. The wire and the radio — Magnum Croakus § 5 →

Ham is a transport. FrogNet is a solution. When a band can't carry the traffic, the solution routes around the band — that is the whole idea.

Product 02 · Developer surfaceBuild on it free

UnREST — the programming model you build on.

The web asks; UnREST remembers. Not a new protocol and not a faster transport — the same primitives you already use, arranged so both ends hold the same structure and only the difference crosses the wire — SAME when nothing changed, DIFF for what did, FULL only to teach a template once. That is UnREST Core, and every exchange gets it for free: only what changed on the wire, and a transport that keeps the wire full instead of idle between round trips.

UnREST Unleashed is the extension layer — write a handler, fill its slots, and you have an entirely new protocol on the same interface. SotF and the game protocol are built exactly this way. And you don't have to rewrite to start: drop the codec onto the wire you already run and the bandwidth win arrives before the rewrite does. See the three-stage on-ramp →

Model
exchange memory, not messages
Codec
BLDC-1 · SAME/DIFF/FULL
Wire
FNWP-1, fanned & interleaved
What it saves
only what changed crosses
Extend
one handler interface
On-ramp
drop-in codec → rewrite
License
free for dev & personal
Product 03 · RendezvousRunning today

The Broker & the pond.

Nodes on the same LAN find each other unaided. To join sites across the internet, a broker introduces them and hands out WireGuard tunnels — and then gets out of the application layer. It holds no authoritative state: its whole picture is rebuilt from what nodes tell it, and its working set is a single SQLite file. Cross-site traffic does transit it — it terminates the tunnels — but it holds no node identity and no pond secret and runs none of the semantic stack, so it parses and stores nothing — but the traffic is in the clear at that seam, so assume it can see it. Lose the broker and every existing link keeps carrying traffic.

Membership is a redeemed passcode, not an account. A pond is simply the set of nodes that belong together — coast to coast, one flat 10.0.0.0/8, addressed the same whether they share a switch or a continent.

And where the pond has to accept something from a stranger — a license request, a contact form — the public side is a drop box, not a door: it writes files into a watched folder the inside pulls from and inspects. It has no route into the network, so compromising it yields a folder of files, not a foothold. That's what lets a FrogNet host a public form without putting a single node within reach.

Role
rendezvous and transit
Cross-site
WireGuard, AllowedIPs 10/8
State
a cache, rebuilt from polls
Data path
carries inter-site transit; holds no keys, no semantic stack
Public input
drop box, files only
Membership
one-time passcode
Backup
copy one SQLite file
Product 04 · ApplicationSotF in development

The Communicator.

Presence, chat, calls, setup, and a game table — one application over one shared memory. Being present is not a service call; it is a tuple you write. The flagship piece is SotF, the Song of the Frogs Adaptive Communications Protocol: a live media ladder that trades fidelity for continuity as the link tightens. It has held an HD call across the country over a 900 MHz radio, stepped it down toward 300 Kbps and, when the link starved, all the way to a one-byte heartbeat — and climbed back without a re-dial.

Live media cannot be diffed, so this is where the rewrite earns its keep: not by shrinking frames, but by degrading a call instead of dropping it.

Protocol
SotF-ACP
Ladder
HD → ~300 Kbps → heartbeat
Recovery
in-session, no re-dial
Proven
1 Mbit HD over 900 MHz
Also carries
presence · chat · games
Media host
an elected role
Product 05 · The suite

The apps that already run on it.

FrogNet was dogfooded in a house for the better part of a decade before it said a word in public. These are the applications that proved the stack — sovereign, self-hosted, no company in the middle.

Messaging

FrogChat

Group and direct messaging across the mesh — town or country — with no server holding the only copy.

Family

The Family app

Presence map, shared calendar, photos, and a family wiki. Your people, your data, no cloud account.

Operations

Network Monitor

The terminal info center — every node the mesh can see, live per-peer telemetry, bytes saved, and drill-down to a node's sensors.

Data

File sync

Transport-agnostic peer-to-peer file sync. The network is the rendezvous; no central server required.

Sensing

Sensor bridges

MeshTastic / LoRa bridges write RF-delivered readings straight into shared memory as sensor rows.

Play

Board games

Multiplayer state as governed memory — each player writes only their own intent, an elected engine rules the board.

In development · concept

Carry the network.

The Communicator doesn't have to live behind a screen. These put a FrogNet node in your hand and on your chest — voice and sensing over SotF, no cell tower in the loop. An affectionate nod to the ships that imagined it first; real hardware on a real mesh. Shown as early concepts.

Concept · voice

The flip communicator

Flip it open and talk. A pocket voice transmitter that rides SotF through the Communicator — the flip-open handset the classic crews made famous, running on a mesh you own instead of a script.

Concept · wearable

The tap badge

Press it and you're on. A wearable badge that opens a SotF voice channel with a tap — the next-generation take, no handset at all. Tap to talk, tap to end.

Concept · sensing

The tricorder

One handheld that reads the world: voice, haptic alerts, weather, personal health, and air quality folded into a single node you carry. A FrogNet sensor suite in your palm, everything it senses written straight into shared memory.

Get a node

Three ways onto the network.

Flash your own, buy one built and meshing out of the box, or spin a node up in the cloud. The software is free either way — this is just the fastest hardware path.

Flash it yourselfSD card
$24.95

FrogNet on an SD card

A flash-ready image on a card. Drop it into a Raspberry Pi or mini-PC, power on, and you're a node. Bring your own hardware.

Order a card →
Built & configuredPi 4
$299

FrogNet Pi 4 host

Built, flashed, and configured on a Raspberry Pi 4 — powered on and meshing out of the box. Add external antennas, long-range radios, or a router to taste.

Order a host →
In the cloudDroplet
Referral

A cloud droplet

Run a node or broker in the cloud on a DigitalOcean droplet, spun up through our referral link — handy as an always-on broker or member.

Get a droplet →

Prices in USD. External antennas, long-range radios, and routers are quoted with your Pi 4 order — tell me your range and bearers. Hardware ships from Fawcett Innovations; the FrogNet software is always free to download and flash yourself.

Licensing

Free software. Free for commercial use too.

FrogNet is under version 2 of the GNU General Public License, and no other version. That means free for everything — evaluation, research, production, revenue, a product you sell. There is no seat count, no evaluation clock, and nothing to ask permission for. The one condition is copyleft: if you distribute something built on FrogNet, it carries the GPL too.

Internal use triggers nothing. Running FrogNet on your own infrastructure — in production, at any scale, modified however you like, as the backbone of a business — carries no obligation to publish anything. Copyleft is triggered by distribution: handing the software, or a work derived from it, to someone outside your organisation. If you are deploying it rather than shipping it, there is nothing to buy and nothing to ask.

Everyone
GPLv2
any use, including commercial
  • The full stack and build manual
  • UnREST Core and Unleashed
  • Personal, research, production, revenue
  • No seat count, no expiry, no form
  • What you distribute carries the GPL
Download →
With engineering
Fawcett
design · build · rescue
  • The GPL source, plus
  • The engineer who wrote the stack
  • Custom handlers and hard problems
  • Review, build, or fractional
How I can help →

For the guild · open problem

241 unassigned opcodes.

FNWP-1 defines a handful of opcodes and leaves 241 unassigned. What belongs in them is genuinely open, and it is the part headed for an open standard — so the argument is worth having in public. Get the source → — open source under the GPL, nothing to request. If you want to work on this, say so in Discussions and say which; that is a courtesy, not a condition.

Own your network

Install it. Build on it. Keep it.

The source is free and on the download page — GPL, no form, nothing to request.

Get the source →See what it's for →
FrogNet in an existing network

You do not have to migrate a network to FrogNet.

It is not a migration. It is an insertion. Put a FrogNet node immediately below actual egress at a site. Existing hosts keep their addresses, gateways, applications, and internet connectivity. None of them takes an agent. FrogNet adds its network alongside the one already there.

Existing Networks — insertion into a brownfield enterprise, on camera.

One correction to the video: semantic compression applies to traffic that crosses between FrogNet nodes — site to site over the tunnel. Traffic between two existing machines on the same LAN does not pass through the node and is unaffected. See Croakus §22, One Overlay, Many Sites.

before hosts -> switch -> firewall -> internet after hosts -> switch -> FrogNet -> firewall -> internet | +--> every other site changed on the hosts: nothing
The three objections, in the order an architect raises them

Correct. They don't have to. And address alone is not membership.

"You will never replace our network."

Correct. Existing default routing stays intact, ordinary traffic keeps behaving ordinarily, FrogNet's routing is additive.

"We have thousands of endpoints and half of them cannot run your software."

They do not have to. Below-egress insertion means unmodified machines participate — printers, cameras, badge readers, controllers, untouchable legacy boxes. No per-host mesh can make that claim: Tailscale, ZeroTier and Netbird all require an agent on each participant.

"We are already using 10-space everywhere."

Address alone is not membership. A machine is reached through a FrogNet node, and a node is one that answers when discovery calls. FrogNet rides alongside your 10-space rather than claiming it.

The boundary

What it will not do — which makes the pitch stronger, not weaker.

Overlapping 10-space between sites is the network administrator's problem, as it is today with any router. What FrogNet guarantees is that it will not create the problem: a subnet whose .1 does not answer never acquires a route.

VLANs and everything else below the insertion point are untouched. FrogNet works on the addresses that arrive and does not need to know how many broadcast domains produced them.

One node does not mean one node per subnet. A node serves a single /24 — its own segment, not a claim on yours. A site with twelve VLANs needs one node, because the L3 switch already routes between them.

Two questions an architect asks next — what happens to internet connectivity when the node is down, and what insertion does to line rate — have not been measured yet, and this page will not carry a number until they have.

The Existing Networks video → Croakus §1a and §22 → Contact →

Fleet autonomy

A fleet that thinks for itself.

The FrogNet briefings for uncrewed ground vehicles and autonomous fleets, in their original sequence.

FrogNet for FarSight UGVs

Fawcett Innovations LLC · The FrogNet Living Network

A fleet that thinks
for itself.

  • PREPARED FOR FARSIGHT VISION × AEROS
    PRODUCTION SYSTEM · TRL 6–7 · FIELD-PROVEN
  • How to Think Like a Frog

FrogNet is a sovereign, self-forming mesh with a real-time network shared memory — one live picture that supports simultaneous AI control of every connected device — no cloud, no base station, and a link that holds even when it's constrained or contested.

  • John W. Fawcett , CEO · Daniel Tone , VP Engineering
  • Networked autonomy for unmanned ground systems
Anatomy of a FrogNet

A complete, sovereign network — mobile, self-forming, self-healing.

Each node is a whole network on its own, the size of a deck of cards. Nodes discover each other and mesh into a pond you own end to end — forming and healing themselves with no operator, even on the move — and its shared memory is a live database every node reads and writes.

  • The node — a network in a box

DNS, DHCP, web, database and AI on standard Pi-class Linux. Runs fully standalone with zero connectivity.

  • The database is network memory

Every node reads and writes one real-time store. It floats between hosts but keeps a single address mesh-wide and always holds the current truth — no history, no stale copies.

  • Sensors & AI hang off nodes

ESP32 and LoRa sensors attach to individual nodes, and an AI on the mesh reads the shared memory and acts on it.

  • Sovereign — uplink optional

A broker links ponds over WireGuard only when the internet is there. Offline is the baseline; nothing in the chain belongs to anyone else.

Why autonomy needs a different network

A machine that depends on a link to base is dead the moment the link is jammed.

  • TETHERED — DEPENDENT ON SOMEONE ELSE'S CHAIN

Jam one link and the vehicle goes blind, deaf, and dumb. Every layer it depends on is someone else's.

  • SOVEREIGN — THE FLEET IS THE NETWORK

Each vehicle is a complete node. They mesh directly, share state, and keep coordinating with no base, no cloud, no link to cut.

  • Offline-first
  • Assumes no link; keeps operating when the link is gone.
  • Any radio is a pipe
  • Rides whatever the platform carries — HaLow, LoRa, SATCOM.
  • Proximity = perimeter

Off the internet — the reachable application surface from across the world is very small by construction.

  • Memory, not messages
  • Vehicles share state, not packets — no C2 session to spoof.
The autonomy engine

The network sees every vehicle — and steers them all.

  • NETWORK-HOSTED AI · SHARED WORLD STATE

Every vehicle publishes what it senses and reads back what to do. A network-hosted AI sees the whole fleet's state in one place — and writes control to any vehicle in real time, with no message-passing an adversary can jam, spoof, or sever.

  • THE LOOP THAT DRIVES AUTONOMY
  • sensor → network AI → actuator

The sense-act loop closes through the shared state — and it keeps running through the loss of any vehicle, any link, or the internet entirely.

  • PROVEN · APRIL 17, 2026

A closed sensor → AI → actuator loop, through a database 2,400 miles away, over a 4,800-baud link at 20% loss — in under 2 seconds.

If it closes transatlantic over jammed dial-up, it closes across a field of vehicles.

  • 38 KB sent where 347 MB would have been
  • 44× throughput, Ethernet shaped to 4,800 baud + 20% loss
  • <2s RTT @ 20% loss
  • 2 yr+ cross-internet, Seattle and New York
Survivability under jamming

Coordination that does not stop.

Conventional links are binary — working, or dropped. FrogNet's video steps down by resolution, then frame rate — then sheds to audio, text and canned messages, climbing back as the link recovers.

  • VIDEO — RESOLUTION ↓ THEN FRAME RATE ↓

It never cliffs — it drops a rung and keeps the link alive. Only total jamming — zero bytes through — ends it.

  • The swarm forms itself

Vehicles discover each other and mesh with no configuration, merge with other units on contact, and heal when one is lost. There is no central node for an adversary to take out.

  • Proven mobile & contested

A 900 MHz HaLow node held the mesh continuously through dense urban driving — across multipath, building occlusions, and the metal of the vehicle itself. The exact RF nightmare of a moving ground vehicle.

  • One box, civil to contested

The same architecture runs a private family network and a first-responder mesh — genuinely dual-use, civil through defense.

Fielded over WiFi, LoRa & WireGuard at emergency operations centers — not on amateur radio bands, by deliberate design.

Already proven — independently

Dan has already proven the hard parts.

An autonomous, re-taskable fleet has to sense and act, stay meshed on the move, pull in any sensor, join from anywhere, and be reprogrammed in the field. Daniel Tone has demonstrated each on FrogNet, on his own nodes in New York — an independent reproduction of the whole system, the latest completed today.

  • Sense → decide → act
  • APRIL 17, 2026

Dan drove a physical actuator from a web UI — every step routed through a database 2,400 miles away, over a 4,800-baud link at 20% loss, in under 2 seconds. The closed control loop of an autonomous vehicle, proven over a worst-case link.

  • A mesh that moves
  • MOBILE · 900 MHz HALOW

Dan ran a trunk-mounted HaLow node through dense urban driving in Queens — no dropped links across multipath, building occlusion, and the vehicle's own metal. A moving platform that never loses the swarm.

  • Sensors over any radio
  • MESHTASTIC · LORA

Dan bridged MeshTastic and LoRa sensor data straight into the shared memory, end to end — RF-delivered readings the whole mesh sees at once. Field sensors over the radios a unit actually carries.

  • Join from anywhere
  • LAST WEEK · STARLINK

Dan stood up a node on nothing but a Starlink uplink — it joined the mesh as a full member in minutes, SSH-reachable and writing to the shared database. Drop a unit anywhere with a sat link and it's on the network.

  • Re-task on the fly
  • TODAY · OTA FIRMWARE

Dan pushed a remote firmware update to the ESP32 boards — repurpose any sensor or actuator across the fleet with no physical access. Re-mission the hardware from afar — a soil sensor becomes a perimeter tripwire.

The building blocks of an autonomous, re-taskable fleet — already working, independently. Next is the fleet: a pilot on a handful of units, then the 500.

And he took it from concept to execution in a few days — the leverage is in the ideas, not the labor. Shift the paradigm, stay adaptable, and a few people do what used to take an army.

  • Fawcett Innovations LLC · with AEROS Systems
  • unixpro @ ufie .org · (206) 335-9639
Autonomy people

Resident expertise, not a remote brain

An autonomous system whose intelligence is remote is teleoperated with extra latency, and it fails at exactly the moment autonomy was for. FrogNet’s answer is a model that prepares while it has the world — its lexicon, its regulations, its reference texts — and then works without it, reading and writing the shared memory the same way every other application does.

That knowledge pack needs bringing forward to the current architecture. It is self-contained, it needs no integration work because an AI host is just another participant on the scratchpad, and it is the most attractive open piece on the list.

The AI platform seam →

The Living Network

THE LIVING NETWORK

Full autonomy.
Nothing to jam.

A fleet that forms its own network from the units themselves. The comms move with the system — so there is no fixed link to locate, target, or take down. Denial gets harder by construction, not by countermeasure.

  • AUTONOMOUS
  • SELF-FORMING
  • DENIAL-RESISTANT BY DESIGN
Working today — not a roadmap

A sovereign, self-forming network — running, on throw-away hardware.

  • Brokerless & sovereign

The network is the units. No server, no cloud, nothing to phone home to.

  • Self-forming & self-healing

Nodes appear, elect roles, partition and re-merge with zero configuration.

  • UnREST shared memory

Every unit works from the same shared operational state; the wire carries only what changed.

  • Graceful degradation

One channel walks video → audio → text → a command floor. Control survives the squeeze.

  • VIDEO → AUDIO → TEXT → FLOOR
  • Proven in simulation and live multi-box testing on commodity hardware.
The differentiator

Not one breakthrough. Thirteen paradigm shifts.

Each replaces a foundational assumption of networking. The achievement is that they interlock.

  • 01 Proximity security
  • 02 Stateful network
  • 03 Parallel links · 100% duty
  • 04 /etc/hosts ground truth
  • 05 Transport abstraction
  • 06 Network as database
  • 07 Infrastructure compression
  • 08 Offline-first
  • 09 Emergent internet
  • 10 Networked intelligence
  • 11 Sovereign networking
  • 12 Living topology
  • 13 Memory, not messages THE KEYSTONE

Each replaces a fifty-year-old assumption — and none works alone. Full treatment: How to Think Like a Frog

Running now

Three different systems, one substrate.

No unnecessary messaging — every one coordinates through shared memory.

  • SEMANTIC COMPRESSION · LANGUAGE CODECS

JSON, XML, HTML, text — semantic transport plus LZ4. The wire carries structure-aware diffs, not bytes.

  • DIRECT VIDEO · SotF

Live A/V as one interleaved stream. Per-frame diff vs a per-peer reference; identical frames hit a 25-byte floor.

  • GAMES · GAME HUB

The hub is the authority — runs the rules in working memory and answers. The read is the only event.

The multiplier

Your engineers building custom autonomy on UnREST — in months.

  • TODAY
  • It already runs.

A working sovereign network with UnREST shared memory, on commodity hardware.

  • ›
  • IN MONTHS
  • We transfer the pattern.

Your people write custom solutions directly on UnREST.

  • ›
  • THE PAYOFF
  • Every program inherits it.

Autonomy whose comms move with the system — jamming gets harder by construction.

You've spent years building the brain. This is the nervous system — and we hand your team the pattern, not just the product.

Where we go from here

The technical path — three steps, in order.

  • 1
  • Testing & scalability

Prove convergence, election, and transient-host survival as the node count climbs toward fleet size.

  • 2
  • Congested & contested

Validate behavior under interference, partition, and active disruption — the conditions the field actually delivers.

  • 3
  • Custom software

Your engineers build mission-specific behaviors as UnREST handlers — the factory takes them from there.

Step three is where UnREST does the heavy lifting — new capability is a class, not a fork.

If the third step is the one you want

New capability is a class — and somebody writes the class

Handlers are the seam where a mission behaviour becomes part of the fabric, and they are also where a contributor with a data format, a codec, or a domain gets in without reading the election code. FrogNet is built in ten parts on purpose, and the section boundaries in the build manual are the seams.

This is ground floor. The conventions have not been set and the standard has not been written, and whoever does the good work in any one seam will have done something that outlives this implementation.

Ten seams, and two teams that aren’t code →

UGV swarm autonomy

AUTONOMOUS UGV SWARM · FROGNET

Resident expertise, not a remote brain

  • The brain rides with the swarm.

A network-hosted AI on one moving vehicle coordinates the whole fleet — over the mesh, with no upstream link.

  • NO UPLINK
    FULLY AUTONOMOUS
  • Network-hosted AI — rides a moving vehicle
  • UGV — roams under AI control
  • Mesh link · control & telemetry
  • NODES
  • 09
  • MESH LINKS
  • —
  • AI BRAIN
  • V-01

Autonomy people

An autonomous system whose intelligence is remote is teleoperated with extra latency, and it fails at exactly the moment autonomy was for. FrogNet’s answer is a model that prepares while it has the world — its lexicon, its regulations, its reference texts — and then works without it, reading and writing the shared memory the same way every other application does.

That knowledge pack needs bringing forward to the current architecture. It is self-contained, it needs no integration work because an AI host is just another participant on the scratchpad, and it is the most attractive open piece on the list.

The AI platform seam →

Community

Programmers don’t work alone.

I am not looking for an audience. I am looking for the people who will read this, disagree with a piece of it, and build the better version — because that is the only way a network like this stops being one person's work and becomes a thing the profession owns.

Two doors. To talk about it — the book lives in a public repository and its Discussions are open. No licence, no account with us, no permission. To build on it, take the source. Both the implementation and the argument are yours — GPL, no permission needed.

The Guild — the recruiting pitch, in his own voice.

What this is for

Linux gave you a floor no company could rent, revoke, or meter. Then it left you standing on the same surveilled network. FrogNet is the next floor: a network individuals, groups, and companies own outright, with the footprint they expose to the outside world collapsed to nearly nothing.

Nobody joins a movement for semantic compression. Sovereignty is the payload — the performance is just how it gets in the door, and how you afford to run it on hardware you already have.

Linux won by being ownable — not on kernel benchmarks. FrogNet offers the same trade, one layer up.

Something to do — this weekend

Four steps, and none of them require trusting me.

The distance between "I'm convinced" and "I built something" is where most projects lose people. So the on-ramp is deliberately short, and every step is something you verify yourself.

One thing worth saying plainly, because the rest of this page could give the wrong impression. The standards team wants people who have edited an RFC and the governance team wants a practising lawyer, and both of those are real requirements — but they are two teams out of twelve, and they are the exceptions. Everywhere else the bar is that you got it running and noticed something.

A topology that breaks the allocator. A payload the template learner handles badly. A sentence in the manual that is wrong, or right but hard to follow. A question you had to work out yourself because nobody had written it down. Those are contributions, they are how most of what is written here got found, and none of them requires you to be an expert in anything except what you just did.

1
an evening · free

Read it from first principles

Two free books. How to Think Like a Frog is the why, in plain English. Magnum Croakus is the build manual — install a node, discover the network, write a handler.

Both books, free →
2
no form · GPLv2

Get the source

Free for any use at all under the GPL — personal, community, research, production, commercial. No seat count, no evaluation clock, nothing to ask for. You need the spec to build on the protocol, not permission.

Download it →
3
an afternoon · no rewrite

Point one internal service at it

The drop-in is the easy on-ramp: leave your code alone, put your existing services on FrogNet transport, and watch what stops crossing the wire. This is the step that pays the same day.

The two levels of adoption →
4
then · the actual prize

Then write something that exchanges memory, not messages

Compression is the bridge. The prize is FrogNet Memory — a variable any participant reads or writes, shared across the network, and the plumbing you stop writing entirely. That is where FrogNet stops being a faster pipe and becomes a different way to program.

Worked UnREST examples →
If you are here to learn

Take it, with my compliments.

Everything above is written as an invitation to contribute, and that is not the only reason to be here. If you are a student, or teaching yourself, or coming at distributed systems sideways from another discipline — this is a working one, derived from first principles, with the reasoning written down. Use it. There is no obligation attached and nothing to sign.

Distributed systems are usually taught as toy examples and papers, because the real ones are proprietary, enormous, or both. This one is neither. It is small enough to hold in your head, it runs on hardware you can afford, and the two books derive every part of it from the problem that forced it rather than presenting it finished. You can read why an election algorithm scores nodes the way it does, then go and watch it re-elect one.

What is actually in here, as coursework: leader election and convergence under partition. Routing that rebuilds itself with no central authority. A codec that learns templates and diffs against them. Transport adaptation under real degradation, with the measurements. Tuple spaces and coordination models going back to Gelernter and Carriero in 1985. Shared memory semantics, and the freshness bound that a network forces on them. Each of those is a lecture somewhere; here they are one system that has to make them work together, which is the part the lectures leave out.

The simulator matters most if you have no hardware. It runs the real discovery, routing and election code against a modelled topology on a laptop, so you can break things, model a fifty-node pond you could never afford to build, and watch what happens — without owning a single Raspberry Pi.

The best project on offer

Implement FNWP-1 yourself

The protocol is published as a specification, and the manual describes the wire format, the SAME/DIFF/FULL state machine, the freshness classes and the election scoring in enough detail to build against. Writing a second implementation — in a language of your choosing, from the document rather than from our code — is a hard, finite project, and it is the thing that proves a specification is a specification.

If you get partway and find the document ambiguous, you have found a real defect and the standards team needs to know. That is not a favour you are doing us out of politeness; a spec nobody has implemented from is a draft.

If you teach

Use it in a course

The books are free, the licence is GPLv2, which covers educational and research use like every other use, and there is no per-seat count to negotiate or evaluation clock to beat. Assign chapters, run the simulator in a lab, hand students a pond of Pis, or set the wire format as a term project.

Tell me what you are doing and I will help — john@fawcettinnovations.com. If a chapter turns out to teach badly, that is worth more to me than most bug reports.

And this section is not charity.

Some of the best work on any system comes from people nobody assigned to it. A student with a weekend and no mandate tries the thing that was never scoped, on hardware nobody tested, in a topology nobody drew. That is not a smaller version of professional work — it is a different search, and it covers ground a roadmap cannot, because a roadmap is a list of things somebody already thought of.

The particular thing this cohort does better than anyone is check whether done is true. I have declared parts of this complete, some of those declarations are wrong, and I am the worst-placed person to find out which — I know what I intended, so I test what I intended. Somebody who does not know what I meant does the thing I never anticipated. If it holds, that is worth something. If it breaks, that is worth a great deal more than agreement.

Then the unglamorous one, which goes uncredited nearly everywhere and shouldn't. Reproduction. A report that says it broke is a rumour. A report that says here is the topology, here are the steps, here is what I expected, here is what happened, and it does it every single time — that is an oracle, and somebody can act on it the same afternoon. It is real engineering work, it is often done by people who would not call themselves engineers, and it is appreciated here.

So take it, and play with it, and do the unexpected with it. If something surprising falls out, I want to hear about it — john@fawcettinnovations.com. And if nothing does, you still have the books.

And the part that closes the circle: a student who implements the wire format and finds the spec ambiguous, or runs the simulator and finds a topology that breaks the allocator, has already contributed — without applying to anything, and while doing something entirely for their own reasons. Learning here and working here are the same activity, which is why this section sits above the working groups rather than below them.

Both books, free →Download it →The simulator →
Why the guild, and not a following

I am not its life.

"It may not even be right. But it appears to work. And if you can prove I'm wrong — go for it." — The Guild video, the recruiting pitch in his own voice.

FrogNet brings networks to life. The Guild brings FrogNet to life. It is born, and it is not finished — it cannot be.

I built it from one perspective — mine — and I know some of what I have done will turn out to be wrong. That is not an admission that undermines the release. For something this size, claiming otherwise would. There is a difference between I know it is wrong, so it is not ready and I know some of it must be wrong, so it is ready for more perspectives, and this is the second one.

I am not afraid of being wrong, and you do not have to take that on faith. Seven subsystems in this tree were replaced wholesale, and the reversals are annotated in the source with the reasoning that caused them rather than quietly deleted — a cache layer shipped and then partly reverted when one part of it turned out to be load-bearing; an entire merge path replaced, with the oracles that asserted the old rule retired by name instead of removed; a scoring term thrown out on the grounds that a benchmark run on a busy box measures the busy and not the box. A contributor reading those learns the thing that actually decides whether it is worth arguing with me: an argument here can change something.

Years ago I helped teach high-school programmers, in one of the most diverse districts in the country. What I told them about why diversity matters to an engineer was not the usual argument. It was this: there are exactly as many perspectives as there are people on the planet, and even identical twins have two. If you let me design your systems alone, you will get something that works extremely well for a burned out old hippy, and for nobody else. That is not a moral failing. It is a property of one point of view, and no amount of care escapes it.

FrogNet has the same problem. I can give it architecture, code, tests, a simulator and the first applications. I cannot give it the perspectives I do not possess.

So: bring the network I never worked on. The radio I never used. The protocol I never encountered. The application I would never think to build. Bring the assumption I got wrong, and bring the topology that turns an oracle red. If a subsystem needs fixing, fix it. If it needs replacing, replace it. If one of my architectural assumptions is wrong, demonstrate that it is wrong — which is the only part of this I would insist on, because a perspective that arrives as an opinion is an argument that goes to whoever is more persistent, and a perspective that arrives as a red oracle going green is a fact.

There is a symmetry in that worth noticing. The simulator subjects the machine to topologies I did not anticipate. The guild subjects the design to perspectives I do not possess. Both are doing the same job: finding the assumptions one person could not see.

What is fixed is the goal and what it forces — transparent and automatic, and therefore deterministic, memory-shaped, continuous, floating, frugal, and honest about failure. Everything else is this implementation, and this implementation is not sacred merely because I wrote it.

I gave FrogNet life. I am not its life.

FrogNet should accumulate authors, not followers. The reversals annotated in the source, the oracles retired by name, the spec seat whose undetermined clauses are authorship — those exist so that arguing with this project leaves a signature. The Guild belongs to its contributors.

We will measure both capability and consequence. The same discipline that instruments a claim before believing it applies to what the technology does in the world: our responsibility does not end when the technology works.

The afterword this is taken from closes the build manual. Read it there →

Where to sit down

Ten subsystems. Each one is a seam you could own.

Linux never absorbed contribution as kernel rewrites — it absorbed a driver, a scheduler, a filesystem. FrogNet has the same shape on purpose: ten parts, each doing one job, each improvable without touching the others. A codec person can attack BLDC-1 and never read the election code.

Coordination

UnREST

The tuple-space layer — freshness classes, absence semantics, ordering boundaries, scope. Argue for a better rule.

Codec

BLDC-1

Structure learning and diffing. New data types derive in; a domain-tuned codec could beat the general one badly.

Wire

FNWP-1

Framing, opcodes, sequencing, fan-out. The protocol headed for an open standard.

Media

SotF

The adaptive ladder. The deep-tested path — and the one with the clearest measuring stick.

State

FrogNet Memory

Current-state store on an elected host. Bounded staleness by design — sharpen the boundary.

Consensus

Elections

Capability scoring and re-election. Where "who decides" gets settled; a better score is a real contribution.

Autonomics

Discovery, repair & tuning

Find, join, heal, optimize. Routing and planning people: this is your seam.

Sensing

Sensor platform

Any sensor onto the fabric as first-class current state. Widest surface for new device work.

Intelligence

AI platform

Models reading and writing the live shared state directly — the substrate as the pipeline.

Control plane

HTTP coordination

Ordinary HTTP as the coordination tool, so nodes need no new port anywhere.

Every one of these is specified in the build manual, section by section — those section boundaries are the seams. Read the manual →

Two teams that aren't code

Ten of the seams are subsystems. These two aren't.

And right now they matter more. Neither requires access to the engine, and neither has anything to do with writing Python. Both are teams rather than posts — they will have more than one person in them, and they will decide among themselves who does what.

Standards team

Somebody has to write the standard.

The endpoint is an open specification, and it is published. Somebody has to implement from it, and it isn't the build manual.

Magnum Croakus tells you how this implementation behaves — it names files, scripts, and a Python venv, and it talks to a person standing at a machine. A specification is a different document: normative language, the frame laid out bit by bit, the state machine, negotiation and error behaviour, conformance criteria, and not one sentence that requires knowing our filenames. A first draft of that document now exists — twenty normative sections at the specification index, covering the FNWP-1 wire format (§11), the BLDC-1 SAME/DIFF/FULL state machine and template learning (§11), the freshness classes and tuple semantics (§9), and the election scoring (§8). It is Draft 0.9, and it has not been through anyone else’s hands.

So the seat is no longer extraction. It is review. A specification written by the person who wrote the implementation describes the implementation; whether it describes a protocol is a different question, and only somebody who has implemented from a spec they did not write can answer it. The known gaps are marked in place — four PENDING SOURCE blocks — and the conformance criteria in §16 have never been run by a second party. If you have written or edited a standard — an RFC, a working-group draft, a protocol spec somebody else successfully implemented — join it. You need the specification and the manual, both free, and nothing else. No engine access needed. No permission needed. No export screening, because a specification isn't a controlled item. You can start the day you decide to.

Whoever writes each document ends up its editor, and the editors shape the contract everything else gets held to. The first draft of the memory contract already exists, with its clauses marked verified, implied, or undetermined — the undetermined ones (absence, ordering, authority) are decisions, not documentation, and they are the seat's first real work. Read the draft →

What makes it tractable rather than archaeological: the reasoning behind every rule is already written in the source at the point of decision — 220 named rules in one subsystem — and the build fails if a load-bearing one is removed. The specification and the implementation can be diffed by a script.

Start by reading: the build manual (the four documents get extracted from it), the doctrine index of named rules it cites, and the current licence text. People read before they write.

Undecided today: which of the 21 book-cited rules not yet guarded by the build belong under guard; whether the rule scanner should read the shell build scripts it currently skips; and where the normative boundary sits between the specification and the manual. The editors decide these.

How a decision gets made: a change arrives as a red oracle going green — and that applies to the editor too: if the spec says the implementation is wrong, the demonstration is a test that fails on the current code.

What is hard: the doctrine is engineering prose, not yet normative language — turning a named rule into MUST/SHOULD/MAY means deciding which parts are requirements and which are this implementation's choices. Some rules are stated but never measured, and an editor has to choose: specify, measure, or drop. And the reference implementation is closed while the specification is open — the editor is writing the document that will outrank the code. That is the attraction, and it is also the tension.

Governance team

I need a lawyer in the guild.

I'd rather say so plainly than keep working around it.

Three questions are live. The reference implementation's export classification, which gates how freely it can be distributed and to whom. The FrogNet Foundation's formation and governance — a Linux Foundation-shaped 501(c)(6), with the IP assignment that makes the standard owned by its users rather than by me. And the licensing structure that has to sit correctly between a GPL reference implementation, an open specification, and a company that still has to earn.

Those are three different specialisms and it would be unusual for one practitioner to hold all three, which is the other reason this is a team. To be straight about what it is: it is not paid, it is a defined role rather than a favour, and I know informal legal advice is exposure you can't casually take on. What I'm offering is a seat at the table — Foundation counsel, a board seat, or a scoped engagement, whichever a real practitioner would actually accept. Export controls, technology transactions, or open-standards governance are the relevant backgrounds. Any one of them is enough.

Start by reading: the current licence text, the closed-engine / open-protocol plan, and how responsibility works here. The entity today is Fawcett Innovations LLC; the Foundation exists on paper as intent, not yet as filings.

What exists to work from: two governing entities (the Foundation as intended 501(c)(6), the LLC as the commercial company); three issued US patents that predate FrogNet; and a dozen-plus FrogNet inventions deliberately not filed — a decision, not an oversight, and it does not need reopening. Export screening is already identified as required, and with a CAGE code and an NSF SBIR Phase I invitation on record, the classification question is not hypothetical. The licence is free for any use at all — development, personal, community, educational, research, production, commercial — under version 2 of the GNU General Public License — read it, run it, break it, improve it.

Also undecided: whether the Foundation holds the spec from formation or receives it by later assignment; how a conformance mark works — who grants it, on what evidence, whether it can be revoked; and how a mark is funded when both the specification and the implementation are free.

Undecided today: the Foundation's exact form and jurisdiction; the mechanics of the IP assignment that makes the standard owned by its users; the licence architecture that must hold a GPL reference implementation, an open specification, and a company that still has to earn together without contradicting itself in five years; and the export classification of the reference implementation. The structure is not yet set — counsel arriving now shapes it rather than reviews it.

If you have wanted to see infrastructure done properly rather than papered over, this is that.

A third seat · arithmetic before opinion

Fifty-eight nodes. Sixteen on a shared broker. It should be fifty-nine thousand.

The book's Known Limits appendix states the most legible open problem in the system in full: the per-tunnel address allocator carries a structural ceiling of roughly 58 nodes, and 16 where one broker carries a second pond. The allocator is quadratic, so more address space is the wrong lever — the square-root table in the appendix shows why a bigger namespace buys almost nothing. What the number is made of, why the obvious fix fails, and what a real fix has to preserve are all written down.

The square-root table: why a bigger namespace buys almost nothing
The square-root table: why a bigger namespace buys almost nothing

It is bounded — one allocator, one namespace builder, and the routes they install. It is measurable — a topology that fails today either joins cleanly under your change or it does not. If you read the square-root table and immediately wanted to argue with it, you are the person it is addressed to. The appendix →

Named openings, from the videos

The broker area — named in the broker-install video; rendezvous, tunnels, pond management. Per-client rate adaptation — named in the Communicator video; the book's § 53 is explicit that one stream and one rate is the current design and per-client adaptation is not built yet. Maintainers and testers — named across the set; you become one by doing the work. And the three above: the standard, the governance, the allocator.

Either team: the contribution questions on the licence page → — tick Standards or Governance, tell me what you've done in one line, and that's the whole application. It lands in the same place either way.

How responsibility works

Borrowed from the kernel, because it has been tested for thirty years.

Nothing here is invented. Linux solved the problem of coordinating people who don't work for each other, and the parts of its answer that transfer are the parts worth copying.

Maintainers, not managers. The kernel has a MAINTAINERS file: a public list of who looks after what, with an address to send patches to. It is a statement of responsibility, not of rank, and nobody in it employs anybody else in it. FrogNet will keep the same list for the same reason — so a contributor knows where to send something without having to ask who is in charge.

You become one by doing the work. Kernel maintainers are not appointed at the start; a person sends good patches to a subsystem for long enough that handing them the tree is the obvious move. That is the mechanism here too. There is no application for it and no headcount on it — if two people end up sharing a subsystem because both did the work, that is a better outcome, not a conflict to resolve.

Teams self-organise inside their area. Nobody outside a working group decides how it splits its work. The standards team will divide four documents however suits the people writing them; the media-path group will decide for itself whether backpressure and transcoding are one problem or two.

The Foundation is not the technical governance. This is the distinction people most often get wrong about Linux: the Linux Foundation holds trademarks, employs a handful of people, and pays for infrastructure — it does not decide what goes in the kernel. The FrogNet Foundation is the same shape. It will steward the specification and hold the legal structure. It will not be the thing that decides whether your algorithm is better; the simulator does that.

And the part that is different. Linus is a benevolent dictator and so am I, for now, and I would rather name it than dress it up. Coherence needs a keeper early. The difference is that the code has a keeper and the protocol does not — the specification is published on its own terms, out of my hands on purpose. Open source under GPLv2, open protocol, and a keeper who intends to become unnecessary.

An open problem, with the numbers attached

Fifty-eight nodes. Sixteen on a shared broker. It should be fifty-nine thousand.

The seams above describe territory. This one is a specific open problem with the numbers already on the table — and it is the fastest way to find out whether you want to work here.

FrogNet's current release caps a pond at about fifty-eight nodes. Sixteen if the broker runs more than one pond. That is lower than it should be, it comes from an allocation algorithm we believe is the wrong one, and the replacement is in development.

The cause is that carrier addresses are allocated per tunnel, and tunnels in a full mesh grow as the square of the nodes. Which makes address space a terrible lever — you buy nodes back at a square root:

changetunnelsnodes
stop wasting half of each block2×1.4×
use the whole reserved range5×2.2×
hand transit all of 10/8256×16×

That last row settles it. Two hundred and fifty-six times more room — every address the mesh itself lives in, which is plainly impossible — would buy sixteen times the nodes. The size of the address space is not what is wrong. Allocating anything at all per tunnel is what is wrong.

The replacement moves allocation from per tunnel to per node: one carrier address per node instead of eight per tunnel, one WireGuard interface per pond instead of two per tunnel. Consumption goes from quadratic to linear, and the ceiling becomes the one the addressing plan implies — roughly fifty-nine thousand five hundred nodes. A thousand times the current limit, not because the space got bigger, but because it stopped being spent quadratically.

What is actually open. Whether permitted address ranges narrow everywhere or only at the broker's end. Whether a node's carrier address can be shared across its interfaces without the return path becoming ambiguous. What allocation looks like per node, and what has to change in the broker's namespace to match. Those are unsettled, and the answers aren't written down anywhere yet.

It is a good shape for someone arriving new: bounded to one allocator, one namespace builder, and the routes they install; measurable, because a topology that fails on the current algorithm and passes on the replacement is an oracle; and arithmetic before it is opinion, so a proposal gets argued on merit rather than on who made it.

If you read that table and immediately wanted to argue with it, you're the person this is addressed to. Bring the argument — tick Addressing and scale on the licence page, or write to me directly at john@fawcettinnovations.com. The full derivation is Appendix K of the build manual.

Somewhere to be

A guild needs a room. Here is the room.

Programmers don’t work alone. The difference between a following and a guild is that a guild talks back — in public, on the record, where a disagreement can be settled by someone running the thing rather than by whoever spoke last. Four rooms, kept separate on purpose so the person debugging a radio link isn't wading through protocol philosophy to find their answer.

01 · The workbench

Building on it

You have a node running and you're writing something. Handlers, tuples, FrogNet Memory, what the shape of an UnREST application actually is. Working code beats a well-argued question here.

02 · The bench test

Hardware & RF

Radios, antennas, bearers, field deployments — what held up at range and what didn't. Dan lives in this one. Bring the link budget and the photo of the mast.

03 · The gate

Patches & proofs

Where "better" gets settled. Post the oracle, the topology, and the numbers; the simulator decides. Claims without a harness run get moved here and left alone until they have one.

04 · The long table

Protocol & direction

The specification, the freshness classes, the election rules, where the standard should go under the Foundation. Slower, more argumentative, and the one that outlives all of us.

One rule covers all four: bring the thing you ran. Not the thing you read, or the thing you assume. This is a room for people who own a network.

Ask for an invite →Get the source →

The forums open with the first public release. Until then, write to me directly — early participants get in first, and I answer everything myself.

If you'd rather send money than patches

There is no funding behind this.

No investor, no grant, no institution. The hardware was bought, the nodes were shipped, the VPS gets paid for monthly, and the books were written on time nobody paid for. If the work is worth something to you and you'd like it to keep going, there is somewhere to send a few dollars.

What it pays for is unglamorous and specific: brokers and bandwidth, radios and antennas for the range tests, boards for the people doing bring-up on platforms I don't own, and the postage to get hardware into the hands of somebody who will push it somewhere I can't. Nothing here is behind a paywall and nothing will be — the books stay free, the licence stays free, and a donation buys you no standing in the guild that running the software doesn't already give you.

It is also entirely optional, and the more valuable contribution is still a reproduction case or a topology that breaks something. If you have neither the money nor the time, take the books anyway. That was always the deal.

Support the work →Or just take the books →

Goes to DisasterComm. No tiers, no perks, no subscription.

How "better" gets settled

Better is demonstrated, not argued.

A falsifiable simulator ships with FrogNet, and it is not just how I validate my own work — it is the impartial ground where your claim gets tested. Pass the same oracles, run the same harness, beat the numbers. No personality contest, no maintainer's opinion, no thread.

That is what makes "I welcome contributions that can prove a better algorithm" a real offer instead of a nice sentence. There is a gate, the gate is public, and it does not care who either of us is.

Support the work

Not everyone contributes with a patch — and that's fine.

FrogNet has been built without outside money: two people, our own hardware, our own nodes, our own time. The books stay free, the source stays free, and the protocol still goes to an open standard — none of that is changing. But nodes, radios, and the hosts that keep the test network running all cost real money. If the work is worth something to you and a patch isn't your contribution, a donation keeps the lights on and the radios paid for.

Donate to development →
The simulator & test gate →
Who holds what

The code has a keeper. The protocol does not.

Because a developer deciding whether to invest a year deserves to know exactly what could be taken away from them.

Open, with a keeper — on purpose

The code

The source is published under the GPL. What I hold is not the code but the direction: I steer the reference implementation, and I'll say without flinching that this is a benevolent-dictator phase. Every project that stayed coherent had a keeper early; committees build piles. One mind held this whole shape, and for now that is why it hangs together.

Open — and going further open

The protocol

The wire is headed for a versioned open standard under the FrogNet Foundation, so it ends up owned by the people who use it — not by me. The thing you'd fear losing is the thing being given away.

"This is an initial implementation. I do not claim it is the best, or even the only, way to solve any or all of the many problems that had to be solved for this to work. What I do claim is that it appears to work, and work both well and correctly. I welcome contributions that can prove a better algorithm, and I want to engage with those developers. Linux has many subsystems; so do I."

— John W. Fawcett, on the posture

And the state of the work

Don't trust me — check it. The books derive it from first principles, the licence is the GPL, the protocol is becoming a public contract, and the simulator lets you falsify me. So here is the part a brochure would leave out: FrogNet is broadly exercised in general, and thinly tested in specifics. The media path is the deep-tested exception — hardened, and on it these ideas bought roughly 9×. If one path does that, the rest is the opportunity. Hardening the specifics is precisely the work I am inviting people into, and I would rather say that now than have you find it later.

The door

One mind can hold a fabric. It takes a guild to harden one.

Take the books, take the source, run the simulator, and find the seam that annoys you most. Then tell me I'm wrong with a patch — that is the whole invitation, and it is the only one I have.

Get the source →Start with the books →

Or write to me directly — john@fawcettinnovations.com

Contact

Get in touch.

There is nothing to request: the source is on the download page, under the GPL. This page is for everything else — hardware, services, or a question. The form below composes an ordinary email to me, and I read every one myself.

Direct line

CompanyFawcett Innovations LLC
CAGE code1A5Y5
LocationBurien, Washington · Pacific time
Typical responseWithin a couple of business days

What happens next

  • The form opens your mail client with everything filled in — review and send.
  • I reply from john@fawcettinnovations.com — usually within a couple of business days.
  • Commercial or engineering need? Say so and we'll set up a call.

Prefer to write it yourself? Open a blank email →

Nothing to ask for. The source is on the download page.
— no funnel, no sales call, no catch