Telemetry Mod records small, stable JSON telemetry events from a running Factorio game or server. It is designed for operators and local integrations that need observable events without changing game prototypes. An opt-in checkbox in the programmable-speaker interface controls speaker telemetry.
What it records
- Player join, leave, AFK, death, and strict desync events.
- Research and enemy-evolution updates, including threshold crossings.
- Programmable-speaker alerts when explicitly enabled per speaker.
notifyevents emitted by other runtime mods through the stabletelemetry_modremote interface.
Choose one, two, or all three outputs
- JSONL is enabled by default. It keeps the existing
script-output/telemetry.jsonlcontract, including one JSON object per line, so existing relays remain compatible. - UDP is an optional best-effort localhost datagram for every event. It sends the same JSON object as JSONL, without the trailing newline. Start Factorio with
--enable-lua-udp=34198; the receiver listens on the separately configured destination port (default34199). - RCON is an optional pull interface. With RCON output enabled, run
/telemetry-export [limit]through RCON to receive one JSON envelope containing the newest buffered events. It never pushes asynchronously and never consumes the buffer.
Each output is independently configurable at runtime. Turning JSONL off means the mod does not touch the telemetry file. UDP failures, a missing UDP startup flag, or an unavailable UDP API are contained: they are logged once and do not stop the game, JSONL, or RCON.
Requirements and compatibility
- Factorio 2.1; version 0.3.0 was tested on 2.1.24. For Factorio 2.0.76–2.0.x, use Telemetry Mod 0.2.0.
- No data stage changes and no required dependencies beyond base Factorio.
- UDP is deliberately localhost-only and requires the explicit Factorio startup flag above.
- RCON must be enabled and secured by the server operator. Treat exported telemetry as operator data.
Configuration
Runtime-global settings control JSONL, UDP, and RCON independently:
telemetry-output-jsonl-enabledtelemetry-output-udp-enabledtelemetry-udp-porttelemetry-output-rcon-enabledtelemetry-rcon-window-events
The shared in-memory buffer remains bounded by the existing event-age and byte limits. An RCON request can therefore return fewer events than its requested window.