Skip to main content

Every Python script deserves a voice. Transparent, narrated pipeline execution.

Project description

stepcast - Python Pipelines, Narrated

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.


PyPI version Python License: MIT Build Status


๐Ÿ“– Table of Contents


๐Ÿ“ธ Preview & Presentation

See stepcast in action solving real problems with beautiful observability.

1. Terminal Output with rich ๐Ÿ–ฅ๏ธ

Replace this with a .gif of your terminal running python examples/data_etl.py.

![Terminal Preview](docs/assets/terminal_preview.gif)

2. Local Live Dashboard ๐Ÿ“Š

Replace this with a screenshot of the stepcast serve dashboard showing a run history.

![Dashboard Preview](docs/assets/dashboard_preview.png)

3. AI Step Narration ๐Ÿค–

Replace this with a screenshot showing the ๐Ÿ’ฌ AI narration output.

![AI Narration](docs/assets/ai_narration.png)


โœจ 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:

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!


๐Ÿ“œ License & Attribution

Released under the MIT License ยฉ 2026.

Built with passion for the global Python community by Suneel Bose K.

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

stepcast-1.0.0.tar.gz (47.5 kB view details)

Uploaded Source

Built Distribution

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

stepcast-1.0.0-py3-none-any.whl (42.9 kB view details)

Uploaded Python 3

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

Hashes for stepcast-1.0.0.tar.gz
Algorithm Hash digest
SHA256 fb8fd6897d9db0c31c4c3356918d5c5be397a635e60f9cf7593bf0643329111b
MD5 708185d3354c99573dc2ef627eb83462
BLAKE2b-256 0869918881963215fe6ee9e77bdb82a26d960b0f90b4be0906cfc36f386da62e

See more details on using hashes here.

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

Hashes for stepcast-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 dab5a56adc4a8629d9ce82adb4c7ae20048aeb94f98055c9cc258557f60ac889
MD5 072583e1c92e7b758aebdf3b7270efc7
BLAKE2b-256 497ab39fdec21a1d22c14095c56560f53812514f6fbc78aacb3d38d930c6a681

See more details on using hashes here.

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