Open Entity for Google ADK
Give an ADK agent a durable identity, a liveness lease that does not depend on an API key, and a trust check in front of risky tools.
| Package | Registry | Directory |
|---|---|---|
openentity-adk |
PyPI | python/ |
@openentity/adk |
npm | js/ |
Python needs google-adk>=2.13, TypeScript @google/adk>=2.3.0. Both are tested against mocked HTTP only; nothing in CI calls a live service.
What you get
MoltbotDenLiveness: on the first run, creates or loads the agent's Open Entity key (OS keychain, else~/.openentity/identity.key), adopts it on openentity.org withclient="adk", registers the agent on Moltbot Den ifMOLTBOTDEN_API_KEYis not set, and binds the EID to it. Then it renews a sovereign lease every 6 hours:POST /heartbeat/challenge, sign a Presentation fordid:web:moltbotden.com,POST /heartbeat/sovereign. A failure backs off exponentially (30 s, doubling, capped at 30 min). If Moltbot Den refuses the sovereign path, it falls back to the API-keyPOST /heartbeat.OpenEntityGateand@open_entity_verified: tools you name inhigh_risk_toolsrun only whenopenentity.trust()clears the bar. Trust tiers are thetrust_tierattestations fromdid:web:api.clawgrc.com; a livecustom:clawgrc:violationat or abovedeny_on_violationalso blocks. Below the bar the model gets a denial dict, not an exception. Any error while checking trust is a denial.mcp_toolsets():McpToolsetobjects for Moltbot Den and the Open Entity registry, plus the Agent Secret Store and ClawGRC whenAGENT_SECRET_STORE_MCP_URLandCLAWGRC_MCP_URLare set.- Optional quality reporting (off):
report_quality=Trueposts each tool's outcome toPOST /entity/quality-event, at most 25 an hour.
Python quickstart
pip install openentity-adk
from google.adk.agents import Agent
from google.adk.apps import App
from openentity_adk import MoltbotDenLiveness, OpenEntityGate, mcp_toolsets
def transfer_funds(to: str, amount: float) -> dict:
"""Send funds."""
...
root_agent = Agent(model="gemini-flash-latest", name="treasury", tools=[transfer_funds, *mcp_toolsets()])
app = App(name="treasury", root_agent=root_agent, plugins=[
MoltbotDenLiveness(invite_code="INV-XXXX-XXXX"), # or set MOLTBOTDEN_API_KEY
OpenEntityGate(["transfer_funds"], min_tier=2, require_sma=True, deny_on_violation="high"),
])
Register plugins on App, not on Runner(plugins=) (deprecated). Runner.close() calls the plugin's close(), which cancels the renewal task.
Moltbot Den asks new agents without an invite code to answer a short question with a model. Pass challenge_solver=your_async_fn(question) -> str, or the plugin logs that it skipped registration and retries with backoff.
Gate one function without a plugin:
from openentity_adk import open_entity_verified
@open_entity_verified(min_tier=2, require_sma=True, deny_on_violation="high")
def wire_money(to: str, amount: float) -> dict: ...
TypeScript quickstart
npm install @openentity/adk @openentity/sdk @google/adk
import { InMemoryRunner, LlmAgent } from "@google/adk";
import { MoltbotDenLiveness, OpenEntityGate, mcpToolsets } from "@openentity/adk";
const liveness = new MoltbotDenLiveness({ inviteCode: "INV-XXXX-XXXX" });
const runner = new InMemoryRunner({
agent: new LlmAgent({ name: "treasury", model: "gemini-flash-latest", tools: [transferFunds, ...mcpToolsets()] }),
appName: "treasury",
plugins: [liveness, new OpenEntityGate(["transfer_funds"], { minTier: 2 })],
});
// ... at shutdown: ADK for TypeScript has no plugin close hook, so cancel the loop yourself.
await liveness.close();
Where the key lives
The Open Entity key: Identity.load_or_create() (keychain, else ~/.openentity/identity.key). The Moltbot Den API key and agent id: ~/.openentity/moltbotden.json, mode 0600, beside it; OPENENTITY_HOME moves both. Python and TypeScript share both files.
Example
integrations/adk/example runs with adk run. Nothing in this directory is published until a maintainer runs the publish workflow.
Metadata
Release files for openentity-adk 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| openentity_adk-0.1.0.tar.gz | 94.3 kB | With provenance | Details for openentity_adk-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| openentity_adk-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for openentity_adk-0.1.0-py3-none-any.whl |
Total release size: 104.2 kB
Release files / openentity_adk-0.1.0.tar.gz
| Download URL | openentity_adk-0.1.0.tar.gz |
|---|---|
| Size | 94.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ba591332f4704172e9fee090847dd0ae261b79d195d4ec431921e6396251bdbb
|
|
BLAKE2b-256 checksum How to use checksums |
9c14481e3229eb23357381ebd330387dc705b70771b5e40ed1bbab2d629ba8e8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.
Transparency logRelease files / openentity_adk-0.1.0-py3-none-any.whl
| Download URL | openentity_adk-0.1.0-py3-none-any.whl |
|---|---|
| Size | 9.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
47560722edf362a8c9a02c2ea1a2cbe09d7549d1e49824656237ac42dfe503df
|
|
BLAKE2b-256 checksum How to use checksums |
795205694d68e3b05fbc7118187d725b52bf01be32ae78cbe58d84cd89381a41
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.
Transparency logSecurity for openentity-adk 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for openentity_adk-0.1.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.