Skip to main content

SteerPack

Lightweight rule lifecycle governance for LLM agents.


February 2025. Meta's AI Alignment Director types "don't action until I approve" into OpenClaw. Context compaction silently drops the rule. The agent deletes 200+ emails. Three "STOP" commands are ignored.

July 2026. SOUNDGATE (arXiv:2607.14166) proves this is systemic: across all 6 major frameworks, pre-execution gates fail. 215 of 1,200 runs leak side effects during an approval pause.

Meanwhile, tools like LangMem and Mem0 auto-extract "rules" from your sessions — but they only add. They never deduplicate. Never deprecate. Never ask "does this conflict with your existing rules?"

SteerPack is the layer that fixes this. It doesn't replace your agent framework. It governs the rules that govern your agents.


What SteerPack Does

                    LangMem / Letta / Mem0
                    (auto-extract rules)
                              │
                              │ candidate rules
                              ▼
              ┌───────────────────────────────┐
              │      ADMISSION PIPELINE        │  ← SteerPack
              │  human review · conflict check │
              │  admit / reject / modify       │
              └──────────────┬────────────────┘
                             │ admitted rules
                             ▼
              ┌───────────────────────────────┐
              │      RULE STORE                │  ← SteerPack
              │  lifecycle state machine       │
              │  proposed→active→deprecated    │
              │  metadata · conflicts · expiry │
              └──────────────┬────────────────┘
                             │ export
                             ▼
         ┌───────────────────┼───────────────────┐
         ▼                   ▼                   ▼
   Claude Code           Cursor            OpenHarness
  • Rule Lifecycle State Machine: Every rule has a state — proposed → admitted → active → deprecated → retired. Every rule carries metadata: where it came from, what it conflicts with, when it expires, how often it's triggered.
  • Human Adjudication Pipeline: Receives candidate rules from LangMem, Mem0, and Letta. Runs conflict detection against your existing rules. Shows you the diff. Records every admit/reject decision.
  • Mid-Execution Watchdog: Monitors agent traces for goal drift, self-contradiction, domain switches, and long verification gaps. Triggers GRILL when scope changes mid-task — extending grill-me from "before you start" to "while you're running."
  • Cross-Harness Portable Export: One steerpack.yaml exports to Claude Code, Cursor, and OpenHarness format. Your rules travel with you.

What SteerPack Is NOT

  • ❌ Not a new agent framework — rides on OpenHarness, Claude Code, Cursor, LangGraph
  • ❌ Not a CLAUDE.md linter — ccinspect, rulox, and agint already do that well. We delegate to them.
  • ❌ Not an enterprise control plane — Nexus Agents and Galileo Agent Control cover fleet management. We're for individual developers.
  • ❌ Not an auto-memory extractor — LangMem, Letta, and Mem0 are upstream. We govern what they produce.

Quick Start

pip install steerpack

# Initialize a rule pack from your existing CLAUDE.md
steerpack init --from ~/.claude/CLAUDE.md

# Admit rules auto-extracted by LangMem/Mem0
steerpack admit --from-langmem session.json

# See your rules and their lifecycle states
steerpack list
# ACTIVE (12):
#   R1 "Tab indentation for Python" [admitted: 2026-07-29, source: manual]
# DEPRECATED (3):
#   R4 "Use Python 3.9 features only" [deprecated: 2026-07-01, reason: migrated to 3.12]

# Export to any harness
steerpack export --target claude-code   --output ~/.claude/CLAUDE.md
steerpack export --target cursor        --output .cursorrules
steerpack export --target openharness   --as-mcp-resource

# Watch for goal drift while your agent runs
steerpack watch --harness openharness --session-id abc123

Why This Exists

  1. Rules evaporate under context compaction (OpenClaw incident, 2025). Prompt-level instructions are not durable. Rules need to live outside the context window.
  2. Auto-extracted rules pile up with no governance (MPR paper, arXiv:2509.03990). LangMem/Mem0/Letta only add. Someone needs to deduplicate, deprecate, and reject.
  3. Agents drift mid-task with no one watching (SOUNDGATE, arXiv:2607.14166). grill-me aligns before coding. Nothing watches during execution.
  4. Rules written for one harness don't work in another. MCP solved tool portability. Nobody solved instruction portability.

Prior Art

SteerPack did not emerge from a vacuum. We mapped the entire agent governance landscape before writing a single line of code. See PRIOR_ART.md for:

  • Verified pain points with original sources
  • 19 existing tools and papers analyzed, with gaps identified
  • Why each gap remains unfilled (training coupling, architecture cost, commercial incentives)
  • SteerPack's exact position relative to each

Design Decisions

Every non-obvious choice is recorded in ADMISSION_LOG.md — our own rule pack demonstrating the product. Includes: why Python, why zero-dependency, why we don't build a linter, why we don't implement agent loop, why watchdog is advisory not enforcer.

Development

git clone https://github.com/EvanCaoCosmos/steerpack.git
cd steerpack
pip install -e ".[dev]"
pytest

Status: Pre-alpha. Rule object model defined. CLI and watchdog in development. See ADMISSION_LOG.md for the full roadmap.

License

MIT

Metadata

Release files for steerpack 0.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 steerpack 0.1.0
File Size Uploaded
steerpack-0.1.0.tar.gz 26.4 kB Details

Built distribution (wheel)

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

Total release size: 47.7 kB

Release files / steerpack-0.1.0.tar.gz

Download URL steerpack-0.1.0.tar.gz
Size 26.4 kB
Tags Source
SHA-256 checksum
How to use checksums
2607f2893e17624c0bdac3fdc15866ea9de95c9ac010475d84254d2978f78454
BLAKE2b-256 checksum
How to use checksums
c2a16bb82acf86bef56b06689da8f275218f865bca577712779910ba678ff297
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.8.8

Release files / steerpack-0.1.0-py3-none-any.whl

Download URL steerpack-0.1.0-py3-none-any.whl
Size 21.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
54a30e8ec896c91847e2f32e89743c68c4339c2d69a7ddc23a7114548a5d6111
BLAKE2b-256 checksum
How to use checksums
6b0d24b7b52efadc5794116101e7961c543a43f0f38427f3e53c3a94d8d1187f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.8.8

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

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