Python client for Infinity Media Server - GPU-accelerated image, video, and audio generation
Project description
infinity_ml
Python client for Infinity Media Server - GPU-accelerated image, video, and audio generation.
Designed to mirror the fal_client API for familiarity.
Installation
pip install infinity_ml
Quick Start
Module-level Functions (fal_client style)
from infinity_ml import run, submit, subscribe, status
# Simple blocking call
result = run("black-forest-labs/flux-dev", {"prompt": "A cat astronaut in space"})
print(result["images"][0]["download_url"])
# Submit and poll manually
handle = submit("black-forest-labs/flux-dev", {"prompt": "A cat"})
print(f"Submitted: {handle.request_id}")
# Wait with progress updates
for event in handle.iter_events():
print(f"Status: {event}")
result = handle.get()
# Subscribe with callbacks
def on_update(status):
print(f"Progress: {status}")
result = subscribe(
"black-forest-labs/flux-dev",
{"prompt": "A beautiful sunset"},
on_queue_update=on_update,
)
Client Class Usage
from infinity_ml import SyncClient, AsyncClient
# Sync client
client = SyncClient()
# Run and wait
result = client.run("black-forest-labs/flux-dev", {"prompt": "A cat"})
# Convenience methods with typed results
image_result = client.image("A futuristic city")
print(image_result.images[0].download_url)
video_result = client.video("Ocean waves at sunset", num_frames=16)
print(video_result.video.download_url)
audio_result = client.audio("Hello from Infinity!")
print(audio_result.audio.download_url)
# Download file
client.download(audio_result.audio.download_url, "output.wav")
Async Usage
import asyncio
from infinity_ml import AsyncClient, run_async, submit_async
async def main():
# Module-level async functions
result = await run_async("black-forest-labs/flux-dev", {"prompt": "A cat"})
# Or use AsyncClient
async with AsyncClient() as client:
handle = await client.submit("black-forest-labs/flux-dev", {"prompt": "A cat"})
result = await handle.get()
asyncio.run(main())
API Reference
Module-level Functions
| Function | Description |
|---|---|
run(app, args) |
Submit and wait for result (blocking) |
submit(app, args) |
Submit job, returns SyncRequestHandle |
subscribe(app, args, ...) |
Submit with status callbacks |
status(app, request_id) |
Get job status |
result(app, request_id) |
Get job result |
cancel(app, request_id) |
Cancel job (if supported) |
Async versions: run_async, submit_async, subscribe_async, status_async, result_async, cancel_async
SyncClient / AsyncClient
client = SyncClient(
base_url="http://192.222.55.191:8000", # Default demo server
default_timeout=300.0, # Max wait time (seconds)
)
Methods
| Method | Description |
|---|---|
run(app, args) |
Submit and wait for result |
submit(app, args) |
Submit job, returns handle |
subscribe(app, args, ...) |
Submit with callbacks |
status(app, request_id) |
Get job status |
result(app, request_id) |
Get job result |
get_handle(app, request_id) |
Get handle for existing job |
health() |
Server health check |
ready() |
Server readiness & GPU status |
models() |
List available models |
Convenience Methods (typed results)
| Method | Description |
|---|---|
image(prompt, ...) |
Generate image, returns ImageResult |
video(prompt, ...) |
Generate video, returns VideoResult |
audio(text, ...) |
Generate audio, returns AudioResult |
download(url, path) |
Download generated file |
Request Handles
Returned by submit(), provides methods to track job progress:
handle = submit("black-forest-labs/flux-dev", {"prompt": "A cat"})
handle.request_id # Job ID string
handle.status() # Returns Status (Queued, InProgress, Completed, Failed)
handle.get() # Wait and return result (blocking)
handle.iter_events() # Iterate status updates until complete
handle.cancel() # Cancel job (if supported)
Status Types
from infinity_ml import Queued, InProgress, Completed, Failed
status = handle.status()
if isinstance(status, Queued):
print(f"Queue position: {status.position}")
elif isinstance(status, InProgress):
print("Processing...")
elif isinstance(status, Completed):
print("Done!")
elif isinstance(status, Failed):
print(f"Error: {status.error}")
Available Models
| Model ID | Type | Example |
|---|---|---|
black-forest-labs/flux-dev |
Image | {"prompt": "A cat"} |
wan-ai/wan2.2-t2v |
Video (2.2) | {"prompt": "Waves", "guidance_scale": 4.0, "guidance_scale_2": 3.0} |
wan-ai/wan2.1-1.3b |
Video (2.1) | {"prompt": "Waves", "num_frames": 33} |
wan-ai/wan2.1-14b |
Video (2.1) | {"prompt": "Waves", "num_frames": 33} |
boson-ai/higgs-audio-v2 |
Audio | {"text": "Hello!"} |
See client_model_docs/ for detailed parameter documentation.
Caveats (Demo Version)
⚠️ This is a demo/development version:
- Hardcoded server IP: The default URL (
http://192.222.55.191:8000) points to a Lambda Labs development instance. This will be replaced with a proper domain in production. - No authentication: The demo server has no API key requirement.
- Ephemeral storage: Generated files are stored temporarily and may be cleaned up.
For production use, specify your own server URL:
from infinity_ml import SyncClient
client = SyncClient("https://your-production-server.com")
Or set the INFINITY_SERVER_URL environment variable:
export INFINITY_SERVER_URL=https://your-production-server.com
License
MIT
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file infinity_ml-0.1.0.tar.gz.
File metadata
- Download URL: infinity_ml-0.1.0.tar.gz
- Upload date:
- Size: 15.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
50ec697cde518992cd047b8b8e6d8c5f263858d47fa9853ec1e33814dc84a56e
|
|
| MD5 |
cbb709f58e62f4cf9f75ca56f5210767
|
|
| BLAKE2b-256 |
c8ccf9a7034642102f7293bc9fa9f922924a4a060b1ab63ba5b2186909f45e09
|
Provenance
The following attestation bundles were made for infinity_ml-0.1.0.tar.gz:
Publisher:
client-publish.yml on Infinity-AI-Institute/video-image-audio-serving
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
infinity_ml-0.1.0.tar.gz -
Subject digest:
50ec697cde518992cd047b8b8e6d8c5f263858d47fa9853ec1e33814dc84a56e - Sigstore transparency entry: 804191977
- Sigstore integration time:
-
Permalink:
Infinity-AI-Institute/video-image-audio-serving@db77686170302eb948f44469d759b225049297c1 -
Branch / Tag:
refs/tags/0.1.0-rel3 - Owner: https://github.com/Infinity-AI-Institute
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
client-publish.yml@db77686170302eb948f44469d759b225049297c1 -
Trigger Event:
release
-
Statement type:
File details
Details for the file infinity_ml-0.1.0-py3-none-any.whl.
File metadata
- Download URL: infinity_ml-0.1.0-py3-none-any.whl
- Upload date:
- Size: 11.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
efb0dd49a78ee6ef0f75b2d86af18a6e5409104d59444d300df17509473cc848
|
|
| MD5 |
1e9c3d857e44e125d703a5cb4cb90fb7
|
|
| BLAKE2b-256 |
d1e9a5abc6bd3611dbc3afeff54f7abb0aeb4389b0697506beaa69c8fbd0089b
|
Provenance
The following attestation bundles were made for infinity_ml-0.1.0-py3-none-any.whl:
Publisher:
client-publish.yml on Infinity-AI-Institute/video-image-audio-serving
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
infinity_ml-0.1.0-py3-none-any.whl -
Subject digest:
efb0dd49a78ee6ef0f75b2d86af18a6e5409104d59444d300df17509473cc848 - Sigstore transparency entry: 804191983
- Sigstore integration time:
-
Permalink:
Infinity-AI-Institute/video-image-audio-serving@db77686170302eb948f44469d759b225049297c1 -
Branch / Tag:
refs/tags/0.1.0-rel3 - Owner: https://github.com/Infinity-AI-Institute
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
client-publish.yml@db77686170302eb948f44469d759b225049297c1 -
Trigger Event:
release
-
Statement type: