Skip to main content

Python SDK for the Rooster multi-step agent API.

This project has been archived.

The maintainers of this project have marked this project as archived. No new releases are expected.

Project description

roosted

roosted is the lightweight Python SDK for the Rooster agent API.

Install

pip install roosted
export ROOSTER_API_KEY="your-shared-api-key"

If you are working from this repository directly, the packaged client dependencies are also listed in rooster-sdk/requirements.txt.

The SDK defaults to the provider-hosted endpoint:

https://weirdpablo--rooster-api.modal.run

Override it with base_url=... or ROOSTER_BASE_URL if you are targeting another deployment.

60-Second Start

from roosted import RoosterClient

with RoosterClient() as client:
	result = client.invoke(
		"Give me a tight market update on BTC.",
		services=False,
		cache=False,
	)
	print(result["final_response"])

That works because:

  • the SDK defaults to https://weirdpablo--rooster-api.modal.run
  • the SDK reads ROOSTER_API_KEY automatically

Quick Start

import os
from roosted import RoosterClient

client = RoosterClient(api_key=os.environ["ROOSTER_API_KEY"])

response = client.invoke(
	"Give me a terse overview of crude oil today.",
	model_name="district/1984-m3-0317",
	services=False,
	cache=False,
)

print(response["final_response"])
client.close()

Streaming

import os
from roosted import RoosterClient

with RoosterClient(api_key=os.environ["ROOSTER_API_KEY"]) as client:
	for event in client.stream(
		"Research Nvidia's latest earnings and summarize the key points.",
		services=True,
		service_names=["search_web", "read"],
		cache=True,
		max_iterations=6,
	):
		print(event["type"], event["data"])

Health Check

from roosted import RoosterClient

with RoosterClient() as client:
	print(client.health())

health() does not require authentication.

The SDK yields parsed SSE payloads as dictionaries. Typical event types are:

  • accepted
  • run_started
  • model_start
  • model_delta
  • model_response
  • service_call
  • service_response
  • result
  • completed
  • error

Async Client

import asyncio
import os
from roosted import AsyncRoosterClient


async def main():
	async with AsyncRoosterClient(api_key=os.environ["ROOSTER_API_KEY"]) as client:
		response = await client.invoke(
			"Tell me whether gold is trending or ranging.",
			services=False,
			cache=False,
		)
		print(response["final_response"])


asyncio.run(main())

Payload Options

The SDK maps directly to the API request body. The most important options are:

  • task_input
  • model_name
  • services
  • service_names
  • cache
  • max_iterations
  • reasoning_effort
  • continuous
  • images
  • system_prompt

Unknown request keys can be passed through with extra={...} in build_payload(...).

What You Get Back

invoke() returns a dictionary like:

{
	"process_id": "...",
	"model_name": "district/1984-m3-0317",
	"final_response": "...",
	"usage": {...},
	"thinking": [...],
	"service_calls": [...],
	"service_responses": [...],
	"iterations": 2,
	"events": [...],
}

stream() yields one dictionary per SSE event, for example:

{
	"type": "model_response",
	"timestamp": "2026-04-03T00:00:00+00:00",
	"process_id": "...",
	"iteration": 1,
	"data": {
		"visible_response": "..."
	}
}

Authentication

Execution requests send the shared key in the X-API-Key header. The SDK reads it from:

  • the api_key= constructor argument
  • or the ROOSTER_API_KEY environment variable

health() does not require authentication, but invoke() and stream() do.

Overriding The Endpoint

Use a different deployment like this:

from roosted import RoosterClient

client = RoosterClient(
	base_url="https://your-other-deployment.modal.run",
	api_key="your-shared-api-key",
)

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

roosted-0.0.3.tar.gz (6.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

roosted-0.0.3-py3-none-any.whl (4.7 kB view details)

Uploaded Python 3

File details

Details for the file roosted-0.0.3.tar.gz.

File metadata

  • Download URL: roosted-0.0.3.tar.gz
  • Upload date:
  • Size: 6.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for roosted-0.0.3.tar.gz
Algorithm Hash digest
SHA256 b3407e244699b016b38257dd793decea28ec43b884f4c6d137a05cf0bc8e1d3a
MD5 f7702f105070483e6e61862897c93ba1
BLAKE2b-256 044debb6ad957e346f7b4ae5da8e0e0b5c4912383f965b5bcc54947557ca0623

See more details on using hashes here.

File details

Details for the file roosted-0.0.3-py3-none-any.whl.

File metadata

  • Download URL: roosted-0.0.3-py3-none-any.whl
  • Upload date:
  • Size: 4.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for roosted-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 df4ff218ab8d2f06a35575b916b35a3b0159d79e46d2949eda96874ec68d6ea2
MD5 a9f0c127d571445563280a822d37e242
BLAKE2b-256 e7d01dd976131cfb3cc0980d542bc7b7ac8acffd0dd64f357fa189ca33086a78

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page