Business processes that cross systems and people.

Draw a workflow in Studio or write it in YAML, JSON, or Python. Its runs wait for people and events while Weave records their history step by step.

Built on pyfly · Studio, HTTP API, CLI, Python SDK
Scroll to explore

How it works

How a workflow becomes a run you can follow.

YAML, JSON, and Python versions of a workflow compile to the same artifact digest before anything runs. Editing a draft never changes a run in progress.

  1. Author

    Write the input schema, the steps, and the output schema, in Studio or in a file.

  2. Compile

    The compiler checks schemas, Actions, and values against a catalog, then produces an artifact with a digest.

  3. Publish

    Publishing stores an immutable version in a project. A change means a new version.

  4. Activate

    Activation pins a version to an environment with its connections, worker releases, and human-⁠task assignments.

  5. Run

    An input sent to an activation starts a run with its own state and history.

  6. Observe

    Read a run’s status, output, history, and incidents in Studio, from the CLI, or through the API.

Building blocks

The steps a workflow is built from.

A workflow is a tree of steps: a Decision or a Parallel group always joins again before the next step. Values come from expressions, since Weave has no scripting language.

Actions and REST calls

Describe an HTTPS call without code and Weave turns it into a reviewable Action on its built-in HTTP connector. OpenAPI documents can supply the operations.

Read the guide

Workers

Your integration code runs in workers, processes that claim a task, call your system, and report the result through the API, with no database access.

Read the guide

Human tasks

A human task waits for one authenticated person to choose an allowed decision on a form. Each environment binds the task to people or groups.

Read the guide

Email conversations

Weave sends mail through SMTP and reads a mailbox over IMAP without changing it. A reply carrying a valid routing token signals its run.

Read the guide

Decision tables

A decision table is a versioned policy with typed input and output that Weave evaluates inside the run, with no worker or provider call.

Read the reference

Events and schedules

Schedules start runs on a UTC timetable. Signed webhooks, Kafka records, and email or messaging sources start a run or signal one.

Read about events

Files

Steps pass verified file references. Weave stores the bytes apart from history, which stays readable. Replay never transfers a document again.

Read the guide

AI tasks

An AI task’s answer counts only when it matches its author’s contract. A Firefly Agentic worker makes the model call.

Read the guide

Loops and sub-workflows

A Loop over items step repeats its steps for each list item. A Call a workflow step runs a published version as a sub-workflow.

Read the step contracts

Durability

A run keeps its place through restarts and long waits.

The Weave API stores workflow versions, run state, and tasks durably. Waits, signals, and human tasks are stored with the run and survive an API restart.

History records what Weave accepted for a run, step by step. Recorded replay reads it offline without contacting anyone.

Weave delivers external calls at least once, because a worker can crash after another system accepted its request. Steps that change another system must be idempotent. Weave retries an Action only when its declared side effect makes a repeat safe. Otherwise the run is suspended with an incident until an operator decides.

Read about tasks, leases, and retries

Code

A customer check that waits for an approval signal.

The repository’s customer-onboarding workflow asks another system about a customer, then waits up to a day for a manager’s decision.

  1. Check the customer

    check calls a published Action that asks your system whether the customer is eligible.

  2. Wait for approval

    approval waits for the customer-approved signal, whose payload must match its schema.

  3. Decide

    decision is a Transform that accepts the customer only when both answers are true.

In the Python SDK, WorkflowBuilder produces definitions like this one as data. WeaveClient publishes them and starts runs through the HTTP API.

Read the SDK reference
customer-onboarding.workflow.yaml
  steps:
    - id: check
      kind: action
      uses: onboarding.check-customer@1.0.0
      with:
        object:
          customerId: {ref: /input/customerId}
    - id: approval
      kind: signal
      name: customer-approved
      timeoutSeconds: 86400
      payloadSchema:
        type: object
        additionalProperties: false
        required: [approved]
        properties:
          approved: {type: boolean}
    - id: decision
      kind: transform
      value:
        object:
          accepted:
            op:
              name: and
              args:
                - {ref: /steps/check/output/eligible}
                - {ref: /steps/approval/output/approved}
  output: {ref: /steps/decision/output}

Deployment

Run Weave as a service or inside your product.

Your product calls Weave under its own identity and grants, and never needs the orchestration database.

Standalone or embedded

Run Weave as its own service, or embed its compiler and workflow builder, which need no server, database, or network.

Read the embedding guide

Python SDK and HTTP API

The Python SDK describes workflows, controls a platform over its HTTP API, and runs your code in workers. Other languages call the HTTP API.

Read the SDK reference

Your identity provider

Bring a compatible OIDC or CIAM provider. Weave verifies the provider’s tokens, then checks its own scoped grants for what a caller may do.

Read the identity guide

Container deployments

Operations registers an existing Compose project, Kubernetes namespace, or Azure Container Apps environment. A runner beside it applies the plans people approve.

Read the deployment guide

OpenTelemetry

An API process can export metrics and traces to an OpenTelemetry collector over OTLP. Export stays off until you set WEAVE_TELEMETRY.

Read the observability guide

Studio’s Operate area

Operators cancel a run, retry a finished one, or resolve an incident from Operate’s lists of runs and incidents.

Read the incident guide

Foundations

Built on pyfly, with AI work on Firefly Agentic.

Weave is a native pyfly application: dependency injection, controllers, and request filters come from the framework. You can embed the compiler on its own: importing it doesn’t start the application.

An independent Firefly Agentic worker runs AI tasks. It calls the provider and model that the workflow’s AI profile specifies.

The Firefly Software Foundation publishes Firefly Weave under the Apache License 2.0.

Sources and attribution

Copyright 2026 Firefly Software Foundation. The workflow excerpt is shown unmodified.

Next step

Simulate a workflow on your computer.

The Weave documentation covers installing the CLI and writing the workflow, and simulation needs no server.