01 / THE SIGNAL

我们发现了什么

Show HN: SteerPlane – Deterministic runtime guardrails for AI agents.

  • 来源:Hacker News(发现于 2026-08-02)
  • 证据等级:C · 存在定价或订阅线索;有收费设计不等于已有收入。
  • 商业模式:待核验
  • 主题:AI Agent
  • 初筛评分:14.5/100 · 收录 1 次
#工作流自动化#付费线索#产品发现
02 / SOURCE & EVIDENCE

证据,比故事更重要。

存在定价或订阅线索;有收费设计不等于已有收入。

规则清洗与初筛,未经人工商业核验。原文语境、实际客户和付费情况仍需自行验证。

引用与数字披露

来源类型(原作者自述/第三方测算/媒体转引)需采集端标注,本版尚未落字段。

短句引用
作者
未标注
抓取日期
来源类型
未标注
数字口径
币种
未标注
口径
未标注
披露主体
未标注
披露日期
未标注

中文辅助译文(节选·触顶截断)

vijaym2k6

/

SteerPlane

公开

通知 你必须登录才能更改通知设置

Fork 1

Star 4

main

分支 标签

跳转到文件

代码 打开更多操作菜单

最新提交

历史

80 次提交

80 次提交

文件夹和文件

名称 名称 最后提交信息

最后提交日期

.github/ workflows

.github/ workflows

api

api

assets

assets

dashboard

dashboard

docs

docs

examples

examples

scripts

scripts

sdk-ts

sdk-ts

sdk

sdk

.env.example

.env.example

.gitignore

.gitignore

CHANGELOG.md

CHANGELOG.md

CONTRIBUTING.md

CONTRIBUTING.md

LICENSE

LICENSE

PATENTS.md

PATENTS.md

README.md

README.md

docker-compose.yml

docker-compose.yml

ruff.toml

ruff.toml

查看所有文件

仓库文件导航

AGI 时代的安全层。面向自主 AI 代理的运行时护栏。

成本限制 · 循环检测 · 双重强制(Kill/Alert) · 流式网关 · 策略引擎 · 人机协同 · CLI · Docker · 4 个框架集成

pip install steerplane · npm install steerplane

🌐 steerplane.com

问题所在

AI 代理可以调用 API、执行代码、浏览网页,并做出现实世界的决策。如果没有护栏:

🔄 一个配置错误的代理可能进入无限循环

💸 一个失控的代理可能在一夜之间烧掉 $10,000+ 的 API 额度

💀 代理可能在零可见性的情况下执行破坏性操作

SteerPlane 用一行代码解决此问题。

工作原理

from steerplane import guard

@ guard ( agent_name = "support_bot" , max_cost_usd = 10.00 , max_steps = 50 , denied_actions = [ "delete_" , "sudo_" ], enforcement = "alert" , alert_threshold = 0.8 , alert_timeout_sec = 1800 , ) def run_agent (): # 你的代理正常运行。 # SteerPlane 静默监控每一步。 # 财务/运行时限制可以暂停以等待人工审批。 # 循环和策略违规仍会立即终止。 agent . run ()

🚀 SteerPlane | 运行已开始

运行 ID:a3f8d2b1-...

代理:support_bot

限制:$10.00 成本 / 50 步

─────────────────────────────────────────────

✅ 步骤 1:query_database | 380 tokens | $0.0020 | 45ms

✅ 步骤 2:call_llm_analyze | 1240 tokens | $0.0080 | 320ms

✅ 步骤 3:search_knowledge | 560 tokens | $0.0030 | 89ms

✅ 步骤 4:generate_response | 1800 tokens | $0.0120 | 450ms

✅ 步骤 5:send_notification | 120 tokens | $0.0010 | 200ms

─────────────────────────────────────────────

✅ SteerPlane | 运行已完成

步骤:5

成本:$0.0260

Tokens:4,100

时长:1.1s

功能

