All software
MeshCore Beacon

MeshCore Beacon

Monitoring / Management Beta

Beacon

Real-time LoRa mesh network observation stack: a Go backend subscribes to MeshCore MQTT brokers, decodes and deduplicates packets, stores nodes, routes, traces and channel messages in PostgreSQL, and streams live events via WebSocket and REST API — paired with a React web frontend for packet inspection, node tracking, channel messages, stats and mesh maps.

Kind
Monitoring & Management
Maturity
Beta
Languages
Go TypeScript
Licensing
Open source
Latest version
1.5.4 · 2026-06-24
License
AGPL-3.0
Platforms
Docker Linux Web

Capabilities

Interfaces

  • Web
  • API

Connections

  • MQTT
  • WebSocket
  • HTTP

Capabilities

  • Monitoring
  • Telemetry
  • Packet analysis
  • Mapping
  • Bridging

Install

Releases

from GitHub · updated 2026-07-03
  1. v1.5.4 # Latest 26 days ago · 2026-06-24 15:11 UTC

    Fixes

    • Packet Observation Duplication - The packet observations were being constrained as unique on observer, packet hash and the heard at TS. The TS has been removed and a migration is in place to clean up bad data.

    Full Changelog: https://github.com/MeshCore-Beacon/beacon-server/compare/v1.5.3...v1.5.4

  2. v1.5.3 # 1 month ago · 2026-06-20 17:41 UTC

    Features

    • Discovery request/response parsing — Beacon now parses DISCOVER_REQ/DISCOVER_RESP control payloads from the mesh, feeding directly into neighbor data.
    • Neighbor SNR tracking — a new optional snr column on node_neighbors, now populated from three independent sources:
      • discovery responses observed by Beacon
      • zero-hop adverts seen directly by observers
      • hop pairs derived from TRACE packets
    • Observer online check uses last seen — ingest now factors in an observer's last-seen timestamp when determining online status, rather than relying solely on connection state.

    Fixes

    • Node summary neighbor counts — deduplicated neighbor counts in node summaries that were previously inflated by duplicate rows.
    • Release image publishing — fixed the GitHub Actions release workflow so built images are pushed to the public registry correctly. (Thanks, @MrAlders0n!)

    Maintenance

    • Bumped meshcore-go to v1.0.8.
    • SECURITY: Bumped github.com/go-chi/chi/v5 from v5.2.2 to v5.2.4 (dependabot).
    • Documented the remaining parsed ingest payload structs.
    • Added the new neighbor snr field to the swagger docs.

    Full Changelog: https://github.com/MeshCore-Beacon/beacon-server/compare/v1.5.2...v1.5.3

  3. v1.5.0 # 1 month ago · 2026-06-15 22:28 UTC

    Testing

    This release is primarily a testing overhaul, bringing project coverage from minimal to ~46% with a solid foundation across all major layers.

    Infrastructure

    • Introduced sqlc.Querier interface in db.Store, enabling mock-based testing of the database layer without a real PostgreSQL connection
    • Added gomock-generated mock for sqlc.Querier at db/sqlc/mock
    • Converted stubReader in handlers tests to a configurable struct with function fields, eliminating the need for a separate funcReader type
    • CI coverage filtering now correctly excludes generated code (db/sqlc, docs, iatadb/gen) for accurate badge reporting

    Coverage by package

    • db — store mapping logic, pagination, nil pointer handling, conditional field mapping, type conversions across channels, observers, nodes, packets, traces, routes, scopes, stats, and IATAs
    • internal/api/handlers — validation paths and happy paths across all handlers including messages, packets, observers, nodes, stats, routes, scopes, and traces
    • internal/cachegetOrSet cache hit/miss/error/corrupt-entry behaviour, TTL resolution fallback chain, node and observer invalidation
    • internal/config — YAML loading, config seeding, default resolution extracted into testable Resolve function
    • internal/hub — full runtime behaviour including broadcast, subscription lifecycle, lagged notification, OR-scope semantics
    • internal/ingest — pure function coverage for payload parsing, transport code derivation, capability detection, observer type normalisation
    • internal/keystore — key derivation, fingerprinting, store lookup, EntryExists (moved from main)
    • internal/scopestore — load, replace, copy-on-read semantics
    • internal/background — scheduler task execution and context cancellation
    • internal/ws — IP limiter acquire/release/cleanup logic

    Refactoring

    • config.Resolve() extracted from main.go to derive runtime defaults with fallback chain — now tested and used at startup
    • keystore.EntryExists() moved from main.go into the keystore package where it belongs

    Full Changelog: https://github.com/MeshCore-Beacon/beacon-server/compare/v1.4.1...v1.5.0

Show all 12 releases →

Project signals

popularity 2026-07-20 verification 2026-07-20
GitHub stars
7
Forks
2
Watchers
1
Open issues
22
Contributors
4
Release downloads
3
Latest downloads
1
Source available
Yes
Releases available
Yes
Signed releases
No
CI builds
Yes
Documentation
Yes
  • API authentication is not yet implemented; intended for trusted internal or reverse-proxy deployments.
  • Full-stack Docker Compose configs (server + web + PostgreSQL + Redis + Caddy TLS) are in the beacon-docs repo.
  • Swagger UI available at /swagger/index.html on a running instance.

Tags