The mesh asks. Kaon answers.
kaon is a lean always-on daemon that bridges a Meshtastic LoRa mesh node (USB serial, or a WiFi node over TCP) to a LAN-hosted Qwen LLM (vLLM, OpenAI-compatible endpoint). When someone DMs the node, kaon asks the LLM for a reply and sends it back over the mesh — with loop guards, per-sender rate limits, and mesh-friendly chunking.
One process, two threads: a reader thread never blocks on the LLM, and a single reply worker serializes all sends. A supervisor loop reconnects the node (serial or TCP) with stability-gated backoff. Over serial, each reconnect resets the node via DTR, so it's treated as expensive; over TCP it isn't. LLM calls are sent with thinking disabled; replies are chunked to a hard 190-byte (UTF-8) cap.
uv sync
uv run python llm_bot/bot.pyShutdown: SIGINT/SIGTERM closes the interface and exits cleanly.
Config: llm_bot/bot.toml holds the defaults; drop a
llm_bot/bot.local.toml (gitignored) next to it for machine-specific
overrides (port, LLM URL/model, prompts, limits).
uv run python -m unittest discover -s testsAlways-on on macOS via launchd:
llm_bot/scripts/install_launchd.sh # install
llm_bot/scripts/install_launchd.sh uninstall # removeLogs land in ~/Library/Logs/kaon.{out,err}.log.
llm_bot/README.md— configuration reference and operational detailsdocs/llm-bot-plan.md— design plan and decisionsdocs/serial-diagnosis.md— serial disconnect root-cause analysis