Feature What It Does

🔄 循环检测 O(W²) 滑动窗口算法可在亚毫秒级时间内捕获单动作、交替和多步重复模式 — 无需 LLM 调用

💰 成本上限 每次运行(SDK)/ 每会话(网关)美元限制,在每一步之后检查,因此超支被限制在单步之内。内置 OpenAI、Anthropic、Google、Meta 和 Mistral 等 25+ 模型的定价

🌊 流式网关 实时 SSE 数据块转发,带有流中途成本终止功能 — 如果在流式传输期间超出预算,SteerPlane 会注入终止事件并切断连接

🛡️ 策略引擎 使用 glob 模式和滑动窗口速率限制的允许/拒绝列表

🌐 网关代理 兼容 OpenAI 的 API 代理 — 只需更改 base_url 即可实现零代码强制执行。代理通过网关传递其提供商密钥,网关在转发到上游之前强制所有流量通过强制执行

🖥️ 实时仪表板 Next.js 仪表板,具有自动刷新、动画时间线、成本分解和策略管理

🔧 CLI 工具 steerplane runs list、steerplane status、steerplane keys create — 从终端管理一切

📄 配置文件 .steerplane.yml 自动发现 — 无需在源代码中硬编码限制即可设置默认值

🔗 4 个框架集成 LangChain、OpenAI Agents SDK、CrewAI、AutoGen — 零配置即插即用处理器

🐳 Docker Compose 一条命令即可启动 API + Dashboard + PostgreSQL

🔌 优雅降级 如果 API 宕机,SDK 在本地强制执行所有限制。代理永远不会被置于无保护状态

🧪 CI/CD GitHub Actions 流水线 — 每次推送时执行 lint、测试、构建 Docker

托管/企业版:SteerPlane 托管计划提供 alert 模式的人工审批工作流(带电子邮件/Webhook 通知)、服务端提供商密钥保险库,以及 Redis 支持的多工作进程网关状态。开源 SDK 仍提供 enforcement="alert" 客户端选项,使其可以开箱即用地对接托管或企业部署 — 此处自托管仅提供免费版,运行 kill 模式强制执行。

快速开始

选项 A:Docker(推荐)

git clone https://github.com/vijaym2k6/SteerPlane.git cd SteerPlane cp .env.example .env docker compose up -d

API 位于 localhost:8000 · Dashboard 位于 localhost:3000 · PostgreSQL 自动配置。

选项 B:手动设置

# 安装 SDK pip install steerplane

# 启动 API cd api && pip install -r requirements.txt uvicorn app.main:app --reload --port 8000

# 启动 Dashboard cd dashboard && npm install && npm run dev

选项 C:CLI

pip install steerplane[cli] steerplane status # 检查 API 健康状态 steerplane runs list # 列出最近的运行 steerplane keys create -n prod # 生成 API 密钥

运行演示代理

python examples/simple_agent/agent_example.py

打开 localhost:3000 → 实时查看你的代理运行。

SDK 参考

Python — 装饰器 API

from steerplane import guard

@ guard ( agent_name = "my_bot" , max_cost_usd = 10.00 , max_steps = 50 , max_runtime_sec = 300 , enforcement = "alert" , alert_threshold = 0.8 , denied_actions = [ "delete_" , "sudo_" ], allowed_actions = [ "search_" , "read_" , "generate_" ], rate_limits = [{ "pattern" : "call_llm" , "max_count" : 20 , "window_seconds" : 60 }], ) def run_my_agent (): agent . run ()

Python — 上下文管理器 API

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" , tokens = 1240 , cost = 0.008 , latency_ms = 320 )

TypeScript

import { guard , GuardOptions } from 'steerplane' ;

