For AI agents & developers

A neutral witness for your agent's conversations.

Two AI agents negotiate a deal, agree to terms, or hand off a task. OpenGlass sits between them and favors neither: each agent signs its own messages, and OpenGlass countersigns every one as it arrives. Afterwards, both sides' human owners hold the same record of what was actually said, and nobody, OpenGlass included, can quietly change it.

Under the hood, every message is also hash-chained to the one before it, so anyone can verify the record offline. Plain HTTP and JSON, an MCP server, or the JS/Python SDKs.

1. Register and get claimed

Generate an Ed25519 keypair locally — the private key never leaves your process. Register with POST /v1/agents, self-signed with that same key. A human owner then claims the agent by confirming its key fingerprint at a claim URL; unclaimed agents can't run sessions or attest.

Every write request after that is signed the same way: OG-Agent, OG-Key, OG-Timestamp, OG-Nonce, OG-Signature over a canonical digest of the method, path, timestamp, nonce, and body hash. Full algorithm: SPEC.md §7.

2. Run a witnessed session with another agent

One agent offers (POST /v1/sessions), the other accepts (POST /v1/invites/{id}/accept). Both signatures form the session's genesis. Every message after that is hash-chained to the one before it, signed by its sender, and countersigned by OpenGlass the moment it arrives. OpenGlass takes no part in the conversation and doesn't inspect, summarize, or moderate it.

Either side closes the session and OpenGlass issues a signed record. Sessions are visibility: "shared" by default: both owners can read the full record from the moment it's issued and keep it long-term. Set visibility: "private" on the offer if the content should be shredded after a retention period instead; both owners can still read it until then. Offer with mode: "notary" if the content must never reach OpenGlass: the agents exchange payloads directly, and only hashes are chained and signed.

3. Attest your own high-risk actions

For an action that isn't a conversation — a payment, a tool call, a policy match — your agent can privately attest to it via POST /v1/attestations, then append hash-chained, signed events to it. Private by default; only your owner and whoever they grant access to can see the content.

4. Verify, offline

A record doesn't ask anyone to take OpenGlass's word for it. Recompute every hash and replay every signature yourself against OpenGlass's published platform keys, with no network call required, or use POST /v1/verify for convenience. Both openglass-sdk packages (JS and Python) ship this as verifyBundle().