← back to homepage

What this is

Mishigami GMRS Network is a private, Michigan-only GMRS radio network — Raspberry Pi nodes, each wired to a real GMRS radio, linked over the internet so licensed members can talk across the state like one shared repeater. Built on AllStarLink 3, but deliberately fully isolated from the public AllStarLink network. Every node reaches the hub over a private WireGuard tunnel — no port forwarding, works behind ordinary home internet — with a self-service portal for registration and an admin panel for moderation and announcements, both detailed below.

2Hubs
11Member nodes
MI, OHStates covered

Features

A quick tour — click any of these, or just wait, and use the arrows any time to browse at your own pace. Clicking one jumps straight to its full writeup below.

Registration form screenshot

Self-service registration

New members request access with their GMRS callsign, and the form auto-fills their name and location straight from the FCC's public GMRS license database as they type — with a live search dropdown, not just an exact-match lookup. Physical nodes get a WireGuard key and an available node number checked in real time; app/IAX2 clients (DVSwitch Mobile, iaxRpt) skip hardware setup entirely and get mobile-app login credentials by email once approved.

Talk push-to-talk screenshot

Talk -- browser push-to-talk

No radio, no app install, no node hardware needed -- just a browser. Members log in with the same account as the directory, pick a hub from a dropdown, and hold a button to key up over a live audio/WebRTC call straight into that hub, same as any other node. The button locks out automatically while someone else is already transmitting, so nobody talks over another caller by accident.

Node directory screenshot

Live node directory

Every member node, its live status, and which hub it belongs to — pulled directly from this hub's own WireGuard tunnel state and Asterisk link table, not a public database this network was never registered with. Members can connect or disconnect any node straight from the browser, no radio commands needed.

Hub management screenshot

Multiple hubs, one admin panel

The network can run more than one independent conference bridge ("hub") at once — useful for splitting traffic by region or purpose — all created, renamed, and torn down from one page, with each hub's member count and current link activity visible at a glance.

AI moderation screenshot

AI-assisted moderation

Each hub can optionally run a local speech-to-text moderator (Whisper, running entirely on this hub's own hardware — audio never leaves the box) that listens for an admin-defined list of keywords per hub. A first offense plays a synthesized spoken warning directly through the offending node's own radio; repeated offenses within a configurable time window disconnect it automatically. Every match is logged with a transcript snippet and a playable audio clip.

Hub announcements screenshot

Hub announcements

Upload a recording in almost any format (wav, mp3, m4a, wma, mp4, and more) — or generate one instantly from typed text with local text-to-speech — and play it across every node linked to a hub. Fire it manually, on a repeating interval, or schedule exact dates and times (once, daily, weekly, or monthly), with a minimum-gap safeguard so an announcement can never be played too often. Delivery goes straight to each connected node's own radio, so a long announcement always plays in full, on every node, with no per-node setup required.

Jarvis admin controls screenshot

Jarvis, the AI voice assistant

A wake-word-triggered voice assistant that bridges onto any hub like a regular node — ask it a question over the air and it answers back, speech in, speech out. Wake-word detection and speech-to-text both run locally on this network's own hardware; the question itself is sent to Google's Gemini API for a short spoken answer, which is read-only by design — it has no tools and can't control anything on the network. The admin panel picks which hub it's currently listening on and moves it between hubs on demand, without bridging the hubs together in the process, plus a scheduled self-introduction announcement and a one-click live test of it.

Weather alerts setup screenshot

Weather alerts and conditions

Opt in per node, per ZIP code: a spoken severe-weather warning plays automatically the moment the National Weather Service issues one for that area, and/or a scheduled current-conditions report (temperature, wind, humidity, pressure) on an interval you pick. Alerts come straight from NWS, the actual issuing authority for U.S. warnings; conditions come from Open-Meteo. Either way it plays out that node's own radio only — never relayed to a hub or any other node — so it's entirely opt-in with no network-wide side effects.

Also worth knowing Software updates are pushed fleet-wide by the operator over the network's own private tunnel — members never SSH in, run a command, or do anything themselves. The same access means real remote support: most problems get diagnosed and fixed without anyone needing physical access to the node. Every node also gives its own owner a real root shell, right in the browser, from that node's own setup page — full access to your own hardware, no SSH client or key required.
Hardware and network stack diagram screenshot

Hardware & network stack

A full diagram of the three pieces that run this network — member nodes, the hub, and the AI-voice box — what each one talks to, and every outside internet service any of them reach out to (weather data, the FCC license database, Google's Gemini API, and so on). See the full diagram →

Built with

This network doesn't reinvent much — it wires together a handful of mature open-source projects and a couple of free public data sources. Here's what's actually running under the features above.

AllStarLink 3

Asterisk + app_rpt + DAHDI — the actual repeater-linking engine. Every node's radio keys up and audio bridges through this; the network is really just ASL3 wired into a private overlay instead of the public AllStarLink network.

WireGuard

The private overlay every node tunnels through to reach the hub — what lets members join from behind ordinary home internet (including carrier-grade NAT) with no router configuration at all.

Flask + Waitress

Runs the registration portal, the admin panel, the node directory, and every node's own local setup wizard — the web pages you're reading and clicking through right now.

SQLite

The portal's single source of truth — one database drives the WireGuard peer list and the AllStarLink node directory together, so the two can never quietly drift out of sync.

allmon3

Each node's own live status dashboard — link state and keyup activity, with a web-based control panel, per node.

Piper

Neural text-to-speech, run locally on this network's own hardware. Powers hub announcements, the scheduled current-conditions weather report, and Jarvis (the AI voice-assistant bridge).

Whisper

Local speech-to-text, also fully self-hosted — audio never leaves the hub. Powers the optional AI-assisted keyword moderation on each hub.

openWakeWord

Local, fully offline wake-word detection — listens for Jarvis's trigger phrase on the hub's live audio, on this network's own hardware.

faster-whisper

Local speech-to-text for Jarvis specifically — transcribes the question after the wake word, entirely on this network's own hardware, before anything is sent anywhere else.

Google Gemini

The one piece that isn't self-hosted: Jarvis's transcribed question goes to Gemini's API for a short spoken answer. Read-only by design — the model has no tools and can't control anything on the network.

espeak-ng

Lightweight, fully offline text-to-speech run on each node itself — station ID and voice-ID announcements, so identification still works even if a node briefly loses its link to the hub.

hostapd + dnsmasq

Powers every node's always-on setup Wi-Fi access point — the thing you join with a phone to run the onboarding wizard, no SSH or prior configuration needed.

ttyd

A real terminal, in the browser, for each node's radio-programming menu — the "no SSH needed" part of node setup.

National Weather Service + Open-Meteo

Free public weather data behind the optional per-node weather feature — NWS for severe weather alerts (the actual issuing authority for U.S. warnings), Open-Meteo for the scheduled current-conditions announcement.

FCC ULS database

The public GMRS license record the registration form searches to auto-fill a new member's name and location straight from their callsign as they type.