Skip to content

Commit 41a0449

Browse files
committed
update project description
1 parent 7cb2fea commit 41a0449

4 files changed

Lines changed: 44 additions & 21 deletions

File tree

README.md

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<div align="center">
22
<img src="docs/logo.png" alt="Cano Logo" width="200">
3-
<h1>Cano: Async Data & AI Workflows in Rust</h1>
3+
<h1>Cano: Type-Safe Async Workflow Engine</h1>
44

55
[![Crates.io](https://img.shields.io/crates/v/cano.svg)](https://crates.io/crates/cano)
66
[![Documentation](https://docs.rs/cano/badge.svg)](https://docs.rs/cano)
@@ -9,13 +9,18 @@
99
[![License](https://img.shields.io/crates/l/cano.svg)](https://github.com/nassor/cano/blob/main/LICENSE)
1010
[![CI](https://github.com/nassor/cano/workflows/CI/badge.svg)](https://github.com/nassor/cano/actions)
1111

12-
<em>**Async workflow engine with built-in scheduling, retry logic, and state machine semantics.**</em>
12+
<em>**Orchestrate complex async processes with finite state machines, parallel execution, and built-in scheduling.**</em>
1313
</div>
1414

1515
# Overview
16-
Cano is an async workflow engine for Rust that manages complex processing through composable workflows. It can be used for data processing, AI inference workflows, and background jobs. Cano provides a simple, fast and type-safe API for defining workflows with retry strategies, scheduling capabilities, and shared state management.
16+
Cano is a high-performance orchestration engine designed for building resilient, self-healing systems in Rust. Unlike simple task queues, Cano uses **Finite State Machines (FSM)** to define strict, type-safe transitions between processing steps.
1717

18-
The engine is built on three core concepts: **Tasks** and **Nodes** to encapsulate business logic, **Workflows** to manage state transitions, and **Schedulers** to run workflows on a schedule.
18+
It excels at managing complex lifecycles where state transitions matter:
19+
* **Data Pipelines**: ETL jobs with parallel processing (Split/Join) and aggregation.
20+
* **AI Agents**: Multi-step inference chains with shared context and memory.
21+
* **Background Systems**: Scheduled maintenance, periodic reporting, and distributed cron jobs.
22+
23+
The engine is built on three core concepts: **Tasks/Nodes** for logic, **Workflows** for state transitions, and **Schedulers** for timing.
1924

2025
*The Node API is inspired by the [PocketFlow](https://github.com/The-Pocket/PocketFlow) project, adapted for Rust's async ecosystem.*
2126

@@ -30,7 +35,7 @@ The engine is built on three core concepts: **Tasks** and **Nodes** to encapsula
3035
- **Observability**: Integrated `tracing` support for deep insights into workflow execution.
3136
- **Zero-Cost Abstractions**: Minimal overhead designed for high-performance async Rust.
3237

33-
## Complex Example: Parallel Processing
38+
## Simple Example: Parallel Processing
3439

3540
Here is a real-world example showing how to split execution into parallel tasks and join them back together.
3641

docs/index.html

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333

3434
<main class="main-content">
3535
<h1>Cano</h1>
36-
<p class="subtitle">Async workflow engine with built-in scheduling, retry logic, and state machine semantics.</p>
36+
<p class="subtitle">Type-safe async workflow engine with built-in scheduling, retry logic, and state machine semantics.</p>
3737

3838
<div class="badges" style="margin: 2rem 0; display: flex; gap: 0.5rem;">
3939
<img src="https://img.shields.io/crates/v/cano.svg" alt="Crates.io">
@@ -43,11 +43,18 @@ <h1>Cano</h1>
4343
</div>
4444

4545
<p>
46-
Cano is an async workflow engine for Rust that manages complex processing through composable workflows.
47-
It can be used for data processing, AI inference workflows, and background jobs.
48-
Cano provides a simple, fast and type-safe API for defining workflows with retry strategies,
49-
scheduling capabilities, and shared state management.
46+
Cano is a high-performance orchestration engine designed for building resilient, self-healing systems in Rust.
47+
Unlike simple task queues, Cano uses <strong>Finite State Machines (FSM)</strong> to define strict, type-safe transitions between processing steps.
5048
</p>
49+
50+
<p>
51+
It excels at managing complex lifecycles where state transitions matter:
52+
</p>
53+
<ul>
54+
<li><strong>Data Pipelines</strong>: ETL jobs with parallel processing (Split/Join) and aggregation.</li>
55+
<li><strong>AI Agents</strong>: Multi-step inference chains with shared context and memory.</li>
56+
<li><strong>Background Systems</strong>: Scheduled maintenance, periodic reporting, and distributed cron jobs.</li>
57+
</ul>
5158

5259
<h2>Features</h2>
5360
<div class="card-grid">

docs/scheduler.html

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,8 @@ <h3>2. Cron Scheduling - Time-Based Expressions</h3>
126126
section Workflow
127127
Run 1 :09, 1h
128128
Run 2 :18, 1h
129+
%% Add empty space to ensure full visibility
130+
Space :20, 0h
129131
</div>
130132

131133
<pre><code class="language-rust">use cano::prelude::*;

src/lib.rs

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
1-
//! # Cano: Simple & Fast Async Workflows in Rust
1+
//! # Cano: Type-Safe Async Workflow Engine
22
//!
3-
//! Cano is an async workflow engine that makes complex data processing simple. Whether you need
4-
//! to process one item or millions, Cano provides a clean API with minimal overhead for maximum performance.
3+
//! Cano is a high-performance orchestration engine designed for building resilient, self-healing systems in Rust.
4+
//! Unlike simple task queues, Cano uses **Finite State Machines (FSM)** to define strict, type-safe transitions between processing steps.
5+
//!
6+
//! It excels at managing complex lifecycles where state transitions matter:
7+
//! * **Data Pipelines**: ETL jobs with parallel processing (Split/Join) and aggregation.
8+
//! * **AI Agents**: Multi-step inference chains with shared context and memory.
9+
//! * **Background Systems**: Scheduled maintenance, periodic reporting, and distributed cron jobs.
510
//!
611
//! ## 🚀 Quick Start
712
//!
@@ -11,6 +16,12 @@
1116
//!
1217
//! ## 🎯 Core Concepts
1318
//!
19+
//! ### Finite State Machines (FSM)
20+
//!
21+
//! Workflows in Cano are state machines. You define your states as an `enum`, and register
22+
//! handlers ([`Task`] or [`Node`]) for each state. The engine ensures type safety and
23+
//! manages transitions between states.
24+
//!
1425
//! ### Tasks & Nodes - Your Processing Units
1526
//!
1627
//! **Two approaches for implementing processing logic:**
@@ -19,19 +30,17 @@
1930
//!
2031
//! **Every [`Node`] automatically implements [`Task`]**, providing seamless interoperability and upgrade paths.
2132
//!
33+
//! ### Parallel Execution (Split/Join)
34+
//!
35+
//! Run tasks concurrently and join results with strategies like `All`, `Any`, `Quorum`, or `PartialResults`.
36+
//! This allows for powerful patterns like scatter-gather, redundant execution, and latency optimization.
37+
//!
2238
//! ### Store - Share Data Between Processing Units
2339
//!
2440
//! Use [`MemoryStore`] to pass data around your workflow. Store different types of data
2541
//! using key-value pairs, and retrieve them later with type safety. All values are
2642
//! wrapped in `std::borrow::Cow` for memory efficiency.
2743
//!
28-
//! ### Custom Logic - Your Business Implementation
29-
//!
30-
//! **Choose the right approach for your needs:**
31-
//! - Implement the [`Task`] trait for simple, single-method processing
32-
//! - Implement the [`Node`] trait for structured processing with three phases:
33-
//! Prep (load data, validate inputs), Exec (core processing), and Post (store results, determine next action)
34-
//!
3544
//! ## 🏗️ Processing Lifecycle
3645
//!
3746
//! **Task**: Single `run()` method with full control over execution flow
@@ -56,7 +65,7 @@
5665
//! - Fluent configuration API via [`TaskConfig`]
5766
//!
5867
//! - **[`workflow`]**: Core workflow orchestration
59-
//! - [`Workflow`] for state machine-based workflows
68+
//! - [`Workflow`] for state machine-based workflows with Split/Join support
6069
//!
6170
//! - **[`scheduler`]** (optional `scheduler` feature): Advanced workflow scheduling
6271
//! - [`Scheduler`] for managing multiple flows with cron support

0 commit comments

Comments
 (0)