Now in Public Beta

Workflow Automation,
Oxidized

Lightning-fast workflow automation for developers. Connect APIs, transform data, and automate tasks with the speed and safety of Rust.

~/projects
$ cargo install r8r
$ r8r init my-workflow
✓ Created workflow "my-workflow"
✓ Added 3 default nodes
✓ Ready to run
$ r8r run
Workflow running on http://localhost:3000
847 ops/sec · 2ms avg latency
# Press Ctrl+C to stop
$

Built for Speed,
Designed for Scale

Every millisecond counts. r8r leverages Rust's zero-cost abstractions to deliver unmatched performance without sacrificing safety.

Blazing Fast

Process thousands of workflows per second with sub-millisecond latency. Rust's async runtime ensures maximum throughput.

🔒

Memory Safe

No runtime crashes, no memory leaks. Rust's ownership model eliminates entire classes of bugs at compile time.

🧩

Node-Based

Compose complex workflows from simple, reusable nodes. Mix built-in nodes with custom Rust or WebAssembly plugins.

🔌

200+ Integrations

Connect to databases, APIs, message queues, and more. Native support for PostgreSQL, Redis, Kafka, S3, and HTTP.

🐳

Container Native

Deploy anywhere with a 15MB static binary. Docker, Kubernetes, or bare metal — r8r runs the same everywhere.

📊

Observable

Built-in metrics, tracing, and logging. Export to Prometheus, Jaeger, or OpenTelemetry with zero configuration.

15MB
Binary Size
<2ms
Avg Latency
50K+
Ops/Second
0
Runtime Crashes

YAML or Code. You Choose.

Define workflows declaratively with YAML for simple automations, or write custom nodes in Rust for complex logic. Both approaches are first-class citizens.

Explore the DSL
workflow.yaml
name: "Daily Report" trigger: schedule: "0 9 * * *" nodes: - name: "fetch_sales" type: "postgres/query" config: sql: | SELECT * FROM sales WHERE date > NOW() - INTERVAL '24h' - name: "format_report" type: "template" input: "{{ fetch_sales.rows }}" - name: "send_slack" type: "slack/post" config: channel: "#daily-reports"