indah turns a single Python file into a live, interactive app you launch from a Colab or Runpod cell. Reactive, single-port, streaming - and no Node anywhere, at install or runtime.
pip install indah - a pure-Python wheel, no Node toolchain.launch() prints a URL and embeds the app inline in a Colab or
Runpod cell. Mutate a signal and only what reads it re-renders.import indah
from indah import Signal, computed, Column, Slider, Text, Session
a, b = Signal(2), Signal(3)
total = computed(lambda: f"a + b = {a.value + b.value}")
page = Column(children=[
Slider(a, min=0, max=10, label="a"),
Slider(b, min=0, max=10, label="b"),
Text(total),
])
indah.launch(indah.create_app(session=Session(page)))
The design that lets it start clean in a throwaway container and stay live.
Mutate a signal and only the components that read it update. No full-script rerun on every click.
The frontend ships pre-built in the wheel. Nothing to build at install or runtime, so it starts clean in any container.
SSE plus HTTP POST over one port passes the Colab and Runpod proxies. No WebSocket, no tunnel.
Tokens and data points arrive over SSE as they are produced, so long runs stay cheap and the page never freezes.
Every demo below is live - no install, no clone. Open one and start clicking.
indah is the reactive, no-build, notebook-native option.
| Feature | indah | Streamlit | Gradio | Reflex |
|---|