2 points brian14708 | 1 comments | | HN request time: 0.203s | source

Hi HN,

I built a library called Duron that provides the core building blocks for a durable execution engine, built on deterministic log replay and a custom asyncio loop.

To better support interactive workflows—such as human-in-the-loop interactions, streaming progress updates, and real-time inputs—I'm experimenting with two new primitives: signals and streams.

Key features:

- Asyncio-native: Custom asyncio loop that works seamlessly with standard primitives like `asyncio.timeout`, `asyncio.gather`, and `asyncio.sleep`

- Minimal dependencies: Zero external dependencies, pluggable log architecture for easy integration

- Interactive workflows: Streams and signals enable real-time communication between workflows and host applications

- Stateful effects: Generator-based effects with automatic checkpointing and state accumulation

Example use cases:

- Building custom durable workflow engines with minimal overhead

- Interactive workflows requiring human approval or external triggers

- AI agents with long-running conversations that persist across restarts

GitHub: https://github.com/brian14708/duron

I’m still iterating on the API design and stress-testing durability guarantees. Feedback, critiques, and ideas for real-world use cases are all welcome!