Skip to main content

arvel-workflow

Durable execution for the arvel framework — backed by Temporal, with arvel's ergonomics instead of Temporal's setup tax.

Some work outlives a single request: an order that moves through authorize → fulfil → ship over hours, a multi-step job that has to survive a restart halfway through. arvel's queue is fire-and-forget; this is for work that must remember where it got to. You write plain workflows and activities, run one command, and drive them through a facade — no Temporal boilerplate.

uv add 'arvel-workflow[temporal]'

Installing auto-registers the provider through arvel's entry-point mechanism — no wiring.

The idea in one screen

An activity does the I/O (and can use any arvel facade); a workflow orchestrates activities and stays pure. Both autoload from their folders.

# app/activities/greet.py
from arvel_workflow import activity
from arvel import Cache

@activity
async def greet(name: str) -> str:
    count = await Cache.increment("greet:count")   # activities do I/O — arvel DI works here
    return f"hello {name} (#{count})"
# app/workflows/greet.py
from arvel_workflow import workflow, run_activity
from app.activities.greet import greet          # a plain import — no ceremony

@workflow
class Greet:
    async def run(self, name: str) -> str:
        return await run_activity(greet, name)

Run the worker (--dev boots a throwaway local Temporal server — nothing to install first):

arvel workflow:work --dev

Start work and read the result from anywhere you have the app:

handle = await app.make("workflow").start(Greet, "world")
print(await app.make("workflow").result(handle))   # hello world (#1)

No with workflow.unsafe.imports_passed_through() anywhere — the framework configures Temporal's sandbox so plain imports work.

Documentation

Guide What's in it
Getting Started install → define → run → drive → test, end to end
Concepts & Best Practices the workflow/activity split, the determinism rule, the sandbox, and the habits that keep you correct
Configuration every config("workflow") key and default
Testing run the real engine, fake the world — the test pattern

Scope & roadmap

This release ships the durable-execution core: define workflows and activities, run a worker, start work, and read its result. Documented capabilities are the ones that actually run today.

Coming next (not shipped yet — so the docs never promise what the code can't do):

  • signals / queries / updates — send events into a running workflow, read its live state, drive human-in-the-loop approvals
  • child workflows & fan-out, sagas / compensation, durable timers, scheduled workflows
  • per-activity retry & timeout sugar and a time-skipping test harness

Requirements

  • Python 3.14+
  • arvel (installed with the package)
  • The engine extra: arvel-workflow[temporal]. --dev downloads a local Temporal dev-server binary on first run.

License

MIT — see LICENSE.

Metadata

Release files for arvel-workflow 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for arvel-workflow 0.2.0
File Size Uploaded
arvel_workflow-0.2.0.tar.gz 123.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for arvel-workflow 0.2.0
File Interpreter ABI Platform
arvel_workflow-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 135.3 kB

Release files / arvel_workflow-0.2.0.tar.gz

Download URL arvel_workflow-0.2.0.tar.gz
Size 123.9 kB
Tags Source
SHA-256 checksum
How to use checksums
1cc86e348164a2f0c0a629f609efa4d0fdd0bbb946bba5bcd0eb16dc91d6a3d6
BLAKE2b-256 checksum
How to use checksums
d437d6368c874f809e7e0b76c79859d58064db0ffa11c8a6606eab21687ee4b3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 17, 2026.

Transparency log

Release files / arvel_workflow-0.2.0-py3-none-any.whl

Download URL arvel_workflow-0.2.0-py3-none-any.whl
Size 11.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
48829bff888e28bae814ce6b615cbce744a8a6fc9bf4e911517f17d9255a58c1
BLAKE2b-256 checksum
How to use checksums
98e6fd30529ac899ace12d73a8d8ea6297a85bb7b6d04d109d1d505dfdc169b1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 17, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release 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