Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

Motia Framework for Python

High-level framework for building workflows with the III Engine.

Installation

uv pip install iii-motia

Usage

Defining a Step

from motia import FlowContext, event

config = {
    "name": "process-data",
    "triggers": [event("data.created")],
    "emits": ["data.processed"],
}

async def handler(data: dict, ctx: FlowContext) -> None:
    ctx.logger.info("Processing data", data)
    await ctx.emit({"topic": "data.processed", "data": data})

API Steps

from motia import ApiRequest, ApiResponse, FlowContext, api

config = {
    "name": "create-item",
    "triggers": [api("POST", "/items")],
    "emits": ["item.created"],
}

async def handler(req: ApiRequest, ctx: FlowContext) -> ApiResponse:
    ctx.logger.info("Creating item", req.body)
    await ctx.emit({"topic": "item.created", "data": req.body})
    return ApiResponse(status=201, body={"id": "123"})

Streams

from motia import Stream

# Define a stream
todo_stream = Stream[dict]("todos")

# Use the stream
item = await todo_stream.get("group-1", "item-1")
await todo_stream.set("group-1", "item-1", {"title": "Buy milk"})
await todo_stream.delete("group-1", "item-1")
items = await todo_stream.get_group("group-1")

Build & Publish

python -m build
uv publish --index cloudsmith dist/*

Features

  • Event-driven step definitions
  • API route handlers
  • Cron job support
  • Stream-based state management
  • Type-safe context with logging

Testing

Running Integration Tests

Integration tests require a running III Engine instance. Make sure to have it built or installed before running tests.

  1. Install dev dependencies:

    cd motia && uv sync --all-extras
    
  2. Run tests:

    uv run pytest
    

Test Configuration

Tests use non-default ports to avoid conflicts:

  • Engine WebSocket: ws://localhost:49199
  • HTTP API: http://localhost:3199

Set III_ENGINE_PATH environment variable to point to the III engine binary.

Test Coverage

The integration test suite covers:

  • Bridge connection and function registration
  • API triggers (HTTP endpoints)
  • KV Server operations
  • PubSub messaging
  • Logging module
  • Motia framework integration
  • Stream operations (when available)
  • State management (when available)

Metadata

Release files for motia 0.2.1.dev20260212195031

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

Source distribution (sdist)

Source distribution for motia 0.2.1.dev20260212195031
File Size Uploaded
motia-0.2.1.dev20260212195031.tar.gz 69.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for motia 0.2.1.dev20260212195031
File Interpreter ABI Platform
motia-0.2.1.dev20260212195031-py3-none-any.whl Python 3 none any Details

Total release size: 92.7 kB

Release files / motia-0.2.1.dev20260212195031.tar.gz

Download URL motia-0.2.1.dev20260212195031.tar.gz
Size 69.6 kB
Tags Source
SHA-256 checksum
How to use checksums
9c507190cec5215b1b88f9d69274c0dd8682551e13a90805e11fe754baf9d044
BLAKE2b-256 checksum
How to use checksums
d4681366330377ce5ee1d7606650b0b8052e533265feaa2fea2ddaeb4ae5180c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Feb 12, 2026.

Transparency log

Release files / motia-0.2.1.dev20260212195031-py3-none-any.whl

Download URL motia-0.2.1.dev20260212195031-py3-none-any.whl
Size 23.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d29dad8b1e1ef2e32d2c109ce0e87c54d331b94310eca46575e61c70413652a9
BLAKE2b-256 checksum
How to use checksums
f3db71d0d7a8b14fff40c2865e00aa791e521c09a45c74ec1bc2054f03b164a8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Feb 12, 2026.

Transparency log

Release history Release notifications | RSS feed

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