Arquitetura¶
O agent-passport compõe três camadas por cima de identidades did:key: um passaporte
assinado pelo operador (uma VC com scopes), ações assinadas pelo agente, e um verificador
que valida a cadeia.
flowchart LR
OP["DID do operador"] -- issuePassport --> P["Passaporte (VC)<br/>name · model · scopes"]
P -- sobre --> AG["DID do agente"]
AG -- signAction --> ACT["Ação (JWT)"]
P --> VF{{"verificador"}}
ACT --> VF
VF --> OK["confiável se:<br/>ação→agente · passaporte→operador confiável · scope cobre a ação"]
Mapa de módulos¶
| Módulo | Responsabilidade |
|---|---|
did.ts |
Identidades did:key Ed25519 (operadores & agentes) |
passport.ts |
Emitir/verificar a VC do passaporte com scopes; helpers de scope |
action.ts |
Assinar/verificar ações individuais do agente (did-jwt) |
Princípios de design¶
- Atestação, não imposição — prova identidade/autoridade; impões o
assertScopena fronteira das tools e registas as ações assinadas no teu audit store. - À prova de adulteração — as ações são assinadas pela chave do agente, por isso um servidor comprometido não as forja.
- A confiança está ancorada nos operadores — os verificadores mantêm uma allow-list de DIDs de operadores que aceitam.
- Offline — o
did:keyresolve localmente; usaexpiresIncurto porque não há revogação.