const protectedAgent = guard ( async ( run ) => { await run . logStep ( { action : 'query_db' , tokens : 380 , cost : 0.002 } ) ; await run . logStep ( { action : 'generate' , tokens : 1240 , cost : 0.008 } ) ; return 'done' ; } , { agentName : 'support_bot' , maxCostUsd : 10.0 , maxSteps : 50 , policy : { deniedActions : [ 'delete_' , 'sudo_' ] , } , } ) ;

const result = await protectedAgent ( ) ;

异常处理

from steerplane . exceptions import ( CostLimitExceeded , LoopDetectedError , StepLimitExceeded , PolicyViolationError , )

@ guard ( max_cost_usd = 5 , denied_actions = [ "delete_*" ]) def run_agent (): try : agent . run () except CostLimitExceeded as e : print ( f"超出预算:{ e } " ) except LoopDetectedError as e : print ( f"检测到循环:{ e } " ) except StepLimitExceeded as e : print ( f"达到步骤限制:{ e } " ) except PolicyViolationError as e : print ( f"策略违规:{ e . action } 被 { e . rule } 阻止" )

配置文件(.steerplane.yml)

在项目根目录的 .steerplane.yml 中设置默认值,而不是硬编码限制:

api_url : http://localhost:8000 agent_name : my_bot

defaults : max_cost_usd : 25.0 max_steps : 100 max_runtime_sec : 1800 enforcement : alert loop_window_size : 10

policy : denied_actions : - " delete_ " - " drop_ " rate_limits : - pattern : " search_* " max_count : 10 window_seconds : 60

alerts : email : ops@company.com webhook_url : https://hooks.slack.com/... threshold : 0.8

合并顺序:显式装饰器参数 → .steerplane.yml → 硬编码默认值。配置文件通过从当前目录向上遍历自动发现。

框架集成

LangChain

from steerplane . integrations . langchain import SteerPlaneCallbackHandler

handler = SteerPlaneCallbackHandler ( agent_name = "research_bot" , max_cost_usd = 5.0 , max_steps = 30 , )

llm = ChatOpenAI ( model = "gpt-4o" , callbacks = [ handler ]) agent . run ( "Analyze this data" , callbacks = [ handler ]) handler . finish ()

OpenAI Agents SDK

from steerplane . integrations . openai_agents import SteerPlaneAgentHooks

hooks = SteerPlaneAgentHooks ( agent_name = "my_openai_agent" , max_cost_usd = 10.0 , max_steps = 100 , )

# 便捷包装器 result = await hooks . run ( agent , "Hello!" )

# 或手动生命周期 hooks . start () result = await Runner . run ( agent , "Hello!" ) hooks . finish ()

CrewAI

from steerplane . integrations . crewai import SteerPlaneCrewMonitor

monitor = SteerPlaneCrewMonitor ( agent_name = "my_crew" , max_cost_usd = 25.0 , max_steps = 200 , )

crew = Crew ( agents = [ researcher , writer ], tasks = [ research_task , write_task ], step_callback = monitor . step_callback , )

result = monitor . kickoff ( crew )

AutoGen

from steerplane . integrations . autogen import SteerPlaneAutoGenMonitor

monitor = SteerPlaneAutoGenMonitor ( agent_name = "my_autogen_group" , max_cost_usd = 15.0 , max_steps = 150 , )

result = monitor . initiate_chat ( user_proxy , assistant , message = "Hello!" )

仅安装你需要的集成:

pip install steerplane[langchain] # LangChain pip install steerplane[cli] # CLI 工具 pip install steerplane[yaml] # 配置文件支持 pip install steerplane[all] # 全部

网关代理(零代码模式)

对于你无法修改的代理,SteerPlane 提供兼容 OpenAI 的网关代理,具有实时流式传输和流中途成本强制执行功能 :

from openai import OpenAI

