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=1for a single-viewer-only room, or any value up to the server'sMAX_VIEWERS_PER_ROOMcap. - The server enforces an upper bound via
MAX_VIEWERS_PER_ROOM.
How it works
blick()callsPOST /sessionon the signaling server, which creates a new room and returns asender_secret.- A background thread polls
GET /poll/{room}?secret=…every ~25 seconds to check for viewer connections. - When a viewer opens the link, it posts a WebRTC offer; the sender thread picks it up, creates an answer, and completes the handshake.
- 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:
- CLI —
fernsicht run -- python train.pywraps any command and auto-detects tqdm/[N/M]/percent-style progress with no code change. Seecli/README.md. - R —
remotes::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.
Metadata
Release files for fernsicht 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| fernsicht-0.1.2.tar.gz | 28.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| fernsicht-0.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 54.0 kB
Release files / fernsicht-0.1.2.tar.gz
| Download URL | fernsicht-0.1.2.tar.gz |
|---|---|
| Size | 28.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
55554f91d8e5b87940e9aefd7ae6de0d4b4617a28cf5182c71547a8f3b88841b
|
|
BLAKE2b-256 checksum How to use checksums |
adaf69b40c057d13ccd8692c13957385ae2061267513c85bfa8b5decd4699551
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.12.9
|
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 Apr 23, 2026.
Transparency logRelease files / fernsicht-0.1.2-py3-none-any.whl
| Download URL | fernsicht-0.1.2-py3-none-any.whl |
|---|---|
| Size | 25.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
78b611c7b7084f6344edb0abc1fcb280907ec0b006c389c2c723f95fa7b12371
|
|
BLAKE2b-256 checksum How to use checksums |
55fd7c023a8c32ea954986163cf9cd70156144aa38d1eb8e04df443c8591a844
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.12.9
|
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 Apr 23, 2026.
Transparency log