The FrogNet Monitor

Run it and you are watching the pond think.

It writes nothing, owns nothing, and holds no state that outlives a keystroke. Everything on the screen came out of FrogNet Memory a moment earlier, using two HTTP calls and a name — the same calls any application of yours would make. It cannot find out which node wrote what it is showing you.

Two calls and a name
Two calls and a name

The FrogNet Monitor — video 7 of the series.

Video 7 of the series — not required to get a FrogNet running, and the best fundamental introduction to working with FrogNet Memory anyway.

Current implementation: FD&F and the network path

What to inspect.

For each participant, inspect its identity, name, session aliveness, observed addresses, capabilities and current role. For paths, inspect the graph’s chosen links, exit, routes and hub state. A published member is not a measurement of every possible end-to-end path.

Region and legacy monitors.

FD&F has fdf-monitor, fdf-ls and a browser dashboard. The existing FrogNet monitor also displays device rows through region-derived hosts data. The cleanup plan proposes consolidating the monitor’s inputs further; it has not been completed in the baseline reviewed here.

/opt/fdf/bin/fdf-monitor --once
/opt/fdf/bin/fdf-monitor --once --json
/opt/fdf/bin/fdf-ls --watch

Recorded visibility.

The October 12 Windows demonstration shows the PC in the hosts file and monitor, the live topology map and its network relationships. The Android device appears in /etc/hosts; one earlier take says its monitor row is missing. Keep that presentation issue distinct from whether the Android member and call worked.

Reset changes the view.

When a session ends, the manager removes its session-owned state. When a memory world changes, the application’s view must be rebuilt according to its contract. A stale monitor snapshot must not be treated as authority after that change.

§01 · Two calls and a name

Everything else on this site asks you to accept an architecture. This asks you to look at one program.

The Monitor has no protocol in it at all — only names, reads, and a screen. Each machine writes its own state into the memory; the Monitor is an ordinary reader of the same memory every program reads. The same record, from two viewpoints, is the whole trick — and in the video a live degraded peer is diagnosed on camera with nothing but that.

A conventional monitor interrogates managed devices. This one does not. The devices independently publish their own truths and the Monitor derives a view from them. If a monitoring system built on FrogNet spends its time polling individual machines through device-specific endpoints, it has bypassed the programming model demonstrated here.

Look at what is not in it. The values are directly addressable, so there is no service to query and none to keep alive. Nodes appear and disappear as the topology changes and the Monitor shows them joining and leaving — with no membership service, no subscription, no registration step, no notification, and no membership code. Nothing told it a node had arrived; a value simply exists that did not before. The joining and leaving is not a feature that was implemented here. It is what reading state looks like when nodes come and go.

The write side — not the Monitor's

Every node publishes its own state under its own name. The Monitor never asks a machine anything; the machine already said it.

The read side — all the Monitor is

Read a value by name. Read a set by prefix. That is the complete surface — the two calls your application would make.

It is also the network's standing test. A dashboard that paints means the local proxy answered, the local daemon carried the request, the elected data host served it, and the far side's sensors were published. A column that goes blank is a layer telling you it stopped.

And it is the cheapest possible contribution: write your own reader, in any language, against two calls. If it disagrees with the Monitor, one of us has a bug worth having found. The full chapter is in the book — The Monitor — What the Network Looks Like From Here → · In the specification: §15, Reference Applications →

"C did not replace assembler — it uses assembler. You lose some of that exquisite control, and you gain so much more. That is what FrogNet Memory does for you."

From the Monitor video — the best statement of the thesis in the series

Watch the series → The programming surface →