Developers — SDKs
Four packages, one vocabulary.
All open source. The engine, the evidence store and the console are the product; the clients are not, because a governance client you cannot read is a governance client you cannot check.
This page is the argument. The Python SDK reference is the detail, kept next to the code rather than next to the marketing.
rotascale— Python- The reference client. Witness, authorize, outcome, and the capability extra when a grant names a resource and you want the token verified. reference →
@rotascale/sdk— TypeScript- The same vocabulary for Node and the edge. reference →
rotascale-mcp— MCP server- Exposes governance as MCP tools, so an agent host can ask for authority without an SDK dependency. reference →
rotascale-mcp-proxy— MCP proxy- Sits between the agent and its MCP server. It reads the tool name off
the wire and the agent gets no vote — which is why its decisions record
scope as
observedrather thanasserted, and why it is a genuine enforcement point rather than a convenience. reference →
Published under the company namespace: rotascale on PyPI,
@rotascale on npm. The product is RotaGrant; the packages are
Rotascale's.
The runtimes you already have
One line each, and the adapter captures what your framework was already doing. You keep the orchestration you chose — the governed unit is the action, not the framework.
- Models
watch_openai,watch_anthropic,watch_gemini,watch_bedrock— and any endpoint that speaks the OpenAI shape, which covers most self-hosted serving.- Agent frameworks
watch_langchain,watch_langgraph,watch_adk,watch_crew,watch_strands,watch_autogen.- Tools
watch_mcpfor MCP from the client side, and the proxy for governing a server without touching the agent at all.
None of them asks for authority. That stays an explicit call, because a middleware that quietly authorised would turn an import into a spend decision. Capture fails open; enforcement fails closed. every adapter →