SDK for building orchagent agents - enables agent-to-agent calls with local execution support
Project description
orchagent SDK
Official Python SDK for building orchagent agents with agent-to-agent call support.
Installation
pip install orchagent-sdk
Quick Start
from orchagent import AgentClient
# Create a client (uses ORCHAGENT_SERVICE_KEY env var)
client = AgentClient()
# Call another agent
async def my_orchestrator(input_data):
result = await client.call("joe/leak-finder@v1", {"url": input_data["repo"]})
return result
Features
- Agent-to-agent calls - Call other agents from within your orchestrator agent
- Service key authentication - Automatic auth via
ORCHAGENT_SERVICE_KEYenv var - Call chain tracking - Prevents circular dependencies (A calls B calls A)
- Deadline propagation - Timeout context flows through the call chain
- Local execution mode - Test orchestrators locally with
orch run --with-deps
Usage
Basic Usage
from orchagent import AgentClient
client = AgentClient()
result = await client.call("org/agent@v1", {"input": "data"})
# result is the raw agent output — the gateway envelope is auto-unwrapped
With FastAPI
Extract call context from incoming requests:
from fastapi import Request
from orchagent import AgentClient
@app.post("/analyze")
async def analyze(request: Request, input: AnalyzeInput):
# Automatically extracts call chain, deadline, etc. from request headers
client = AgentClient.from_request(request)
secrets = await client.call("joe/leak-finder@v1", {"url": input.repo_url})
return {"secrets": secrets}
Error Handling
from orchagent import (
AgentClient,
DependencyCallError,
CallChainCycleError,
TimeoutExceededError,
)
try:
result = await client.call("org/agent@v1", data)
except CallChainCycleError:
# Would create a circular dependency
pass
except TimeoutExceededError:
# Deadline passed
pass
except DependencyCallError as e:
# Agent returned an error
print(f"Status: {e.status_code}, Body: {e.response_body}")
Local Execution Mode
When running with orch run --with-deps, the SDK automatically detects local mode and spawns sub-agents as local subprocesses instead of making HTTP calls.
# Agents are executed locally as subprocesses
orch run orchagent/security-review --with-deps --input '{"path": "."}'
This is controlled by the ORCHAGENT_LOCAL_EXECUTION=true environment variable, which the CLI sets automatically.
Environment Variables
| Variable | Description |
|---|---|
ORCHAGENT_SERVICE_KEY |
Service key for API authentication. Auto-injected by the gateway for agents with manifest dependencies — do not add to required_secrets |
ORCHAGENT_GATEWAY_URL |
Gateway URL (default: https://api.orchagent.io) |
ORCHAGENT_LOCAL_EXECUTION |
Enable local subprocess execution |
ORCHAGENT_AGENTS_DIR |
Path to local agents (default: ~/.orchagent/agents) |
API Reference
AgentClient
class AgentClient:
def __init__(
self,
service_key: str | None = None, # From ORCHAGENT_SERVICE_KEY
gateway_url: str | None = None, # From ORCHAGENT_GATEWAY_URL
call_chain: list[str] | None = None, # Current call chain
deadline_ms: int | None = None, # Deadline timestamp
max_hops: int | None = None, # Max remaining hops
): ...
@classmethod
def from_request(cls, request, service_key=None) -> "AgentClient": ...
async def call(
self,
agent_ref: str, # "org/agent@version"
input_data: dict, # Input payload
endpoint: str | None, # Optional endpoint override
timeout: float | None, # Optional timeout in seconds
) -> Any: ...
# Returns the raw agent output, not the gateway envelope.
# The gateway wraps responses in {"data": ..., "metadata": ...} —
# the SDK auto-unwraps this so you get the agent's output directly.
Exceptions
AgentClientError- Base exceptionDependencyCallError- Agent call failed (hasstatus_code,response_body)CallChainCycleError- Would create circular dependencyTimeoutExceededError- Deadline passedLocalExecutionError- Subprocess execution failed (hasexit_code,stderr)
License
MIT
Project details
Release history Release notifications | RSS feed
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 orchagent_sdk-0.1.4.tar.gz.
File metadata
- Download URL: orchagent_sdk-0.1.4.tar.gz
- Upload date:
- Size: 12.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3e8bcda009157d8ab5cdd422cd61904796782b8a5d3c49e18f91291373cf141d
|
|
| MD5 |
cd3adb694f470f2f51f26e8455f96b96
|
|
| BLAKE2b-256 |
b15af997bb93acb2ed29d13acfbd0fa50dcfa0e780d91c15574387769d0a0710
|
File details
Details for the file orchagent_sdk-0.1.4-py3-none-any.whl.
File metadata
- Download URL: orchagent_sdk-0.1.4-py3-none-any.whl
- Upload date:
- Size: 8.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
32c033586c4ad398834fbf51f36588741f10d7e0c3e9b6368662e0dc03941ab3
|
|
| MD5 |
fb4fb67d9ee80c8aead465acfe4724b3
|
|
| BLAKE2b-256 |
eabfae70f113456a27623d385b87eaf14c55ab86da9fcb0c7680f526d249a762
|