Metadata-Version: 2.4
Name: cisora
Version: 0.1.0
Summary: Cisora SDK — flight recorder and circuit breaker for AI agents.
Project-URL: Homepage, https://cisora.io
Project-URL: Documentation, https://cisora.io/docs
Project-URL: Repository, https://github.com/rahathusain/cisora-app
Author: Cisora
License: MIT
Keywords: agents,ai,anthropic,claude,governance,openai,owasp,security
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Security
Requires-Python: >=3.9
Requires-Dist: httpx>=0.27.0
Description-Content-Type: text/markdown

# cisora

The flight recorder and circuit breaker for your AI agents — Python SDK.

```bash
pip install cisora
```

```python
import os
from cisora import Cisora

cisora = Cisora(
    api_key=os.environ["CISORA_API_KEY"],
    agent_name="customer-support-bot",
)

# Wrap a model call
with cisora.model_call("claude-sonnet-4-5") as call:
    reply = anthropic.messages.create(...)
    call.outputs = reply

# Wrap a tool call
with cisora.tool("send_email", metadata={"recipient": email}) as call:
    result = resend.emails.send(...)
    call.outputs = result

# Synchronous policy check
decision = cisora.check(
    action_type="tool_call",
    tool_name="database_write",
    metadata={"table": "users", "field": "email"},
)
if decision["decision"] != "allow":
    raise RuntimeError(f"Blocked by Cisora: {decision}")
```

## Async support

```python
import asyncio
from cisora import AsyncCisora

cisora = AsyncCisora(api_key="cisora_live_...", agent_name="my-agent")

async def main():
    async with cisora.tool("send_email") as call:
        result = await send_email_async(...)
        call.outputs = result

    await cisora.flush()
```

## License

MIT
