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.1.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.1-py3-none-any.whl (4.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: roosted-0.0.1.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.1.tar.gz
Algorithm Hash digest
SHA256 44bac5efebc4c0556f14b64eaae85e012089c8fe6cc717748fb1b86ee4cad22b
MD5 7e1eb568f9f4190396f152cbe9a23f94
BLAKE2b-256 b25afcc7922505f6c7b002de6903e4c83907d36b4a000c63c8a4e151aeb8bed6

See more details on using hashes here.

File details

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

File metadata

  • Download URL: roosted-0.0.1-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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 4936198b443bfdb229e1faa201d868ac9f14f68b055b977cc582b3c81c3df653
MD5 9239e2ab6dfe3775f03ee386a57e5569
BLAKE2b-256 540c59387f478837762a16ef2be8b48dad3bd5ebefe555a6f35df4df9840b676

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