owgbot: a tiny BBS for the LoRa mesh

MeshCore coverage in Calgary has quietly gotten good. So the obvious next question: how can I do fun things with this now?

So I built a bot.

owgbot on GitHub

owgbot is a Go daemon on a Raspberry Pi Zero 2 W with a Heltec V3 hanging off USB serial. It speaks the MeshCore companion protocol directly (no client library — the serial framing is simple enough to just implement), and DMing it from any node gets you a slash-command interface that is, in spirit, a 1993 BBS reincarnated at 900 MHz.

What it answers to

Everything is shaped by the medium: replies chunk at 140 bytes, outbound is paced so the bot is polite about shared airtime, and every plugin is written to say things like a telegraph operator being charged by the word.

The parts I like

The whole thing installs itself: one static binary, sudo ./owgbot install, and the systemd unit, config, and service user appear. Updates ship over the air — an admin DMs /update from anywhere on the mesh, the bot pulls the release from GitHub, verifies the checksum, swaps itself, and DMs you back when it's online again. I have updated this thing from a phone with no internet connection, which still feels like a magic trick.

Plugins are one small Go package each: declare your commands, get a KV store and a reply function, done. The dev loop is a fake radio with a chat TUI, so none of it needs hardware on the desk.

Heltec V3 + Pi Zero 2 W. About $40 of hardware, sipping about a watt.

I think I need to make a Geocache out of this thing... somehow.

← back to the gemlog

← back to the home

---

Viewed 309 times (last updated 2026-08-11 · r2)