anetbbs-monitor — the live node monitor
A live, auto-refreshing terminal view of every BBS node — think
Synchronet's uMonitor or Mystic's nodespy/mis server. Run it
directly on the server (or over SSH) to see who's connected, on what
protocol, from where, and what they're currently doing, without
opening a browser.
It's a new front end, not new tracking: the same NodeActivity data
the web admin's Control Center → NodeSpy panel and the in-BBS Sysop
Tools → Node Monitor already show and can kick from. All three read
and write the identical database rows, so a kick from any one of them
looks the same to the other two.
Launching it
anetbbs-monitor
# or, if the console-script entry point isn't on PATH for some reason:
python -m anetbbs.monitor.app
Same startup shape as anetbbs-cfg: a lightweight, DB-only app
context, not the full web server — fast even on a Raspberry Pi. No
login prompt of its own, for the same reason anetbbs-cfg has none:
whoever can already run a command on the box has at least as much
access as this tool could grant them.
What you're looking at
ANetBBS Node Monitor :: 2/8 online :: 21:04:35
Slot User Proto Peer Doing Since Idle
1 sysop ssh 10.0.0.5 reading Fido/GENERAL 14:02 0:02
2 guest42 telnet 203.0.113.9 door: LORD2 13:58 0:41
3 -- waiting for call --
4 -- waiting for call --
...
[Up/Down] Select [K] Kick [R] Refresh [Q] Quit
- Slot is the fixed node number (
1..BBS_NODES, default 8 — set
theBBS_NODESenvironment variable to change the pool size). The
screen always shows every slot, live or empty, matching the
multinode roster real terminal callers see. - Doing shows real detail where the game/menu code reports it
(current board, which door is running, MRC room, AFK state) — not
just the protocol name. - Since / Idle are how long the connection has been up, and
how long since its last heartbeat. - The screen redraws every second on its own; no key needed.
One honest limitation, not something this tool regresses: a
connection is invisible here until login succeeds — there's no
guest/anonymous browsing path in ANetBBS's tracking, so "waiting for
call" means the slot is genuinely unallocated, not "someone's sitting
at the login prompt." The web NodeSpy panel and the in-BBS Node
Monitor have this exact same limitation today.
Kicking a node
Select a live row and press K. You'll be prompted for a reason
(defaults to "Disconnected by sysop" if left blank); confirming sets
the same kick_requested/kick_reason flag the web NodeSpy panel's
kick button sets. The target session's own watchdog polls that flag
every 5 seconds and disconnects itself — same mechanism, same ~5
second delay, regardless of which of the three tools requested it.
See 09 — Multinode + NodeSpy for how the
node slot pool and NodeActivity tracking work underneath all three
surfaces (this tool, the web NodeSpy panel, and the in-BBS Node
Monitor).