Skip to main content

A KinesisTail-like TUI for monitoring the EDDN live stream

Project description

EDDN Tail

A KinesisTail-like TUI for monitoring the Elite Dangerous Data Network (EDDN) live stream in your terminal.

Connects to EDDN's ZeroMQ PUB/SUB relay and displays all messages flowing through the network in real-time — useful for verifying your own submissions or just watching the galaxy's data flow.

EDDN Tail Demo

Installation

pip install eddn-tail

Or install from source:

pip install .

Or run directly without installing:

python eddn_tail.py [options]

Usage

# Watch all EDDN messages
eddn-tail

# Filter to Scan events only
eddn-tail -f Scan

# Filter by system name
eddn-tail -s Sol

# Filter by station name
eddn-tail -t Jameson Memorial

# Filter by schema
eddn-tail -S commodity/3

# Combine filters (AND logic)
eddn-tail -f FSDJump -s Sol

# Limit stored events (default: 500, max: 1999)
eddn-tail -l 1000

# Connect to beta EDDN
eddn-tail --beta

# Connect to dev EDDN
eddn-tail --dev

Keybindings

Key Action
/ Focus filter input (regex supported)
Esc Clear filter
p Pause/resume stream
d Toggle detail pane
e Export selected message JSON to file
Alt+L Set event storage limit (1–1999)
Ctrl+L Clear all received events
↑/↓ Navigate rows
Enter Show full message detail
q Quit

How it works

EDDN is a publish/subscribe message relay. When tools (like EDMC, EDDI, or Decky plugins) upload data to https://eddn.edcd.io:4430/upload/, the EDDN Gateway validates the message and broadcasts it over a ZeroMQ PUB socket on port 9500. This tool subscribes to that stream, decompresses the zlib-encoded JSON, and displays it in a scrollable, filterable TUI.

Service Upload URL Listener (ZMQ)
Live https://eddn.edcd.io:4430/upload/ tcp://eddn.edcd.io:9500
Beta https://beta.eddn.edcd.io:4431/upload/ tcp://beta.eddn.edcd.io:9510
Dev https://dev.eddn.edcd.io:4432/upload/ tcp://dev.eddn.edcd.io:9520

About the uploaderID column

EDDN relays do not broadcast the original uploaderID. The relay hashes it with a rotating nonce every 3 minutes (SHA-1(nonce + "-" + uploaderID)) before broadcasting, so the values shown in the Uploader column are 40-character hex strings — not commander names. Because the hash changes every 3 minutes, there is no reliable way to filter by uploader from the CLI. Use the in-app live filter (/) for short-term substring matching on any visible column value.

Event storage limit

By default, eddn-tail retains up to 500 events in memory. When the limit is reached, the oldest events are dropped (FIFO). You can change this at startup with -l/--limit (range: 1–1999) or at runtime with Alt+L. Lowering the limit at runtime immediately prunes excess events to the new cap.

When a live filter (/) is active, messages that don't match the filter are discarded on arrival — they are never stored. This means the storage limit applies only to messages you're actually interested in. Messages already in memory before the filter was activated remain until they age out via FIFO.

To inspect a message's full JSON payload, select a row and press Enter, or press e to export it to a file.

EDDN message format

Messages on the wire are zlib-compressed JSON with this structure:

{
  "$schemaRef": "https://eddn.edcd.io/schemas/journal/1",
  "header": {
    "uploaderID": "<40-char SHA-1 hash, rotates every 3 min>",
    "softwareName": "...",
    "softwareVersion": "...",
    "gameversion": "...",
    "gamebuild": "...",
    "gatewayTimestamp": "2026-05-10T22:36:19.745292Z"
  },
  "message": {
    "event": "Scan",
    "StarSystem": "Sol",
    ...
  }
}

Supported schemas: journal/1, commodity/3, outfitting/2, shipyard/2.

Development

pip install -e ".[dev]"
pytest

License

MIT © AwaNoodle

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

eddn_tail-0.3.0.tar.gz (34.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

eddn_tail-0.3.0-py3-none-any.whl (11.9 kB view details)

Uploaded Python 3

File details

Details for the file eddn_tail-0.3.0.tar.gz.

File metadata

  • Download URL: eddn_tail-0.3.0.tar.gz
  • Upload date:
  • Size: 34.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for eddn_tail-0.3.0.tar.gz
Algorithm Hash digest
SHA256 eedb5fdd9e5d8b71a75c9737859b2a79b80f9e653cdbc0246050fc3da45be97f
MD5 f1bb99c2973f040ce5a51f8bbf6693ae
BLAKE2b-256 d046de2d7dc0b5e3629f51a6ca3d5ca9b287f35fc3ae4b676a100b502aa5f2e9

See more details on using hashes here.

Provenance

The following attestation bundles were made for eddn_tail-0.3.0.tar.gz:

Publisher: release.yml on AwaNoodle/eddn-tail

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file eddn_tail-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: eddn_tail-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 11.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for eddn_tail-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b092e0acc97d9a6e64f48550c6e6ca2b7204af18555be567ba66eb182afb6eb0
MD5 103090dabf1e7513e5f91d798a666715
BLAKE2b-256 d2775fb0f2d24c2ae31248f4f379e5584b17b776230e61cc4df330b8fdd096b2

See more details on using hashes here.

Provenance

The following attestation bundles were made for eddn_tail-0.3.0-py3-none-any.whl:

Publisher: release.yml on AwaNoodle/eddn-tail

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page