OPEN SOURCE · AGPL-3.0 + MIT

Durable workflows
with AI cost controls

Kruxia Flow is the only durable workflow engine built for AI. Our workflows survive crashes and budget and report AI costs. And it runs anywhere in a 7.5 MB binary.

AI startups

Ship AI agents to production with built-in cost tracking and budget control. Survive crashes, stop runaway spend.

Small businesses

Define workflows with no code, deploy one binary and one database: No cluster, no DevOps team. Production reliability for tens of dollars a month.

Data teams

Combine batch pipelines and AI agents in one platform. Python SDK with pandas and DuckDB, and without a 4GB footprint or a $1K/M vendor lock-in.

// THE_PROBLEM

AI in production has been
an unsolved problem.

You need durable execution, cost controls, and operational simplicity.
Until now you had to pick one, or none.

$

Invisible AI spend

Teams with cost observability report 30–50% savings—but no workflow engine tracks LLM costs natively. You're left stitching together external tools with no budget control to stop a runaway agent.

!

Temporal's operational tax

Temporal requires 7+ components to self-host, and teams report 8 engineering-months per year on maintenance. Airflow needs minimum 4 GB RAM and managed hosting runs $360–$1,000+/month. Both have zero LLM awareness.

×

LangGraph isn't a workflow engine

LangGraph handles AI agent loops, but it's Python-only, has no native scheduling, and requires the proprietary LangSmith platform for production—at ~$1,000 per million executions. For teams that need both AI and general workflows, that means running two systems.

// THE_SOLUTION

Durable orchestration with built-in AI integration

Kruxia Flow combines durable workflow orchestration with native LLM features, so you can ship AI to production with confidence.

Durable execution

Workflows survive crashes, restart from where they left off, and deliver exactly-once execution. Activities persist state and retry automatically with backoff. No more manual retry logic or lost progress.

Budget control

Set soft or hard limits. Activities and workflows abort before exceeding their budget.

$

Cost tracking

Every LLM call is metered. Monitor costs per workflow, per activity, per model. Query the metrics API for token usage, cost breakdowns, and budget status—feed the data into dashboards or alerts.

Automatic model fallback

Claude down? Fall back to GPT. Opus too expensive for this request? Switch to Sonnet or a different provider. Configurable fallback chains keep workflows running.

Deploy anywhere

A 7.5 MB binary with PostgreSQL. Runs anywhere: on cloud VMs, on-premise computers, or edge devices like Raspberry Pi Zero. No cluster required.

workflow.yaml
activities:
  - key: analyze
    activity_name: llm_prompt
    parameters:
      model:
        - anthropic/claude-sonnet-4-5
        - openai/gpt-4o-mini  # fallback
      prompt: "Analyze this document..."
      max_tokens: 500
    settings:
      budget:
        limit_usd: 0.50
        action: abort  # hard limit
      cache:
        enabled: true
        ttl_seconds: 3600
// GET_STARTED

Running in 2 minutes

1

Clone and start

Run ./docker up --examples to launch the kruxiaflow server with PostgreSQL and both provided workers.

2

Get an access token

Use the generated client credentials to authenticate via OAuth2.

3

Deploy and run a workflow

POST the YAML definition, then create a workflow instance with your input data.

4

Track your costs

Query /api/v1/workflows/{id}/cost/history for token usage.

Cost output of the example run:

[
  {
    "activity_key": "analyze_content",
    "attempt": 1,
    "cost_usd": "0.00049",
    "prompt_tokens": 110,
    "output_tokens": 76,
    "total_tokens": 186,
    "cached_tokens": null,
    "provider": "anthropic",
    "model": "claude-haiku-4-5-20251001",
    "budget_limit_usd": "0.1",
    "budget_exceeded": false,
    "created_at": "2026-02-06T05:54:33.534442Z"
  }
]
terminal
# Clone and start
$ git clone https://github.com/kruxia/kruxiaflow.git
$ cd kruxiaflow
$ ./docker up --examples

