Skip to main content

gubernaut-sdk

A deterministic runtime governor for LLM agents, packaged as an OpenAI-compatible local proxy. It hard-stops runaway agent loops before they reach your API bill.

Start the governor, then change one line in your code:

pip install gubernaut-sdk
gcc-proxy --upstream https://api.openai.com     # binds 127.0.0.1:8000
client = OpenAI(base_url="http://localhost:8000/v1")   # the one line of adoption

Full project, receipts and documentation: github.com/thegubernaut/gubernaut

Quickstart

from openai import OpenAI
from gubernaut_sdk import launch_proxy

proxy = launch_proxy(upstream="https://api.openai.com")
client = OpenAI(base_url=proxy.base_url)   # every call is now governed

resp = client.chat.completions.with_raw_response.create(
    model="gpt-5.6-sol",
    messages=[{"role": "user", "content": "hello"}],
)
print(resp.http_response.headers.get("x-gcc-posture"))   # DEFAULT | INHIBIT | REGROUND

proxy.stop()

Set base_url on the client. Three things bite here, all of them silent:

  • The pre-v1 openai.api_base attribute is ignored by current OpenAI SDKs, so a client configured that way goes straight upstream ungoverned and nothing errors to tell you.
  • The module-level openai.base_url attribute needs a trailing slash. Without one the SDK builds /v1chat/completions and you get a 404. Setting base_url on the client object, as above, works either way, which is why every example here uses that form.
  • launch_proxy() binds an ephemeral port unless you pass port=. Read proxy.base_url rather than assuming 8000, or start it with launch_proxy(upstream=..., port=8000).

Reading the posture needs with_raw_response: a plain create() returns a parsed ChatCompletion, which carries no headers.

One distribution, two import packages: gcc_proxy is the proxy engine and CLI, gubernaut_sdk is the one-call facade with framework helpers.

from gubernaut_sdk import launch_proxy, langchain_kwargs
llm = ChatOpenAI(**langchain_kwargs("gpt-5.6-sol", base_url=proxy.base_url))

As a CLI

gcc-proxy --upstream https://api.openai.com    # or any OpenAI-compatible base
gubernaut-proxy --upstream ...                 # same entry point, alias

What happens to a request

Every /v1/chat/completions request is governed on the way through:

  • IGL appraises each user turn locally into {intensity, valence, repetition}. Raw text stops there.
  • HRL, a deterministic token-free state machine over {equilibrium, arousal, perseveration}, commands a posture, DEFAULT, INHIBIT or REGROUND, plus a temperature ceiling.
  • Actuation applies the posture to the outbound request. A saturated recursive loop is hard-stopped before the upstream call: a deterministic fallback completion with zero upstream spend. Disable with --no-hard-stop.

State is re-derived per request by replaying the visible history, so the proxy is stateless, deterministic and fully replayable. Governed state is exposed in X-GCC-* response headers and at POST /gcc/state.

Credentials are never stored. The client's Authorization header is forwarded verbatim.

Verify it yourself

python -m pytest tests -q            # includes the loop trap: REGROUND within 4 turns
python ../../bench/latency_bench.py  # latency budgets, results as JSON

The full reproduction guide, including the spend battery, is docs/REPRODUCE.md.

Configuration

Constants in gcc_proxy/config.py are the working defaults for this reference implementation, overridable through GCC_* environment variables. They are not the evaluated configuration from the validation record, and changing them means the published figures no longer describe your deployment.

Citation and license

Licensed under Apache-2.0. If you use Gubernaut, please cite the concept (all-versions) DOI:

Gubernaut Research. Gubernaut Cognitive Controller (GCC). Zenodo. https://doi.org/10.5281/zenodo.21303518

No consciousness claims. This is a regulation layer, measured and falsifiable. Byline: Gubernaut Research.

Metadata

Release files for gubernaut-sdk 1.0.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 gubernaut-sdk 1.0.1
File Size Uploaded
gubernaut_sdk-1.0.1.tar.gz 30.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for gubernaut-sdk 1.0.1
File Interpreter ABI Platform
gubernaut_sdk-1.0.1-py3-none-any.whl Python 3 none any Details

Total release size: 57.3 kB

Release files / gubernaut_sdk-1.0.1.tar.gz

Download URL gubernaut_sdk-1.0.1.tar.gz
Size 30.1 kB
Tags Source
SHA-256 checksum
How to use checksums
1f6f12b6e417bed62568edb11e20d22ea6c1e06a437e4964f47f758c729f87b0
BLAKE2b-256 checksum
How to use checksums
a81e55e58fb8844be592e88a00c6848ffb2ba896cbbb60f0a021b67a9b32040d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.5

Release files / gubernaut_sdk-1.0.1-py3-none-any.whl

Download URL gubernaut_sdk-1.0.1-py3-none-any.whl
Size 27.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
eb799178aed7dc1e8881d95e9cc1d8f3e97881f4c6f336f7c530d10730ad3cda
BLAKE2b-256 checksum
How to use checksums
4823ecfc58de2bd7edd7d27cf8109df6397a1a568498995dab0f9eae782513a0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.5

Release history Release notifications | RSS feed

This release

1.0.1 This release

2 release files

1.0.0

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