Skip to content
Trust

Know what an agent could do and what it did.

Bounded tools, pre-execution decisions, and inspectable results make agent action easier to govern. The local runtime provides the first pieces of this model.

The price validation example

Know where the work runs.

PyCharter 0.0.67 · public Python API · synthetic records · no account or MCP required. The website presents public synthetic fixtures. It has no production-data upload or live FMP/database action in this walkthrough.

  • Your local environmentThe downloaded verification script reads the supplied files and prints results locally. Dependency installation contacts PyPI; the validation example needs no source or destination credentials.
  • Your agent and projectIf you use a coding agent, its access to files, commands, and provider services follows your agent’s settings. The Optophi example does not grant permissions or automatically deploy work.
  • Your evidenceThe contract, inputs, correction, and recorded outputs are ordinary files you can save and version in your own repository. Persistent audit, retention, sharing, and deletion are not managed by this offline example.
  • Scope of controlAgent guidance, data validation, and side-effect authorization have different roles. Installing a plugin does not block every alternate Python, SQL, or tool path.
Inspect the files and reproduction guide
Available controls

See the boundary in the result.

The current libraries support scoped discovery, schema validation, configured policy, and optional audit. Production guarantees depend on how the runtime and adapters are deployed.

A defined tool surface

A tool profile limits what a local MCP client can discover. Operations describe their inputs before they are invoked.

Refusal before execution

When configured policy denies an operation, PyActuator returns a refusal before the adapter runs.

Visible adapter mode

A result identifies its adapter. Check adapter.real to distinguish a mock result from a real side effect.

Configurable audit

An audit writer can retain structured records of calls and decisions. The current local runtime does not require durable audit storage.

Built today and coming next

Each package on its own.

Rows below are checked against the current PyPI releases. A package does not inherit another package's runtime. Coming next means the release that was checked does not ship it.

Built today and coming next for the current package releases
CapabilityStatusWhat the checked release does
Pre-execution refusalBuilt todayPyActuator 0.0.17 evaluates a policy after argument checks and before the adapter. A denied call returns POLICY_DENIED. Checked with a DEMO order of 100 at 250 against a notional limit of 10000.
Approval that waits for a personComing nextComing next. RequireApproval in PyActuator 0.0.17 is an allow-list. Other callers are denied or dry-run. A page that waits for a person is coming next.
Durable auditBuilt todaySQLite, Postgres, MongoDB, and SQLAlchemy writers exist. The default writer drops records. With SqliteAuditWriter configured, the refusal above was stored and read back with the tag policy_denied. The HTTP API exposes GET /api/v1/audit.
Mock versus realBuilt todayA result names its adapter and adapter.real. The checked refusal named MockExecutionClient with adapter.real false. PYACTUATOR_STRICT_ACTUATION=1 refuses a mock when real execution is required.
Claude Code connectionBuilt todayThe 0.0.17 guide connects Claude Code with: claude mcp add pyactuator -- pyactuator mcp serve --profile communications. That registers an MCP server.
Loopback approval pageComing nextComing next. A loopback page where a person approves a waiting call is coming next. pyactuator mcp serve can bind HTTP on 127.0.0.1 port 8765. That address is the tool endpoint.
Data contracts and quarantineBuilt todayPyCharter 0.0.67 can attach a contract to a pipeline step and set on_error to quarantine with a file DLQ. A checked four-row synthetic file kept 3 rows, quarantined 1 row with amount -5, and failed 0. The quarantined count is the number of rows in the quarantine file.
State machinesBuilt todayPyStator 0.0.47 computes the next state from the current state and a trigger. A checked machine moved received to accepted on accept, and left the state unchanged for an unknown trigger.
Local model probeBuilt todayPyGubernator 0.0.18 probe_local_models asks a local model server and returns nothing when none answers. Checked here, the probe returned nothing. PyGubernator does not run PyActuator or PyCharter.
Governance gateComing nextPyGubernator 0.0.18 exposes validate_governance. The no-op client returns conforms without inspecting a store. The local client calls PyCharter's vocabulary validator only when that import succeeds, and otherwise also returns conforms. That is not a fail-closed gate.
Policies as codeComing nextA PyActuator deployment manifest can declare require_approval and limit_notional. A general policy vocabulary is coming next.
OpenTelemetry GenAI exportComing nextOptional OpenTelemetry tracing exists for some API and validation paths in these releases. A GenAI semantic-convention export is not described in the docs that were searched.
Decision signingComing nextThese releases do not ship a signed audit or decision record. PyActuator can verify an inbound provider callback signature. That check is separate from signing a decision.
License of the current PyPI releasesBuilt todayApache-2.0 (from the next release; earlier releases MIT). PyActuator 0.0.17, PyCharter 0.0.67, PyStator 0.0.47, and PyGubernator 0.0.18 on PyPI still declare MIT.
License. Apache-2.0 (from the next release; earlier releases MIT)
Hosted trust standard

Bind identity to every decision.

The hosted service is being designed to derive agent identity and tool scope from the authenticated key, enforce policy through one invocation path, and produce a durable record for every authenticated decision.

  • Identity and scopeA caller cannot grant itself a broader tool catalog by changing a request field.
  • Policy before side effectsA denied or invalid call cannot reach the adapter.
  • Durable decision recordsMutating calls require an audit record before execution.
Status: Optophi API access. Create a scoped validation key through Optophi onboarding and run a guided first task over MCP or REST. Existing provisioned keys remain supported. Local examples require no account. The requirements above are not verified platform-wide guarantees. A hosted offer must separately declare credential storage/revocation, data location, retention/export/deletion, and operating responsibilities.
Inspect available documentation
Feedback