You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Duron is a lightweight durable execution runtime for Python async workflows. It provides replayable execution primitives that work standalone or as building blocks for complex workflow engines.
8
+
**Durable workflows for modern Python.** Build resilient async applications with native support for streaming and interruption.
9
9
10
-
-🪶**Zero extra deps** — Lightweight library that layers on top of asyncio; add Duron without bloating your stack.
11
-
-🧩**Pluggable architecture** — Bring your own storage or infra components and swap them without changing orchestration code.
12
-
-🔄**Streams & signals** — Model long-running conversations, live data feeds, and feedback loops with built-in primitives.
13
-
-🐍**Python-native & typed** — Type hints make replay serialization predictable, and everything feels like idiomatic Python.
14
-
-🔭**Built-in tracing** — Detailed logs help you inspect replays and surface observability data wherever you need it.
10
+
-💬**Interactive workflows** — AI agents, chatbots, and human-in-the-loop automation with bidirectional streaming
11
+
-⚡**Crash recovery** — Deterministic replay from append-only logs means workflows survive restarts
12
+
-🎯**Graceful interruption** — Cancel or redirect operations mid-execution with signals
13
+
-🔌**Zero dependencies** — Pure Python built on asyncio, fully typed
14
+
-🧩**Pluggable storage** — Bring your own database or filesystem backend
15
15
16
16
## Install
17
17
@@ -23,52 +23,75 @@ uv pip install duron
23
23
24
24
## Quickstart
25
25
26
-
Duron wraps async orchestration (`@duron.durable`) and effectful steps (`@duron.effect`) so complex workflows stay deterministic—even when they touch the outside world.
27
-
28
26
```python
27
+
# /// script
28
+
# dependencies = ["duron"]
29
+
# ///
30
+
29
31
import asyncio
30
-
import random
31
32
from pathlib import Path
32
-
33
33
import duron
34
34
from duron.contrib.storage import FileLogStorage
35
35
36
36
37
-
# Effects encapsulate side effects (I/O, randomness, API calls)
0 commit comments