Resources for developers and contributors to the Chicago Mesh network.
corescope — CoreScope packet analyzermosquitto — Standalone Mosquitto MQTT broker (port 1883)meshcore-mqtt-broker — WebSocket MQTT broker with JWT authmeshcore-health-check — Mesh Health Check appcaddy — Reverse proxy / TLS terminationmqtt.chicagooffline.com:1883 — Plain TCP MQTTwss://wsmqtt.chicagooffline.com/mqtt — WebSocket MQTT (JWT auth)corescope-dev — CoreScope dev instancemosquitto — Standalone Mosquitto MQTT brokermeshcore-mqtt-broker — WebSocket MQTT broker with JWT authmeshcore-health-check-dev — Mesh Health Check dev instancemeshmap-live — Live MQTT node map (yellowcooln/meshcore-mqtt-live-map)caddy — Reverse proxy / TLS terminationwss://wsmqtt-dev.chicagooffline.com/mqtt — WebSocket MQTT (JWT auth)Note: Both environments run the same stack — Mosquitto (plain TCP) + meshcore-mqtt-broker (WebSocket+JWT) + CoreScope subscribing to both. Dev and prod are on separate EC2 instances and must not share containers. Broker subscriber accounts: corescope (read), admin (debug).
main โ Development deployments (safe to push freely)prod โ Production deployments (promote from main)main (dev) or prod (production)deploy/chicagooffline)CORESCOPE_IMAGE_MODE=fork in deploy.shmqtt-bridge-implementation (PR #1249)observer-uplink-native-dev (native WiFi + MQTT, no Pi bridge needed)feature/ws-custom-brokerset mqtt.ws on|off, set mqtt.tls on|offchicagooffline-firmware (us-east-2)
# Push to main โ deploys to dev only
git push origin main
# Promote dev โ production
git checkout prod && git merge main && git push && git checkout main
# Manual workflow dispatch
gh workflow run deploy.yml -f environment=dev
gh workflow run deploy.yml -f environment=production
gh workflow run deploy.yml -f environment=dev -f reset_db=true
# SSH into EC2
ssh ubuntu@<ec2-ip> # prod or dev IP
# Pull latest changes
cd ~/chimesh-mqtt
git pull origin main # or dev
# Run deploy script
ENVIRONMENT=production bash deploy.sh # or ENVIRONMENT=dev
main branchgit checkout prod && git merge main && git push && git checkout mainssh ubuntu@<prod-ip>
# CoreScope logs
docker logs -f corescope
# MQTT broker logs
docker logs -f mosquitto
# Caddy (reverse proxy) logs
docker logs -f caddy
# Health Check logs
docker logs -f meshcore-health-check
ssh ubuntu@<dev-ip>
# CoreScope logs
docker logs -f corescope-dev
# Mosquitto logs
docker logs -f mosquitto
# WS MQTT broker logs
docker logs -f meshcore-mqtt-broker
# Health Check logs
docker logs -f meshcore-health-check-dev
# Caddy logs
docker logs -f caddy
Run our installer to set up packet capture with all Chicagoland MQTT brokers pre-configured. Supports companions, repeaters, and room servers:
bash <(curl -fsSL https://dev-landing.chicagooffline.com/install-observer.sh)
The installer detects your node type and runs the appropriate upstream tool (meshcore-packet-capture for companions, mctomqtt for repeaters/room servers) with 6 brokers pre-configured:
If you already have meshcore-packet-capture or mctomqtt installed, grab the config file:
Companions (.env format):
curl -O https://dev-landing.chicagooffline.com/00-chicagoland.env
cp 00-chicagoland.env ~/.meshcore-packet-capture/.env.local
Repeaters / Room Servers (TOML format):
curl -O https://dev-landing.chicagooffline.com/00-chicagoland.toml
sudo cp 00-chicagoland.toml /etc/mctomqtt/config.d/
Two direct connection methods are also supported:
MQTT Broker: mqtt://mqtt.chicagooffline.com:1883
Topic Pattern: meshcore/ORD/<node-pubkey>/packets
No authentication required. Works with any standard firmware or mctomqtt.
MQTT Broker: wss://wsmqtt.chicagooffline.com/mqtt (prod)
MQTT Broker: wss://wsmqtt-dev.chicagooffline.com/mqtt (dev)
Topic Pattern: meshcore/ORD/<node-pubkey>/packets
Requires WS-capable firmware (see emuehlstein/MeshCore feature/ws-custom-broker) or mctomqtt with WS support. JWT auth uses Ed25519 device keys — username format: v1_{PUBKEY}.
For detailed setup instructions, see:
Interested in contributing to the Chicago Mesh network infrastructure?