taven

Crates.iotaven
lib.rstaven
version0.1.1
created_at2025-10-27 12:32:17.993644+00
updated_at2025-10-27 12:32:17.993644+00
descriptionTaven is a lightweight, modular engine for building control-flow systems β€” behavior trees, state machines, reactive logic pipelines, or anything that can be expressed as nodes and flows.
homepagehttps://github.com/jiashumiao/taven
repositoryhttps://github.com/jiashumiao/taven
max_upload_size
id1902842
size22,173
juheguang (juheguang)

documentation

README

Developing

Currently unavailable

🧩 Taven

Taven β€” a composable control-flow engine for Rust
β€œWhere logic finds its rhythm.”


🌌 Overview

Taven is a lightweight, modular engine for building control-flow systems β€”
behavior trees, state machines, reactive logic pipelines, or anything that can
be expressed as nodes and flows.

It provides a clean foundation built around a single idea:

β€œEvery decision and action can be expressed as a node that drives context.”


✨ Key Features

  • 🧠 Composable Nodes β€” actions, sequences, selectors, parallels

  • 🧩 Unified Trait Model β€” every node implements Node<Ctx>

  • βš™οΈ Custom Contexts β€” define your own runtime data structure

  • 🧰 Extensible Design β€” build DSLs, editors, or async engines

  • πŸ’Ύ Serializable State β€” via serde and JSON-based Blackboard

  • πŸ§ͺ Test-Friendly β€” small, deterministic, and side-effect controlled

🧬 Core Concepts

Concept Description
Node The fundamental executable unit. Implements fn tick(&mut self, ctx: &mut Ctx) -> Status.
Status Represents node execution result: Success, Failure, or Running.
Context Arbitrary user-defined data passed to all nodes.
Sequence Executes nodes in order until one fails.
Action Wraps a closure or function that performs logic on the context.
Blackboard Key-value storage for dynamic runtime data (serde-powered).

🧭 Roadmap

  • Add Selector and Parallel control nodes
  • Add async/await node execution support
  • Add builder DSL (flow! { ... } macro)
  • Add serde-based graph definition for editor integration
  • Add taven-editor (GUI flow builder with Bevy UI)
  • Publish taven-core crate to crates.io

🧠 Design Philosophy

Taven is built with engineering clarity and compositional elegance in mind:

  1. Everything is a Node.
  2. Nodes know nothing about each other.
  3. Context drives state, not global data.
  4. The flow is data β€” not code.

This philosophy makes Taven suitable for AI systems, data pipelines, automation graphs, or any domain requiring controlled, reactive logic execution.


πŸ§‘β€πŸ’» Contributing

Contributions, ideas, and discussions are welcome! Open an issue or PR to help shape Taven into a robust control-flow framework.


βš–οΈ License

MIT License Β© 2025 β€” [Your Name or Org] Freely available for personal and commercial use.


🌈 Acknowledgements

Inspired by:

  • Behavior Trees (AI architecture)
  • Finite State Machines
  • Rust’s trait-based composability
  • Bevy ECS design philosophy

Taven is still young β€” but it’s already dreaming of elegant logic. β€œFlow. Compose. Repeat.”


Commit count: 0

cargo fmt