Skip to main content

SteerPlane SDK

The safety layer for the AGI era. Runtime guardrails for autonomous AI agents.

Cost limits · Loop detection · Policy engine · Human approval callbacks · SSE streaming gateway · CLI · Docker · 4 framework integrations

PyPI License Python

Install

pip install steerplane            # Core SDK
pip install steerplane[cli]       # + CLI tool
pip install steerplane[all]       # + CLI + YAML config + LangChain

Quick Start

Option 1: Gateway Mode (Zero Code Changes)

Point your existing OpenAI client to SteerPlane. Every LLM call is automatically monitored, rate-limited, and cost-tracked — including SSE streaming with mid-stream cost enforcement.

import openai

client = openai.OpenAI(
    base_url="http://localhost:8000/gateway/v1",
    api_key="sk_sp_...",  # SteerPlane API key
    default_headers={"X-LLM-API-Key": "sk-..."}
)

# All calls — including stream=True — are now guarded.
response = client.chat.completions.create(
    model="gpt-4o-mini",
    messages=[{"role": "user", "content": "Hello"}],
    stream=True  # SSE streaming with real-time cost tracking
)

Option 2: Decorator Mode

from steerplane import guard

@guard(
    agent_name="support_bot",
    max_cost_usd=10.00,
    max_steps=50,
    denied_actions=["DROP TABLE*", "rm -rf *"],
    rate_limits=[{"pattern": "send_email", "max_count": 5, "window_seconds": 60}],
    require_approval=["execute_trade*"]
)
def run_agent():
    agent.run()

Option 3: Context Manager

from steerplane import SteerPlane

sp = SteerPlane(agent_id="my_bot")

with sp.run(max_cost_usd=10.0, max_steps=50) as run:
    run.log_step("query_db", tokens=380, cost=0.002, latency_ms=45)
    run.log_step("generate_response", tokens=1240, cost=0.008, latency_ms=320)

What's New in v1.1.0

  • detect_loops now works. The docs have shown @guard(detect_loops=True) for a long time, but the parameter did not exist. It is accepted by @guard, SteerPlane.run(), RunManager and all four framework integrations, and in .steerplane.yml. Set it to False to stop loop detection from ending a run; cost, step, runtime and policy limits still apply.
  • Self-hosting for several teams: see docs/hosted-deployment.md in the repository.

What's New in v0.4.0

🌊 SSE Streaming Gateway

The AI Gateway now supports Server-Sent Events (SSE) streaming. It accumulates token costs per chunk in real time and can terminate a stream mid-response by injecting a steerplane_enforcement event when the cost ceiling is breached — without corrupting the SSE protocol.

🖥️ CLI Tool

steerplane status              # Check API health
steerplane runs list           # List recent runs
steerplane runs inspect <id>   # Inspect a run
steerplane runs kill <id>      # Mark a run as terminated
steerplane keys list           # List API keys
steerplane keys create         # Create new gateway key
steerplane logs --tail         # Live log stream

🐳 Docker Compose

Full 3-service stack in one command (for one server shared by several teams, use docker-compose.hosted.yml):

docker compose up -d
# API (8000) + Dashboard (3000) + PostgreSQL (5432)

📄 Config File (.steerplane.yml)

Project-level defaults auto-discovered from your working directory:

api_url: http://localhost:8000
agent_name: my_bot
defaults:
  max_cost_usd: 10.0
  max_steps: 100
  detect_loops: true

🔌 Framework Integrations

Native support for 4 frameworks — all use lazy imports, so framework dependencies are only required when used:

LangChain:

from steerplane.integrations import SteerPlaneLangChainHandler
handler = SteerPlaneLangChainHandler(agent_name="lc_bot", max_cost_usd=5.0)
llm = ChatOpenAI(model="gpt-4o-mini", callbacks=[handler])

OpenAI Agents SDK:

