Every Python script deserves a voice. Transparent, narrated pipeline execution.
Project description
Every Python script deserves a voice.
stepcast wraps any Python function in a named, observable step. When a pipeline runs, each step announces itself โ label, live output, duration, pass/fail โ in the terminal, Colab notebook, or your local web dashboard.
Zero required dependencies. Works on every OS. Readable by everyone.
๐ Table of Contents
- Preview & Presentation
- Features
- Installation
- Quickstart Guide
- Web Dashboard
- AI Narration
- Documentation & Community
๐ธ Preview & Presentation
See stepcast in action solving real problems with beautiful observability.
1. Terminal Output with rich ๐ฅ๏ธ
Replace this with a
.gifof your terminal runningpython examples/data_etl.py.

2. Local Live Dashboard ๐
Replace this with a screenshot of the
stepcast servedashboard showing a run history.

3. AI Step Narration ๐ค
Replace this with a screenshot showing the
๐ฌAI narration output.

โจ Features
| Feature | Details |
|---|---|
| ๐ก Live output streaming | Every print() inside a step streams to terminal in real time |
| โ Pass / โ Fail / โญ Skip | Clear visual status with timing for every step |
| ๐ Retry with backoff | retries=3, retry_delay=2.0 with exponential backoff |
| โฑ๏ธ Timeout enforcement | Per-step timeout raises StepFailedError cleanly |
| ๐จ Dry run mode | Preview all steps without executing anything |
| ๐ค Gemini AI narration | Optional: explains what each step did in plain English |
| ๐ Local web dashboard | stepcast serve โ run history at localhost:4321 |
| ๐ณ Docker self-hosted | One command team dashboard (docker-compose up) |
| ๐ Google Colab | Native auth + save to Drive |
| ๐จ Rich support | Beautiful spinners + colour when rich is installed |
| ๐ i18n ready | All strings in locale files, community-translated |
| ๐ Zero dep core | Pure stdlib โ pip install stepcast just works |
๏ฟฝ Installation
# Core library (zero dependencies)
pip install stepcast
# Add beautiful terminal formatting
pip install "stepcast[rich]"
# Add the local web dashboard
pip install "stepcast[dashboard]"
# Add AI narration using Google Gemini
pip install "stepcast[gemini]"
# Install everything!
pip install "stepcast[all]"
๐ Quickstart Guide
Building an observable pipeline takes seconds:
from stepcast import Pipeline
pipe = Pipeline("My First Pipeline")
@pipe.step("Download data", retries=2)
def download():
print("Fetching records...")
return [1, 2, 3]
@pipe.step("Process data")
def process(data: list):
result = sum(data)
print(f"Sum = {result}")
return result
@pipe.step("Save results", skip_if=lambda: False)
def save(total: int):
print(f"Saving total: {total}")
report = pipe.run()
print(report.summary())
What you see in the terminal:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐ก My First Pipeline
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โถ Download data...
โ Fetching records...
โ
Done (0.01s)
โถ Process data...
โ Sum = 6
โ
Done (0.00s)
โถ Save results...
โ Saving total: 6
โ
Done (0.00s)
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
3 of 3 steps passed Total: 0.01s
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐ Web Dashboard
Monitor your runs graphically with the built-in local dashboard!
stepcast serve
# โ Opens http://localhost:4321 automatically
# โ Shows your run history, step details, analytics
Stream a live run:
pipe = Pipeline("ETL Job", dashboard=True)
pipe.run() # Watch it run live in your browser!
๐ค Gemini AI Narration
stepcast can use Google Gemini 2.5 Flash to automatically summarize what your code did in plain English. Ideal for long builds or sharing logs with non-technical team members!
# Get your free key from Google AI Studio
export STEPCAST_GEMINI_API_KEY="AIza..."
pipe = Pipeline("Data Cruncher", narrate=True)
# Terminal Output:
# โถ Clean Dataset...
# ๐ฌ "The pipeline removed 45 invalid rows and imputed missing values in 1.2s."
# โ
Done
๐ฉบ Powerful CLI tools
stepcast version # Print installed version
stepcast doctor # Diagnose your environment (Python, OS, packages, keys)
stepcast config set gemini_api_key YOUR_KEY
stepcast run script.py # Run a pipeline and ensure proper exit codes
๏ฟฝ Documentation & Community
Dive deeper into how stepcast works:
- ๐ Quickstart & Core Concepts
- ๐ Full API Reference
- ๐ Dashboard Guide
- ๐ค AI Narration Setup
- ๐ Colab Integration
- ๐ก๏ธ Security Policy
- ๐ Changelog
Joining the Project
Contributions are highly welcome! See CONTRIBUTING.md for branch naming conventions, PR processes, and testing standards. We especially welcome translations for the locale files!
- ๏ฟฝ Report a Bug
- ๐ก Request a Feature
- ๐ฌ Ask a Question
๐ License & Attribution
Released under the MIT License ยฉ 2026.
Built with passion for the global Python community by Suneel Bose K.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file stepcast-1.0.0.tar.gz.
File metadata
- Download URL: stepcast-1.0.0.tar.gz
- Upload date:
- Size: 47.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fb8fd6897d9db0c31c4c3356918d5c5be397a635e60f9cf7593bf0643329111b
|
|
| MD5 |
708185d3354c99573dc2ef627eb83462
|
|
| BLAKE2b-256 |
0869918881963215fe6ee9e77bdb82a26d960b0f90b4be0906cfc36f386da62e
|
File details
Details for the file stepcast-1.0.0-py3-none-any.whl.
File metadata
- Download URL: stepcast-1.0.0-py3-none-any.whl
- Upload date:
- Size: 42.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dab5a56adc4a8629d9ce82adb4c7ae20048aeb94f98055c9cc258557f60ac889
|
|
| MD5 |
072583e1c92e7b758aebdf3b7270efc7
|
|
| BLAKE2b-256 |
497ab39fdec21a1d22c14095c56560f53812514f6fbc78aacb3d38d930c6a681
|