npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

steerplane

v0.4.1

Published

Runtime control plane for autonomous AI agents — guards, cost limits, loop detection, and telemetry.

Readme

SteerPlane — TypeScript SDK

Runtime guardrails for autonomous AI agents.

Cost limits · Loop detection · Dual enforcement (Kill/Alert) · SSE streaming gateway · Policy engine · Human-in-the-loop · Zero dependencies

npm License Node

Install

npm install steerplane

Quick Start

Option 1: Gateway Mode (Zero Code Changes)

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

import OpenAI from 'openai';

const client = new OpenAI({
  baseURL: 'http://localhost:8000/gateway/v1',
  apiKey: 'sk_sp_...',  // SteerPlane API key
  defaultHeaders: { 'X-LLM-API-Key': 'sk-...' }
});

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

Option 2: Higher-Order Function (Simplest)

import { guard } from 'steerplane';

const runAgent = guard(
  async () => {
    await agent.run();
  },
  {
    agentName: 'support_bot',
    maxCostUsd: 10.00,
    maxSteps: 50,
  }
);

await runAgent();

Option 3: Class API (Full Control)

import { SteerPlane } from 'steerplane';

const sp = new SteerPlane({ agentId: 'my_bot' });

await sp.run(async (run) => {
  await run.logStep({ action: 'query_db', tokens: 380, cost: 0.002 });
  await run.logStep({ action: 'call_llm', tokens: 1240, cost: 0.008 });
  await run.logStep({ action: 'send_email', tokens: 120, cost: 0.001 });
}, { maxCostUsd: 10 });

Option 4: Manual Lifecycle

import { SteerPlane } from 'steerplane';

const sp = new SteerPlane({ agentId: 'my_bot' });
const run = sp.createRun({ maxCostUsd: 10 });

await run.start();
await run.logStep({ action: 'search', tokens: 100, cost: 0.001 });
await run.logStep({ action: 'generate', tokens: 1240, cost: 0.008 });
await run.end();

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.

🛡️ Policy Engine

Define strict allow/deny rules, sliding-window rate limits, and human-in-the-loop approval workflows:

import { PolicyEngine } from 'steerplane';

const policy = new PolicyEngine();
policy.addDeny('DROP TABLE*');
policy.addDeny('rm -rf*');
policy.addRateLimit('send_email', { maxCount: 5, windowSeconds: 60 });
policy.addApproval('execute_trade*');

🐳 Docker Compose

Full 4-service production stack:

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

🖥️ CLI Tool (Python SDK)

pip install steerplane[cli]
steerplane status          # Check API health
steerplane runs list       # List recent runs
steerplane keys create     # Create gateway API key
steerplane logs --tail     # Live log stream

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, approval workflows. | | 🔄 Loop Detection | Sliding-window pattern detector catches infinite agent loops. | | 💰 Hard Cost Ceiling | Per-run and monthly USD limits across 25+ LLM models. | | 🚫 Step Limits | Cap maximum execution steps to prevent runaway agents. | | 📊 Deep Telemetry | Tokens, cost, latency per step — synced to the live dashboard. | | 🛡️ Graceful Degradation | API down? Guards still enforce locally. | | ⚡ Zero Dependencies | Uses native fetch — no bloat. | | 🐳 Docker Compose | 4-service production stack in one command. |

Error Handling

import { guard, CostLimitExceeded, LoopDetectedError, PolicyViolationError } from 'steerplane';

const runAgent = guard(async () => {
  try {
    await agent.run();
  } catch (err) {
    if (err instanceof CostLimitExceeded) {
      console.log(`Budget exceeded: $${err.currentCost}`);
    }
    if (err instanceof LoopDetectedError) {
      console.log(`Loop detected: ${err.pattern}`);
    }
    if (err instanceof PolicyViolationError) {
      console.log(`Policy blocked: ${err.message}`);
    }
  }
}, { maxCostUsd: 5 });

Architecture

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

Tech Stack

| Component | Technology | |-----------|-----------| | TypeScript SDK | TypeScript, guard() wrapper, zero dependencies | | Python SDK | Python 3.10+, CLI, Config files, 4 framework integrations | | Gateway | FastAPI + httpx, SSE streaming, 25+ model pricing | | Database | PostgreSQL 17 + SQLAlchemy + Alembic | | Infrastructure | Docker Compose (API + Dashboard + PostgreSQL + Redis) | | CI/CD | GitHub Actions (lint, test, Docker build) | | Dashboard | Next.js 16, React 19, Framer Motion |

Environment Variables

| Variable | Default | Description | |----------|---------|-------------| | STEERPLANE_API_URL | http://localhost:8000 | SteerPlane API server URL |

Requirements

  • Node.js 18+
  • SteerPlane API server (for dashboard integration)

Links

License

MIT — Patent Pending