Skip to main content

Flame Python SDK

Python SDK for the Flame, a distributed system for Agentic AI.

For the user guide, see Flame Python SDK. For the detailed API surface, see API.md.

Installation

pip install flamepy

Quick Start

import flamepy

def main():
    # Create a session with the application, e.g. Agent
    session = flamepy.create_session("flmping")
    
    # Create and run a task
    resp = session.invoke(b"task input data")

    # Handle the output of task
    print(resp)

    # Close session
    session.close()

if __name__ == "__main__":
    main()

Verify A Runner Cluster

After configuring ~/.flame/flame.yaml for a running cluster with session manager, object cache, executor manager, and the flmrun template application, run:

python -m flamepy.runner.e2e

Installed wheels also provide:

flamepy-runner-e2e

The check packages a tiny temporary project and verifies Runner function calls, ObjectFuture chaining, and a stateful instance service. Use --json for machine-readable output and --python-version 3.12 to verify a specific executor Python runtime.

API Reference

Session

Represents a computing session with application, e.g. Agent, Tools.

# Create a session
session = flamepy.create_session("my-app")

# Close a session
session.close()

Task

Represents individual computing tasks within a session.

from concurrent.futures import wait

# Run a task synchronously (blocks until complete)
result = session.invoke(b"input data")

# Run a task asynchronously (returns Future immediately)
future = session.run(b"input data")
result = future.result()  # Wait for completion

# Run multiple tasks in parallel
futures = [session.run(f"input {i}".encode()) for i in range(10)]
wait(futures)  # Wait for all tasks to complete
results = [f.result() for f in futures]

# Create a task and get task object
task = session.create_task(b"input data")

# Get task status
task = session.get_task(task.id)

# Watch task progress
for update in session.watch_task(task.id):
    print(f"Task state: {update.state}")
    if update.is_completed():
        break

Error Handling

The SDK provides custom exception types for different error scenarios:

from flamepy import FlameError, FlameErrorCode

try:
    session = flamepy.create_session("flmping")
except FlameError as e:
    if e.code == FlameErrorCode.INVALID_CONFIG:
        print("Configuration error:", e.message)
    elif e.code == FlameErrorCode.INVALID_STATE:
        print("State error:", e.message)

Development

To set up the development environment:

# Clone the repository
git clone https://github.com/xflops/flame.git
cd flame/sdk/python

# Install in development mode
# Note: Use --no-build-isolation if you have setuptools>=61.0 installed
python3 -m pip install -e . --user --no-build-isolation

# Or build and install the wheel
python3 -m build --wheel --no-isolation
python3 -m pip install dist/flamepy-0.6.0-py3-none-any.whl --user

# Install development dependencies
pip install -e .[dev]

# Run tests
pytest

# Format code
ruff format

# Type checking
mypy flamepy/

Requirements

  • Python >= 3.9
  • setuptools >= 61.0 (for building from source)

Troubleshooting

If you encounter issues with the package name showing as "UNKNOWN":

  1. Make sure you have setuptools>=61.0 installed:

    python3 -m pip install --user --upgrade "setuptools>=61.0"
    
  2. Clean any stale build artifacts:

    rm -rf dist build src/flamepy.egg-info *.egg-info
    
  3. Use --no-build-isolation flag when installing:

    python3 -m pip install . --user --no-build-isolation
    

Metadata

Release files for flamepy 0.6.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 flamepy 0.6.0
File Size Uploaded
flamepy-0.6.0.tar.gz 89.5 kB Details

Built distribution (wheel)

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

Total release size: 169.5 kB

Release files / flamepy-0.6.0.tar.gz

Download URL flamepy-0.6.0.tar.gz
Size 89.5 kB
Tags Source
SHA-256 checksum
How to use checksums
63c9b56bf4d499d78258cb715387322238e8ca437da8c05bbe3273a58d03c7a5
BLAKE2b-256 checksum
How to use checksums
abf64afe55c0e0678ec05a9b47eed5d7303b2751b680cc5c5f4f8932b93cce96
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.18 {"installer":{"name":"uv","version":"0.11.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / flamepy-0.6.0-py3-none-any.whl

Download URL flamepy-0.6.0-py3-none-any.whl
Size 80.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0b4b34152b1d27d14ba1313d3970379822967fbc26a0aa5cf096ef1163ec7c54
BLAKE2b-256 checksum
How to use checksums
00dd79d764fd37391f0be15a6675f353be595dce633f173ea1b5f91b0ee876f7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.18 {"installer":{"name":"uv","version":"0.11.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

This release

0.6.0 This release

2 release files

0.5.0

2 release files

0.3.0

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