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.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-06 are priced as their model instead of the default rate, and gpt-4.1 is no longer priced as gpt-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_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 83 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 83 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.1

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.1
File Size Uploaded Provenance
steerplane-1.1.1.tar.gz 47.3 kB Without provenance Details

Built distribution (wheel)

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

Total release size: 92.6 kB

Release files / steerplane-1.1.1.tar.gz

Download URL steerplane-1.1.1.tar.gz
Size 47.3 kB
Tags Source
SHA-256 checksum
How to use checksums
51fd77eab4b7f0f3dd8b59e902d1b57270235ca04e6df161c5641b8d28caa080
BLAKE2b-256 checksum
How to use checksums
06baedc8af79ad5f8d9d52bb8e9d35033e82ad83c09740c91e2256c30d05d08d
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.1-py3-none-any.whl

Download URL steerplane-1.1.1-py3-none-any.whl
Size 45.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5a15fdd3affe48ca0e0092f538920f0eee4b33fac3a25b2427f94b3e606b85bb
BLAKE2b-256 checksum
How to use checksums
e6c98e3f8d5ccf99925b8228d13f953f0096cf8b9d7a301ce7fe08923144a12c
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.1

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