# Get access token
$ CLIENT_SECRET=$(grep KRUXIAFLOW_CLIENT_SECRET .env | cut -d= -f2)
$ TOKEN=$(curl -s -X POST http://localhost:8080/api/v1/oauth/token \
    -d "grant_type=client_credentials" \
    -d "client_id=kruxiaflow-docker-client" \
    -d "client_secret=$CLIENT_SECRET" | jq -r '.access_token')

# Deploy workflow definition
$ curl -X POST http://localhost:8080/api/v1/workflow_definitions \
    -H "Authorization: Bearer $TOKEN" \
    -H "Content-Type: text/yaml" \
    --data-binary @examples/04-moderate-content.yaml

# Run the workflow
$ WORKFLOW_ID=$(curl -s -X POST http://localhost:8080/api/v1/workflows \
    -H "Authorization: Bearer $TOKEN" \
    -H "Content-Type: application/json" \
    -d '{"definition_name":"moderate_content", "input": \
          {"user_content":"Check out this amazing project!"}}' \
    | jq -r '.workflow_id')

# Track costs
$ curl -s http://localhost:8080/api/v1/workflows/$WORKFLOW_ID/cost/history \
    -H "Authorization: Bearer $TOKEN" | jq
>>>
Python SDK
pip install git+https://github.com/kruxia/kruxiaflow-python.git
— and build workflows in Python
15+ Examples
Clone, run, and copy production-ready workflow patterns
Low Ops
One binary, one database. No cluster, no 8 engineering-months of maintenance
// EXAMPLES

Production-ready patterns

15+ example workflows included. Start with built-in activities (no code required), add Python scripts when ready using the provided py-std worker.

Build workflows without code

Fetch data from an HTTP API, format it with templates, and send an email notification. The entire workflow uses built-in activities—no Python workers, no custom code, just YAML.

  • No code required—just YAML
  • HTTP requests, templates, and email built in
  • Sequential workflows with activity dependencies
  • Ideal for small & medium businesses and data engineers
View on GitHub
# YAML workflow - no code required
name: weather_report
activities:
  - key: fetch_weather
    worker: std
    activity_name: http_request
    parameters:
      method: GET
      url: https://api.weather.gov/gridpoints/LOT/76,73/forecast

  - key: send_notification
    worker: std
    activity_name: http_request
    parameters:
      method: POST
      url: http://mailpit:8025/api/v1/send
      body:
        Subject: "Weather Report"
        Text: "{{OUTPUT.fetch_weather.response.forecast}}"
    depends_on:
      - fetch_weather
// COMPARISON

How Kruxia Flow stacks up

Kruxia Flow is a durable execution engine—in the same category as Temporal and Inngest, not batch schedulers like Airflow. The difference? We're built for AI from the ground up.

FEATURE KRUXIA TEMPORAL INNGEST LANGGRAPH
Durable execution Yes Yes Yes partial
LLM cost tracking Yes partial via LangSmith
Budget control Yes
Model fallback Yes Yes partial
Token streaming Yes Yes
Self-host complexity 1 binary + PG 7+ components 1 binary + PG proprietary
Throughput 93 wf/s 66 wf/s Not tested N/A
Binary size 7.5 MB ~200 MB Not tested N/A
Peak memory 328 MB ~425 MB Not tested N/A
SDK languages Python, YAML 6 SDKs TS, Python, Go Python, JS
GitHub stars New 18.2K 4.8K 24.4K
Open Source AGPL-3.0 + MIT MIT SSPL MIT

Binary size and memory comparisons reflect benchmarks run on Kruxia hardward using comparable configurations. Temporal's footprint includes a multi-language runtime and cluster coordination layer. LangGraph requires the proprietary LangSmith platform (~$1,000/1M executions) for production deployment. Inngest SSPL license is not OSI-approved open source.

// COMMUNITY

Join the project

Kruxia Flow is open source. We're building in the open and welcome contributors.