Skip to main content
Parakeet Logo

🦜🔀 Parakeet Workflows

High performance and flexible event-driven workflow engine, designed to build complex tasks.

Testing PyPI - Version Downloads PyPI - License Ruff

✨ Highlight features

  • Event-driven execution — Steps communicate through typed events.
  • Fan-out / Fan-in — Emit multiple events in parallel and join results back, with full async support.
  • Shared state — Pass data across steps via a built-in Context object without global variables.
  • Internal buffer — Events are queued internally, so steps can produce and consume at their own pace.
  • Declarative API — Define steps with a simple @step decorator.
  • Built-in observability — Instrument workflows with OpenTelemetry-compatible tracing and custom metrics.

📦 Installation

pip install parakeet-workflows

With uv:

uv add parakeet-workflows

🚀 Quickstart

Here's a simple example to get you started with Parakeet Workflows:

import asyncio
from parakeet_workflows import Workflow, Context, step
from parakeet_workflows.events import Event, StartEvent, StopEvent


class MessageEvent(Event):
    message: str

class MyWorkflow(Workflow):

    @step(when=StartEvent)
    async def start(self, ctx: Context, ev: StartEvent) -> MessageEvent:
        input_msg = ev.get("message", "")
        return MessageEvent(message=f"Processed: {input_msg}")

    @step(when=MessageEvent)
    async def process(self, ctx: Context, ev: MessageEvent) -> StopEvent:
        return StopEvent(result=ev.message)


async def main():
    workflow = MyWorkflow()
    result = await workflow.run(input_msg="Hello, World!")
    print(result)

asyncio.run(main())

Core Concepts

Workflow

A workflow is a class that inherits from Workflow and contains one or more steps. It orchestrates the execution of steps based on events.

Steps

Steps are asynchronous methods decorated with @step(when=EventType) that define what happens when a specific event is received.

  • Steps receive a Context and an Event.
  • Steps can return new events to trigger subsequent steps.

Events

Events are the building blocks of workflows. They carry data between steps and trigger step execution.

  • StartEvent: Automatically triggered when a workflow starts
  • StopEvent: Signals the end of a workflow and carries the final result
  • Custom Events: Define your own events by inheriting from Event

Context

The Context object provides access to workflow state and allows steps to share data throughout the workflow execution.

# Read-only access
current_value = ctx.state.count

# Edit state
async with ctx.store.edit_state() as state:
    state.count = current_counter + 1

# Send events
ctx.send_event(MyEvent(...))

Server

Parakeet Workflows includes an optional HTTP server built on FastAPI that exposes your workflows as REST endpoints.

import asyncio
from parakeet_workflows.server import WorkflowServer

server = WorkflowServer()
server.add_workflow("my-workflow", MyWorkflow())

asyncio.run(server.serve(host="0.0.0.0", port=8080))
Endpoint Description
GET /workflows List all registered workflows
POST /workflows/{id}/run Execute a workflow

License

Apache License 2.0

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

parakeet_workflows-0.1.0.tar.gz (30.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

parakeet_workflows-0.1.0-py3-none-any.whl (40.8 kB view details)

Uploaded Python 3

File details

Details for the file parakeet_workflows-0.1.0.tar.gz.

File metadata

  • Download URL: parakeet_workflows-0.1.0.tar.gz
  • Upload date:
  • Size: 30.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-httpx/0.28.1

File hashes

Hashes for parakeet_workflows-0.1.0.tar.gz
Algorithm Hash digest
SHA256 cf85838925d4a7f23bcee0efe201a0098e291f8e80a72045ca176b0e8a77efab
MD5 43a1b37d7870f38833ca715f8e9bea3b
BLAKE2b-256 5bfb169add3c06bbc3eae3c118cade971a14cc386acfcdbb99cb4e14325899b1

See more details on using hashes here.

File details

Details for the file parakeet_workflows-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for parakeet_workflows-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 dcf1e0fceafa81a777189ee4fbbcb9348b215afaf9176a2fb817f74593868576
MD5 649a891a20fa12e0038a65f94c84512d
BLAKE2b-256 932c0d1db088610f1670426d107623871c2c7c76717f53efdfd4b4be0debb60d

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page