Skip to main content

Remote progress bar tracking — wrap your loop, watch from anywhere

Project description

Fernsicht (Python)

Remote progress tracking over WebRTC. Wrap your loop, get a shareable URL, watch from anywhere.

Install

pip install fernsicht

Quick Start

from fernsicht import blick

# Wrap any iterable
for item in blick(range(10000), desc="Training"):
    process(item)

# Allow up to 4 concurrent viewers
for item in blick(range(10000), desc="Training", max_viewers=4):
    process(item)

# Manual updates
from fernsicht import manual

bar = manual(total=100, desc="Uploading")
for chunk in stream:
    upload(chunk)
    bar.update(len(chunk))
bar.close()

# Context manager
with blick(total=500, desc="Epochs") as bar:
    for batch in data_loader:
        train(batch)
        bar.update(len(batch))

A URL like https://.../#room=<id>&role=viewer is printed when the bar starts. Open it on your phone or another machine to watch live progress including elapsed time, ETA, rate, and item count.

Configuration

No configuration is required for the default hosted node — the SDK points at https://signal.fernsicht.space out of the box.

Self-hosting

To use your own signaling server:

export FERNSICHT_SERVER_URL="https://your-signal-domain"

Authenticated session endpoint

If your server requires an API key on POST /session:

export FERNSICHT_SESSION_API_KEY="your-api-key"

Viewer limits

  • Default is max_viewers=8 (matches the R SDK and CLI defaults).
  • Pass max_viewers=1 for a single-viewer-only room, or any value up to the server's MAX_VIEWERS_PER_ROOM cap.
  • The server enforces an upper bound via MAX_VIEWERS_PER_ROOM.

How it works

  1. blick() calls POST /session on the signaling server, which creates a new room and returns a sender_secret.
  2. A background thread polls GET /poll/{room}?secret=… every ~25 seconds to check for viewer connections.
  3. When a viewer opens the link, it posts a WebRTC offer; the sender thread picks it up, creates an answer, and completes the handshake.
  4. Progress data flows directly over the WebRTC DataChannel — the server is never in the data path.

No persistent connection is held by the SDK. Between polls, the background thread is idle.

Other ways to use Fernsicht

Don't want to add a blick() import? Two alternatives:

  • CLIfernsicht run -- python train.py wraps any command and auto-detects tqdm/[N/M]/percent-style progress with no code change. See cli/README.md.
  • Rremotes::install_github("MuteJester/Fernsicht", subdir="publishers/r") for the R sibling SDK.

All three speak the same wire protocol; rooms / viewer URLs / hosted defaults are identical.

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

fernsicht-0.1.2.tar.gz (28.4 kB view details)

Uploaded Source

Built Distribution

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

fernsicht-0.1.2-py3-none-any.whl (25.6 kB view details)

Uploaded Python 3

File details

Details for the file fernsicht-0.1.2.tar.gz.

File metadata

  • Download URL: fernsicht-0.1.2.tar.gz
  • Upload date:
  • Size: 28.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for fernsicht-0.1.2.tar.gz
Algorithm Hash digest
SHA256 55554f91d8e5b87940e9aefd7ae6de0d4b4617a28cf5182c71547a8f3b88841b
MD5 fc890894ea4057481baa19b914f243dd
BLAKE2b-256 adaf69b40c057d13ccd8692c13957385ae2061267513c85bfa8b5decd4699551

See more details on using hashes here.

Provenance

The following attestation bundles were made for fernsicht-0.1.2.tar.gz:

Publisher: python-release.yml on MuteJester/Fernsicht

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

File details

Details for the file fernsicht-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: fernsicht-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 25.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for fernsicht-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 78b611c7b7084f6344edb0abc1fcb280907ec0b006c389c2c723f95fa7b12371
MD5 d435f93818ad32bb7d475b36b4b98262
BLAKE2b-256 55fd7c023a8c32ea954986163cf9cd70156144aa38d1eb8e04df443c8591a844

See more details on using hashes here.

Provenance

The following attestation bundles were made for fernsicht-0.1.2-py3-none-any.whl:

Publisher: python-release.yml on MuteJester/Fernsicht

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