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":
-
Make sure you have
setuptools>=61.0installed:python3 -m pip install --user --upgrade "setuptools>=61.0"
-
Clean any stale build artifacts:
rm -rf dist build src/flamepy.egg-info *.egg-info
-
Use
--no-build-isolationflag 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)
| File | Size | Uploaded | |
|---|---|---|---|
| flamepy-0.6.0.tar.gz | 89.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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}
|