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.
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.
Six places I'm worth the call.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
| Engagement | What you get | Fee |
|---|---|---|
| Architecture reviewStart here | Two 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 sprint | One 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 / integration | 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. | $35–60kscoped |
| Retainer | Standing availability once you are running in production — design authority, review, and the hard calls, without a full-time hire. | $6,500per month |
| Hourly | For work that can't be scoped up front. | $275per hour · $2,200/day |
| Expert witness | Patent 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.
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.
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.
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.

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.
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.
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.
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.
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.
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 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 →
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
- Discovery
- bounded HTTP walk
- Partition
- split & merge, automatic
- Install
- one script, offline
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.
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.
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.
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.
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.
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.
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
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.
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
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
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
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.
FrogChat
Group and direct messaging across the mesh — town or country — with no server holding the only copy.
The Family app
Presence map, shared calendar, photos, and a family wiki. Your people, your data, no cloud account.
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.
File sync
Transport-agnostic peer-to-peer file sync. The network is the rendezvous; no central server required.
Sensor bridges
MeshTastic / LoRa bridges write RF-delivered readings straight into shared memory as sensor rows.
Board games
Multiplayer state as governed memory — each player writes only their own intent, an elected engine rules the board.
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.
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.
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.
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.
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.
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 →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 →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.
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.
- 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
- The GPL source, plus
- The engineer who wrote the stack
- Custom handlers and hard problems
- Review, build, or fractional
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.
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.
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.
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 →
A fleet that thinks for itself.
The FrogNet briefings for uncrewed ground vehicles and autonomous fleets, in their original sequence.
FrogNet for FarSight UGVs
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
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.
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 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
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.
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
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 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
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.
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
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.
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.
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.
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.
UGV swarm autonomy
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.
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.
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.
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.
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 →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 →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 →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 →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.
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.
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.
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 →
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.
UnREST
The tuple-space layer — freshness classes, absence semantics, ordering boundaries, scope. Argue for a better rule.
BLDC-1
Structure learning and diffing. New data types derive in; a domain-tuned codec could beat the general one badly.
FNWP-1
Framing, opcodes, sequencing, fan-out. The protocol headed for an open standard.
SotF
The adaptive ladder. The deep-tested path — and the one with the clearest measuring stick.
FrogNet Memory
Current-state store on an elected host. Bounded staleness by design — sharpen the boundary.
Elections
Capability scoring and re-election. Where "who decides" gets settled; a better score is a real contribution.
Discovery, repair & tuning
Find, join, heal, optimize. Routing and planning people: this is your seam.
Sensor platform
Any sensor onto the fabric as first-class current state. Widest surface for new device work.
AI platform
Models reading and writing the live shared state directly — the substrate as the pipeline.
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 →
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.
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.
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.
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.

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.
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.
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:
| change | tunnels | nodes |
|---|---|---|
| stop wasting half of each block | 2× | 1.4× |
| use the whole reserved range | 5× | 2.2× |
| hand transit all of 10/8 | 256× | 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.
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.
The forums open with the first public release. Until then, write to me directly — early participants get in first, and I answer everything myself.
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.
Goes to DisasterComm. No tiers, no perks, no subscription.
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 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 postureAnd 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.
Or write to me directly — john@fawcettinnovations.com
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
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.
Nothing to ask for. The source is on the download page.