coinbase / coinbase/agentkit

[Integration] Open Agent Trust Registry: lightweight runtime attestation for wallet operations

Open
#1,039 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
TypeScript
Stars
1.3k
Forks
815
Avg merge
13h 31m
Merged PRs (30d)
2

Description

I noticed the conversation around agent identity in #1015 (Observer Protocol) and #972 (MolTrust). Both are solid approaches but require on-chain infrastructure (ERC-8004 contracts, blockchain queries per verification).

For teams that want agent authorization verification without on-chain overhead, I've built the [Open Agent Trust Registry (OATR)](https://github.com/FransDevelopment/open-agent-trust-registry), a lightweight alternative:

- **Ed25519 JWT attestations** signed by the agent's runtime (`agent-attestation+jwt` media type)
- **Offline verification**: download the registry manifest once, verify locally, no blockchain calls
- **Runtime-scoped authorization**: attestations include `scope` and `constraints` fields specifying what the agent is allowed to do
- **MIT licensed**, no tokens, no vendor lock-in

**How it would work with AgentKit:**

```typescript
import { OpenAgentTrustRegistry } from '@open-agent-trust/registry';

// Load registry once (auto-refreshes every 15 minutes)
const registry = await OpenAgentTrustRegistry.load('https://your-mirror.com');

// Before executing a wallet operation:
const attestation = agent.getAttestation(); // JWT from the agent's runtime
const result = await registry.verifyToken(attestation, 'https://your-service.com');

if (result.valid && result.claims?.scope.includes('wallet:transfer')) {
// result.issuer — verified runtime that issued this agent
// result.claims.constraints — additional authorization bounds
await wallet.transfer({ to, amount });
} else {
throw new Error(`Agent not authorized: ${result.reason || 'scope_missing'}`);
}
```

The registry currently has 7 registered issuers with automated CI-verified registration (domain verification + cryptographic proof-of-key-ownership). The manifest is Ed25519-signed, so even if you use a third-party mirror, tampered copies are rejected by the SDK.

**Why this matters for AgentKit specifically:** The README's legal section notes that agent actions "are NOT acts of Coinbase." Runtime attestation gives developers a tool to verify agent authorization before those actions happen, reducing the liability gap. The attestation's `user_pseudonym` field provides a pairwise pseudonymous identifier, so authorization is traceable without exposing the user's real identity.

This is complementary to Observer Protocol (#1015). OATR handles "is this agent authorized by its runtime?" while Observer handles on-chain reputation. A defense-in-depth approach would use both.

Happy to submit a PR for an OATR verification action if there's interest.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.