client = OpenAI ( base_url = "http://localhost:8000/gateway/v1" , api_key = "sk_sp_your_steerplane_key" , # 真实的提供商密钥发送到网关,再由网关转发到上游。 default_headers = { "X-LLM-API-Key" : "sk-your-real-provider-key" }, )

# 流式传输有效 — 数据块实时转发 for chunk in client . chat . completions . create ( model = "gpt-4o" , messages = [{ "role" : "user" , "content" : "Hello" }], stream = True , ): print ( chunk . choices [ 0 ]. delta . content , end = "" )

网关针对每个请求强制执行的内容:

策略规则(deny/allow/rate limits)

会话成本与上限比较(包括流中途终止)

SHA-256 提示哈希循环检测

每月预算跟踪

Anthropic + OpenAI 流式支持

安全模型:代理将其 OpenAI 客户端指向网关,并在 X-LLM-API-Key 头中传递真实的提供商密钥。网关验证 SteerPlane 密钥,对每个请求运行强制执行(策略 → 成本 → 循环),然后才使用该提供商密钥将其转发到上游 — 因此代理无法直接访问提供商或绕过护栏。

服务端提供商密钥保险库(因此代理永远不会发送 X-LLM-API-Key )在托管/企业计划中可用。

CLI 工具

pip install steerplane[cli]

Command Description

steerplane status 检查 API 服务器健康状态

steerplane runs list 列出最近的运行(按 --status 过滤)

steerplane runs inspect 完整运行详情及逐步表格

steerplane runs kill 强制终止正在进行的运行

steerplane keys list 列出所有 API 密钥

steerplane keys create --name prod 生成新的 API 密钥

steerplane keys revoke 撤销密钥

steerplane logs --tail 实时轮询运行中的代理

策略引擎

策略引擎在任何成本发生之前运行,按严格优先级顺序执行规则:

拒绝列表 → 允许列表 → 速率限制

Rule Type How It Works

拒绝列表 Glob 模式(例如 delete_* ) — 任何匹配项立即被阻止

允许列表 如果设置,操作必须至少匹配一个模式才能继续

速率限制 每个模式的滑动窗口计数器 — 当计数超过阈值时阻止

在 Python 和 TypeScript SDK、仪表板 UI、REST API 和 .steerplane.yml 配置文件中可用。

强制执行模式

自托管免费版运行 kill 模式 :对任何违规行为立即、确定性地终止。

SDK 还提供 enforcement="alert" 选项(暂停 → 通知

……(正文超出本站单页篇幅上限,此处截断;完整表述请见下方原文入口。)

译文由上游机器翻译生成,可能有误;判断请以英文原文为准。

英文原文(来源本站未改写)

vijaym2k6

/

SteerPlane

Public

Notifications You must be signed in to change notification settings

Fork 1

Star 4

main

Branches Tags

Go to file

Code Open more actions menu

Latest commit

History

80 Commits

80 Commits

Folders and files

Name Name Last commit message

Last commit date

.github/ workflows

.github/ workflows

api

api

assets

assets

dashboard

dashboard

docs

docs

examples

examples

scripts

scripts

sdk-ts

sdk-ts

sdk

sdk

.env.example

.env.example

.gitignore

.gitignore

CHANGELOG.md

CHANGELOG.md

CONTRIBUTING.md

CONTRIBUTING.md

LICENSE

LICENSE

PATENTS.md

PATENTS.md

README.md

README.md

docker-compose.yml

docker-compose.yml

ruff.toml

ruff.toml

View all files

Repository files navigation

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

Cost limits · Loop detection · Dual enforcement (Kill/Alert) · Streaming gateway · Policy engine · Human-in-the-loop · CLI · Docker · 4 framework integrations

pip install steerplane · npm install steerplane

🌐 steerplane.com

The Problem

AI agents can call APIs, execute code, browse the web, and make real-world decisions. Without guardrails:

🔄 A single misconfigured agent can enter an infinite loop

💸 A runaway agent can burn through $10,000+ in API credits overnight

💀 Agents can take destructive actions with zero visibility

SteerPlane fixes this with one line of code.

How It Works

from steerplane import guard

@ guard ( agent_name = "support_bot" , max_cost_usd = 10.00 , max_steps = 50 , denied_actions = [ "delete_" , "sudo_" ], enforcement = "alert" , alert_threshold = 0.8 , alert_timeout_sec = 1800 , ) def run_agent (): # Your agent runs normally. # SteerPlane silently monitors every step. # Financial/runtime limits can pause for human approval. # Loops and policy violations still terminate immediately. agent . run ()

🚀 SteerPlane | Run Started Run ID: a3f8d2b1-... Agent: support_bot Limits: $10.00 cost / 50 steps ───────────────────────────────────────────── ✅ Step 1: query_database | 380 tokens | $0.0020 | 45ms ✅ Step 2: call_llm_analyze | 1240 tokens | $0.0080 | 320ms ✅ Step 3: search_knowledge | 560 tokens | $0.0030 | 89ms ✅ Step 4: generate_response | 1800 tokens | $0.0120 | 450ms ✅ Step 5: send_notification | 120 tokens | $0.0010 | 200ms ─────────────────────────────────────────────

✅ SteerPlane | Run COMPLETED Steps: 5 Cost: $0.0260 Tokens: 4,100 Duration: 1.1s

Features

Feature What It Does

🔄 Loop Detection O(W²) sliding-window algorithm catches single-action, alternating, and multi-step repeating patterns in sub-millisecond time — no LLM calls

💰 Cost Ceiling Per-run (SDK) / per-session (gateway) USD limits, checked after each step so overshoot is bounded to a single step. Built-in pricing for 25+ models across OpenAI, Anthropic, Google, Meta, and Mistral

🌊 Streaming Gateway Real-time SSE chunk forwarding with mid-stream cost kill — if the budget is exceeded during a stream, SteerPlane injects a termination event and cuts the connection

🛡️ Policy Engine Allow/deny lists with glob patterns and sliding-window rate limits

🌐 Gateway Proxy OpenAI-compatible API proxy — change only base_url for zero-code enforcement. The agent passes its provider key through the gateway, which forces all traffic through enforcement before forwarding upstream

🖥️ Real-Time Dashboard Next.js dashboard with auto-refresh, animated timelines, cost breakdowns, and policy management

🔧 CLI Tool steerplane runs list , steerplane status , steerplane keys create — manage everything from your terminal

📄 Config File .steerplane.yml auto-discovery — set defaults without hardcoding limits in source code

🔗 4 Framework Integrations LangChain, OpenAI Agents SDK, CrewAI, AutoGen — zero-config drop-in handlers

🐳 Docker Compose One command brings up API + Dashboard + PostgreSQL

🔌 Graceful Degradation If the API goes down, the SDK enforces all limits locally. Agents are never unprotected

🧪 CI/CD GitHub Actions pipeline — lint, test, build Docker on every push

Hosted/Enterprise tier: alert-mode human-approval workflows (with email/webhook notifications), server-side provider-key vaulting, and Redis-backed multi-worker gateway state are available on SteerPlane's hosted plan. The open-source SDK still exposes the enforcement="alert" client options so it works out of the box against a hosted or enterprise deployment — self-hosting only the free tier here runs kill-mode enforcement.

Quick Start

Option A: Docker (Recommended)

git clone https://github.com/vijaym2k6/SteerPlane.git cd SteerPlane cp .env.example .env docker compose up -d

API at localhost:8000 · Dashboard at localhost:3000 · PostgreSQL auto-configured.

Option B: Manual Setup

# Install the SDK pip install steerplane

# Start the API cd api && pip install -r requirements.txt uvicorn app.main:app --reload --port 8000

# Start the Dashboard cd dashboard && npm install && npm run dev

Option C: CLI

pip install steerplane[cli] steerplane status # Check API health steerplane runs list # List recent runs steerplane keys create -n prod # Generate API key

Run the Demo Agent

python examples/simple_agent/agent_example.py

Open localhost:3000 → See your agent run in real time.

SDK Reference

Python — Decorator API

from steerplane import guard

@ guard ( agent_name = "my_bot" , max_cost_usd = 10.00 , max_steps = 50 , max_runtime_sec = 300 , enforcement = "alert" , alert_threshold = 0.8 , denied_actions = [ "delete_" , "sudo_" ], allowed_actions = [ "search_" , "read_" , "generate_" ], rate_limits = [{ "pattern" : "call_llm" , "max_count" : 20 , "window_seconds" : 60 }], ) def run_my_agent (): agent . run ()

Python — Context Manager API

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" , tokens = 1240 , cost = 0.008 , latency_ms = 320 )

TypeScript

import { guard , GuardOptions } from 'steerplane' ;

const protectedAgent = guard ( async ( run ) => { await run . logStep ( { action : 'query_db' , tokens : 380 , cost : 0.002 } ) ; await run . logStep ( { action : 'generate' , tokens : 1240 , cost : 0.008 } ) ; return 'done' ; } , { agentName : 'support_bot' , maxCostUsd : 10.0 , maxSteps : 50 , policy : { deniedActions : [ 'delete_' , 'sudo_' ] , } , } ) ;

const result = await protectedAgent ( ) ;

Exception Handling

from steerplane . exceptions import ( CostLimitExceeded , LoopDetectedError , StepLimitExceeded , PolicyViolationError , )

@ guard ( max_cost_usd = 5 , denied_actions = [ "delete_*" ]) def run_agent (): try : agent . run () except CostLimitExceeded as e : print ( f"Budget exceeded: { e } " ) except LoopDetectedError as e : print ( f"Loop detected: { e } " ) except StepLimitExceeded as e : print ( f"Step limit hit: { e } " ) except PolicyViolationError as e : print ( f"Policy violation: { e . action } blocked by { e . rule } " )

Config File (.steerplane.yml)

Set defaults in a .steerplane.yml at your project root instead of hardcoding limits:

api_url : http://localhost:8000 agent_name : my_bot

defaults : max_cost_usd : 25.0 max_steps : 100 max_runtime_sec : 1800 enforcement : alert loop_window_size : 10

policy : denied_actions : - " delete_ " - " drop_ " rate_limits : - pattern : " search_* " max_count : 10 window_seconds : 60

alerts : email : ops@company.com webhook_url : https://hooks.slack.com/... threshold : 0.8

Merge order: Explicit decorator params → .steerplane.yml → hardcoded defaults. The config file is auto-discovered by walking up from the current directory.

Framework Integrations

LangChain

from steerplane . integrations . langchain import SteerPlaneCallbackHandler

handler = SteerPlaneCallbackHandler ( agent_name = "research_bot" , max_cost_usd = 5.0 , max_steps = 30 , )

llm = ChatOpenAI ( model = "gpt-4o" , callbacks = [ handler ]) agent . run ( "Analyze this data" , callbacks = [ handler ]) handler . finish ()

OpenAI Agents SDK

from steerplane . integrations . openai_agents import SteerPlaneAgentHooks

hooks = SteerPlaneAgentHooks ( agent_name = "my_openai_agent" , max_cost_usd = 10.0 , max_steps = 100 , )

# Convenience wrapper result = await hooks . run ( agent , "Hello!" )

# Or manual lifecycle hooks . start () result = await Runner . run ( agent , "Hello!" ) hooks . finish ()

CrewAI

from steerplane . integrations . crewai import SteerPlaneCrewMonitor

monitor = SteerPlaneCrewMonitor ( agent_name = "my_crew" , max_cost_usd = 25.0 , max_steps = 200 , )

crew = Crew ( agents = [ researcher , writer ], tasks = [ research_task , write_task ], step_callback = monitor . step_callback , )

result = monitor . kickoff ( crew )

AutoGen

from steerplane . integrations . autogen import SteerPlaneAutoGenMonitor

monitor = SteerPlaneAutoGenMonitor ( agent_name = "my_autogen_group" , max_cost_usd = 15.0 , max_steps = 150 , )

result = monitor . initiate_chat ( user_proxy , assistant , message = "Hello!" )

Install only the integration you need:

pip install steerplane[langchain] # LangChain pip install steerplane[cli] # CLI tool pip install steerplane[yaml] # Config file support pip install steerplane[all] # Everything

Gateway Proxy (Zero-Code Mode)

For agents you can't modify, SteerPlane provides an OpenAI-compatible gateway proxy with real-time streaming and mid-stream cost enforcement :

from openai import OpenAI

client = OpenAI ( base_url = "http://localhost:8000/gateway/v1" , api_key = "sk_sp_your_steerplane_key" , # The real provider key is sent to the gateway, which forwards it upstream. default_headers = { "X-LLM-API-Key" : "sk-your-real-provider-key" }, )

# Streaming works — chunks forwarded in real-time for chunk in client . chat . completions . create ( model = "gpt-4o" , messages = [{ "role" : "user" , "content" : "Hello" }], stream = True , ): print ( chunk . choices [ 0 ]. delta . content , end = "" )

What the gateway enforces per request:

Policy rules (deny/allow/rate limits)

Session cost vs. ceiling (including mid-stream kill)

SHA-256 prompt-hash loop detection

Monthly budget tracking

Anthropic + OpenAI streaming support

Security model: The agent points its OpenAI client at the gateway and passes the real provider key in the X-LLM-API-Key header. The gateway authenticates the SteerPlane key, runs every request through enforcement (policy → cost → loop), and only then forwards it upstream with that provider key — so the agent can't reach the provider directly or bypass the guardrails.

Server-side provider-key vaulting (so the agent never sends X-LLM-API-Key ) is available on the hosted/enterprise plan.

CLI Tool

pip install steerplane[cli]

Command Description

steerplane status Check API server health

steerplane runs list List recent runs (filter by --status )

steerplane runs inspect Full run detail with step-by-step table

steerplane runs kill Force-terminate a live run

steerplane keys list List all API keys

steerplane keys create --name prod Generate a new API key

steerplane keys revoke Revoke a key

steerplane logs --tail Live polling of running agents

Policy Engine

The policy engine runs before any cost is incurred, enforcing rules in strict priority order:

Deny List → Allow List → Rate Limits

Rule Type How It Works

Deny list Glob patterns (e.g. delete_* ) — any match is blocked immediately

Allow list If set, action must match at least one pattern to proceed

Rate limits Sliding-window counters per pattern — blocks when count exceeds threshold

Available in Python and TypeScript SDKs, the dashboard UI, REST API, and .steerplane.yml config file.

Enforcement Mode

The self-hosted free tier runs kill mode : immediate, deterministic termination on any violation.

The SDK also exposes an enforcement="alert" option (pause → notify a

... (truncated at the site's per-page length limit; see the source link below for the full text.)

出处https://github.com/vijaym2k6/SteerPlane抓取日期 · 采集源 Hacker News

03 / EVIDENCE GAPS

这条还缺什么证据?

下面每条都由本条已有字段推出(等级、理由、商业模式、来源次数、是否演示), 本站不生成推测性结论;通用验证方法放在方法论页。

  • 可核验的收入或付费证据查官网定价页与付费口径;第三方数据源(如 GetLatka)只作旁证,需标注来源与时点。
  • 商业模式未定确认按席位/按用量/授权还是开源托管版收费;开源项目另查 LICENSE 与是否存在付费版。
  • 只有单一来源找一手站点或其他渠道是否重复出现同一产品;社区热帖数量不等于商业进展。

通用验证清单(谁有这个问题/谁愿意付费/一个人能交付哪一小步)见我们的筛选方法。

04 / SIGNAL HISTORY

发现时间线