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.
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.
FCC callsign lookup and live node-number checks — no manual approval typing.
Key up and listen straight from a phone or laptop browser, no radio required.
Every member node's live status, straight from the hub's own state.
Run more than one independent conference bridge, managed from a single page.
A local speech-to-text listener that catches and warns on the fly.
Scheduled or on-demand audio, played out to every connected node.
Ask it a question over the air, get a spoken answer back.
Severe-weather warnings and scheduled conditions, opt-in per node.
A full diagram of how traffic actually flows, plus live system stats.
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.
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.
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.
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.
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.
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.
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.
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.
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 →
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.
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.
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.
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.
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.
Each node's own live status dashboard — link state and keyup activity, with a web-based control panel, per node.
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).
Local speech-to-text, also fully self-hosted — audio never leaves the hub. Powers the optional AI-assisted keyword moderation on each hub.
Local, fully offline wake-word detection — listens for Jarvis's trigger phrase on the hub's live audio, on this network's own hardware.
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.
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.
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.
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.
A real terminal, in the browser, for each node's radio-programming menu — the "no SSH needed" part of node setup.
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.
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.