from steerplane.integrations import SteerPlaneAgentHooks
hooks = SteerPlaneAgentHooks(agent_name="openai_agent", max_cost_usd=10.0)

CrewAI:

from steerplane.integrations import SteerPlaneCrewMonitor
monitor = SteerPlaneCrewMonitor(agent_name="crew_bot", max_cost_usd=15.0)

AutoGen:

from steerplane.integrations import SteerPlaneAutoGenMonitor
monitor = SteerPlaneAutoGenMonitor(agent_name="autogen_bot", max_cost_usd=10.0)

All Features

Feature Description
🌉 AI Gateway Proxy OpenAI-compatible proxy. Point your client, get instant monitoring.
🌊 SSE Streaming Real-time chunk forwarding with mid-stream cost enforcement.
🛡️ Policy Engine Allow/deny rules, sliding-window rate limits, human-approval callbacks.
🔄 Loop Detection Sliding-window pattern detector catches infinite agent loops.
💰 Hard Cost Ceiling Per-run USD limits in the SDK, per-key monthly limits in the gateway. Built-in pricing for 23 models; for any other model, pass your own cost= to log_step.
🚫 Step Limits Cap maximum execution steps.
📊 Deep Telemetry Tokens, cost, latency per step — synced to the dashboard.
🛡️ Graceful Degradation API down? SDK still enforces guards locally.
🖥️ CLI Tool steerplane status, runs, keys, logs from terminal.
🐳 Docker Compose 3-service stack in one command.
📄 Config File .steerplane.yml for project-level defaults.
🔌 4 Integrations LangChain, OpenAI Agents SDK, CrewAI, AutoGen.

Architecture

┌─────────────┐     ┌──────────────┐     ┌────────────┐     ┌───────────────┐
│  AI Agent   │────▶│ SteerPlane   │────▶│  FastAPI    │────▶│  PostgreSQL   │
│  (Your App) │     │  SDK / GW    │     │  Server     │     │  Database     │
└─────────────┘     └──────────────┘     └────────────┘     └───────────────┘
                                                │
                                                ▼
                                         ┌───────────────┐
                                         │   Next.js     │
                                         │   Dashboard   │
                                         └───────────────┘

Tech Stack

Component Technology
Python SDK Python 3.10+, Decorator/Context Manager API, CLI, Config files
TypeScript SDK TypeScript, guard() wrapper, npm-ready
Gateway FastAPI + httpx, SSE streaming, built-in pricing for 23 models
API FastAPI, Alembic migrations, OpenAPI docs
Database PostgreSQL 16 + SQLAlchemy ORM
Infrastructure Docker Compose (API + Dashboard + PostgreSQL)
CI/CD GitHub Actions (lint, test, Docker build)
Dashboard Next.js 16, React 19, Framer Motion

License

MIT — Patent Pending

Metadata

Release files for steerplane 1.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for steerplane 1.1.0
File Size Uploaded Provenance
steerplane-1.1.0.tar.gz 45.4 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for steerplane 1.1.0
File Interpreter ABI Platform
steerplane-1.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 89.7 kB

Release files / steerplane-1.1.0.tar.gz

Download URL steerplane-1.1.0.tar.gz
Size 45.4 kB
Tags Source
SHA-256 checksum
How to use checksums
c27e5bf6df2c941409dc68ee63eff54e5f42b57e9f78ee954284423f3f1792b4
BLAKE2b-256 checksum
How to use checksums
567d02d7ebc674a8ac7001a820487b130bb9a895f504c4404d181c63a19c3718
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.7

Release files / steerplane-1.1.0-py3-none-any.whl

Download URL steerplane-1.1.0-py3-none-any.whl
Size 44.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0ea9b10662c61d59c931f2db30fc7e2072310689362b345bd891d4542cfd4815
BLAKE2b-256 checksum
How to use checksums
2f0bc6d47d01637f08803daf790c15d6466263176a8d7f2e0d31e40e07163f6e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.7

Security for steerplane 1.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page