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
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.2
- Built-in pricing now covers 106 models. Adds Mistral's current models by their API ids
(for example
mistral-large-4,mistral-medium-3-5,codestral-2508), GPT-5.6 Cyber and GPT-5.5 Cyber, GPT-Rosalind, Gemini Robotics-ER 2, and the Gemini and Mistral-latestaliases. - Fixes ids that were priced as an older model with a similar name:
gemini-pro-latestwas priced as the oldgemini-prorow,gpt-5.6-cyberasgpt-5, and current Mistral ids as the older Mistral rows. - Audio, image, video, speech, realtime, transcription and embedding models are not in the table, and nor
are ids with a cloud or router prefix (such as Bedrock's
anthropic.ids). For those, pass your own cost per step:run.log_step(..., cost=0.0042).
What's New in v1.1.1
- Built-in pricing now covers 83 models, checked against the OpenAI, Anthropic and Google pricing pages on 21 Oct 2026 (current GPT, Claude and Gemini models, by their API ids).
- Dated model names such as
gpt-4o-2024-08-06are priced as their model instead of the default rate, andgpt-4.1is no longer priced asgpt-4. - For a model that is not in the table, pass your own cost per step:
run.log_step(..., cost=0.0042).
What's New in v1.1.0
detect_loopsnow 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(),RunManagerand all four framework integrations, and in.steerplane.yml. Set it toFalseto stop loop detection from ending a run; cost, step, runtime and policy limits still apply.- Self-hosting for several teams: see
docs/hosted-deployment.mdin 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 106 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 106 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 |
Links
- GitHub: github.com/vijaym2k6/SteerPlane
- npm: npmjs.com/package/steerplane
- Dashboard:
http://localhost:3000 - API Docs:
http://localhost:8000/docs
License
MIT — Patent Pending
Metadata
Release files for steerplane 1.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| steerplane-1.1.2.tar.gz | 49.1 kB | Without provenance | Details for steerplane-1.1.2.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| steerplane-1.1.2-py3-none-any.whl | Python 3 | none | any | Details for steerplane-1.1.2-py3-none-any.whl |
Total release size: 95.1 kB
Release files / steerplane-1.1.2.tar.gz
| Download URL | steerplane-1.1.2.tar.gz |
|---|---|
| Size | 49.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4942a7f2245d49c12c9463b4fb0296697eb265f542d68232ab332c7b602a41d6
|
|
BLAKE2b-256 checksum How to use checksums |
7dd02b5084210ab753807a2e87091fead7980b956ed72ae4fd97a791bfc056ab
|
| 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.2-py3-none-any.whl
| Download URL | steerplane-1.1.2-py3-none-any.whl |
|---|---|
| Size | 45.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
48b1e779e50d0479d3f83b42ca9f49e2dea35822b75b11a289dd6454d344e9ab
|
|
BLAKE2b-256 checksum How to use checksums |
6333d4f9c6e5c532cd04da55ec64316ea2b24e74a356f00b6c02879f3dbb8deb
|
| 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.2
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.
To learn more about protecting yourself from malicious actors, visit our package security documentation.