Skip to main content

Runpeek

Stream your tqdm progress bars to any browser, realtime. Zero config, anonymous by default.

pip install runpeek-sdk
from runpeek import tqdm

for epoch in tqdm(range(epochs)):
    train_one_epoch()

# prints: runpeek ▶ https://runpeek.app/b/<uuid>  (expires 30 min after the last update; 'runpeek login' saves runs)

Or leave your code completely untouched:

import runpeek
runpeek.patch()  # every tqdm bar in this process now streams

Open the printed URL on your phone. Done.

Runs

runpeek.start_run("train-resnet")  # one link for every bar in this process
runpeek run -- python train.py --epochs 30

A run shows the process lifecycle next to its bars and closes with the real exit code. runpeek run wraps any command, streams its stdout/stderr and patches tqdm in the child without code changes.

Alerts

runpeek.start_run("train-resnet")
runpeek.notify("https://discord.com/api/webhooks/...")  # finished or failed
runpeek.notify("https://hooks.slack.com/services/...", events=("failed",), stall_after_minutes=15)

Discord and Slack webhooks get a formatted message, any other URL receives the raw JSON event. stall_after_minutes (1 to 1440) also alerts when the run goes silent that long. notify() needs an active run and returns whether the webhook was registered. RUNPEEK_NOTIFY (comma-separated URLs) registers webhooks for every run, runpeek run included.

Save runs to your dashboard

runpeek login    # approve once in the browser
runpeek whoami   # the account your runs are saved to

Once logged in, every script that shows a bar is saved as a run named after the script, next to your start_run() and runpeek run runs. On servers and CI, set RUNPEEK_TOKEN instead (create a token on the dashboard's Setup page). runpeek logout removes the saved login.

Notebooks, IPython and the Python REPL are the exception: bars there stay anonymous, so an idle kernel never becomes a run. To save an experiment from a notebook, call runpeek.start_run("my-experiment") before the loop and runpeek.end_run() when it's done.

Free accounts keep 7 days of history, Pro ($9/mo) keeps a year. Over the monthly saved-run limit a run still streams live, it just isn't saved.

Notes

  • Bars are addressed by unguessable UUIDs. No account needed, logging in is optional.
  • Heartbeats are throttled (~0.75s) and sent from a daemon thread; your loop never blocks on the network, and send failures never raise into your code.
  • An unsaved bar or run expires 30 minutes after its last heartbeat.

Config (all optional)

import runpeek
runpeek.setup(endpoint="https://runpeek.app", link_base="https://runpeek.link", min_interval=0.75, token="rpk_...")

Env vars: RUNPEEK_TOKEN, RUNPEEK_ENDPOINT, RUNPEEK_LINK_BASE, RUNPEEK_MIN_INTERVAL, RUNPEEK_NOTIFY, RUNPEEK_DISABLE=1. Printed view links use the link base; it defaults to the endpoint itself when unset, so self-hosted setups keep working. A token is picked from setup(token=...), then RUNPEEK_TOKEN, then the login saved by runpeek login (~/.config/runpeek/config.json).

Previously published as tqdm-live; pip install tqdm-live now installs this package.

Metadata

Release files for runpeek-sdk 0.8.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 runpeek-sdk 0.8.0
File Size Uploaded Provenance Actions
runpeek_sdk-0.8.0.tar.gz 30.3 kB With provenance Details for runpeek_sdk-0.8.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for runpeek-sdk 0.8.0
File Interpreter ABI Platform Actions
runpeek_sdk-0.8.0-py3-none-any.whl Python 3 none any Details for runpeek_sdk-0.8.0-py3-none-any.whl

Total release size: 47.3 kB

Release files / runpeek_sdk-0.8.0.tar.gz

Download URL runpeek_sdk-0.8.0.tar.gz
Size 30.3 kB
Tags Source
SHA-256 checksum
How to use checksums
32492bbc40e40d3728c9ea13b790e8a7a234bdd0435b54ed93cb84a2acc50e4a
BLAKE2b-256 checksum
How to use checksums
d1f907a1698ab504c86ee8e05b28eead596dcaab777a7b32a35720a71a72dcf8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 30, 2026.

Transparency log

Release files / runpeek_sdk-0.8.0-py3-none-any.whl

Download URL runpeek_sdk-0.8.0-py3-none-any.whl
Size 17.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a73cc0aa586a0a33c89c04c69ea196bbad8554dfafd02b10c9f921e8ce815265
BLAKE2b-256 checksum
How to use checksums
5004f8e1ac2092478b90009b6338cc986aa4dc9c598b3c423c9b44ac56d96a9c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 30, 2026.

Transparency log

Security for runpeek-sdk 0.8.0

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.

Full provenance

Both files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for runpeek_sdk-0.8.0.tar.gz

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 30, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.8.0 This release

2 release files Full provenance

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