Skip to main content

Echohub

Echohub is a local-first telemetry deck built around Echopoint data. One Python engine owns fetching, caching, normalization and analytics; two renderers consume the same DashboardState:

  • Desktop app - native Qt (PySide6) app: compact, with its own chrome. The default echohub command.
  • TUI - the same pages in a true-color terminal, keyboard first. Works over SSH.

Network contract

GET /v1/health
       │
       ├── last_updated unchanged ──> use local store.json
       │
       └── last_updated changed ────> GET /v1/store once

With a token configured, the snapshot comes from GET /v1/private instead, which includes private repositories. A cached snapshot of the other kind is re-downloaded even if last_updated is unchanged.

Manual refresh is explicit:

REFRESH
  └─ POST /v1/refresh, repeated until Echopoint's due queue is empty
       └─ each call is one Worker run with a fixed fetch budget
  └─ verify last_updated
       └─ download the snapshot once only if changed

Desktop app

echohub opens the window straight away and checks Echopoint in the background, so a slow or unreachable server never blocks startup. The first run shows a welcome screen until the first snapshot arrives; after that the saved snapshot loads instantly. Failures are explained in plain words (unreachable, rejected token, and so on) while the last snapshot stays on screen.

TUI

echohub tui behaves the same way: it draws the saved snapshot at once, checks in the background, and quits immediately even mid-sync. It has the desktop app's eight pages in the same order and needs at least 80 × 24; from 100 columns it adds the sidebar, and wider terminals show more columns and side panels. Press ? on any page for its keys.

Configuration

Variable Default Purpose
ECHOHUB_SOURCE_URL / ECHOPOINT_URL production Echopoint Upstream base URL
ECHOHUB_REFRESH_TOKEN / ECHOPOINT_REFRESH_TOKEN unset Enables refresh and the private snapshot
ECHOHUB_CACHE_DIR / ECHOPOINT_CACHE_DIR %LOCALAPPDATA%\echohub or ~/.cache/echohub Snapshot location
ECHOHUB_TIMEOUT 20 Seconds for health and snapshot requests
ECHOHUB_REFRESH_TIMEOUT 120 Seconds for each upstream refresh call

Quick start

# Requires Python 3.11+

# Sync with the server
python run.py sync

# Run tests
python -m pytest

# Run the desktop app and the TUI
python run.py gui
python run.py tui

# Install the package locally
python -m pip install -e .
echohub

# Offline mode (no network access)
python run.py --offline gui
python run.py --offline tui

# Demo mode (no network access, no data)
python run.py --demo gui
python run.py --demo tui

Controls

Context Controls
Everywhere R refresh, C check changes, 1–8 switch page
TUI lists J/K or arrows, PgDn/PgUp, g/G top and bottom, / filter, S sort
TUI details Enter opens, Esc goes back, O opens on GitHub
TUI panes Tab or H/L switch pane (Languages, Inspector), H/L year (Contributions)
TUI help and quit ? lists the page's keys, Q quits
Desktop tables click a header to sort, double-click a row to open it
Desktop Constellation wheel zoom, drag a node or the canvas, double-click opens GitHub

License

MIT licensed.

Metadata

Release files for echohub 2.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for echohub 2.3.0
File Size Uploaded
echohub-2.3.0.tar.gz 155.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for echohub 2.3.0
File Interpreter ABI Platform
echohub-2.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 316.7 kB

Release files / echohub-2.3.0.tar.gz

Download URL echohub-2.3.0.tar.gz
Size 155.2 kB
Tags Source
SHA-256 checksum
How to use checksums
5cdc63a86220e21897d47b7eee30a9d897695e5d4b90900005e289280fcff064
BLAKE2b-256 checksum
How to use checksums
a855102052e6c75c3b4cbc81ec3d37d203d20bde1ee09b0ef220b0637e6a2a2d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 15, 2026.

Transparency log

Release files / echohub-2.3.0-py3-none-any.whl

Download URL echohub-2.3.0-py3-none-any.whl
Size 161.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e7f113270b21db69b2473a179ca4af237fea3839e5903aa69465c60568b7af38
BLAKE2b-256 checksum
How to use checksums
816bbcbd297e0e7a49e73bbcd6e81b88e51a8e4c374ce49b5fb3d9cfdeea4c3e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 15, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

2.3.0 This release

2 release files

2.2.1

2 release files

2.2.0

2 release files

2.1.0

2 release files

2.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page