modelctl is a provider-neutral control plane for model workloads.
The public package defines portable domain contracts for workload classes, request metadata, engine state, reservations, budgets, runway data, durable events, and signed policy bundles.
The API is under active development. The public repository contains generic contracts and synthetic fixtures only. Deployment configuration belongs in a private environment.
The installed OMP extension is observe-only by default. It records what budget and loop-containment enforcement would do, but it does not block requests, abort work, park transcripts, close budgets, escalate, or start recovery.
Set observeOnly: false for explicit enforcement. When enforcement parks a
transcript after repeated equivalent output, it forks one bounded recovery
agent from the parent session with omp --fork. The recovery agent cannot
start another recovery agent.
Use Python 3.12 or newer and uv.
uv sync --locked --group dev
uv run --no-sync pytest
uv run --no-sync mypy --strict srcTo check CLI parsing and invalid configurations without contacting services:
uv run --no-sync pytest tests/cli/test_validate.py tests/telemetry/test_cli.pyThe policy validator reports malformed JSON, YAML, and encoding errors and continues checking other files. CI uses locked dependencies, read-only repository access, and bounded jobs.
Every bit of support helps keep modelctl alive and free. If you are able, sponsor on GitHub or send a Lightning donation to joshuaswarren@strike.me to directly fund continued development and new integrations.
If financial support is not an option, you can still make a big difference: star the repo, share it, or recommend it to a colleague. Word of mouth is how most people find modelctl.
Apache-2.0. See LICENSE.