Conceito
Um token L402 (macaroon:preimage) é uma string portátil — uma vez pago, ele pode ser passado para qualquer sub-agente que precise de acesso ao mesmo recurso. O orquestrador mantém a carteira; os sub-agentes recebem apenas um token.
Os tokens expiram após 1 hora. Cada preimage só pode ser usado uma vez por servidor (proteção contra replay). Para sub-agentes paralelos acessando o mesmo endpoint, cada um precisa do seu próprio pagamento.
Quando compartilhar um token vs. pagar independentemente
Existem dois padrões de delegação, cada um com diferentes trade-offs: Compartilhamento de token funciona quando sub-agentes acessam o mesmo endpoint sequencialmente. O orquestrador paga uma vez, extrai o valor do cabeçalhoAuthorization e o passa como uma string. Os sub-agentes chamam o endpoint com esse cabeçalho diretamente — sem necessidade de carteira. Isso minimiza o custo (um único pagamento), mas não é seguro para acesso concorrente — apenas um agente pode manter um determinado preimage, e os servidores rejeitam replays.
Pagamento independente (cada sub-agente tem seu próprio L402Client compartilhando a carteira do orquestrador) funciona para acesso paralelo ou concorrente. Cada agente paga sua própria invoice e armazena em cache seu próprio token. Isso custa mais sats, mas é mais simples de raciocinar e seguro em qualquer nível de concorrência.
Regra geral: Se seus sub-agentes se expandem em paralelo, dê a cada um seu próprio L402Client. Se eles rodam sequencialmente e acessam o mesmo endpoint, compartilhe a string do token.
Considerações de segurança
- Nunca passe credenciais de carteira para sub-agentes. Passe apenas a string do token (
L402 <macaroon>:<preimage>). Um token pode chamar um endpoint por até uma hora — uma chave privada pode esvaziar uma carteira. - Tokens são de uso único por servidor. Após a primeira requisição aceita, o servidor registra o hash do preimage. Uma segunda requisição com o mesmo preimage retorna 402. Isso evita ataques de replay, mas significa que você não pode compartilhar um token entre dois sub-agentes concorrentes acessando o mesmo servidor.
- O controle de orçamento está no nível da carteira. Defina
budgetSatsnoL402Clientdo orquestrador para limitar o gasto total entre todos os sub-agentes que compartilham aquela carteira. Veja Controle de Orçamento.
TypeScript — orquestrador paga, sub-agente usa o token
Python — orquestrador paga, sub-agente usa o token
Padrão multi-agente: um pagamento, leituras paralelas
Se múltiplos sub-agentes precisam do mesmo recurso concorrentemente, o padrão mais limpo é cada sub-agente pagar independentemente usando seu próprioL402Client com uma carteira compartilhada:
Propriedades de segurança
| Propriedade | Como funciona hoje |
|---|---|
| Isolamento de carteira | Sub-agentes recebem uma string de token, nunca chaves privadas |
| Limitado no tempo | Macaroons expiram após 1 hora |
| Seguro contra replay | Cada preimage só pode ser aceito uma vez pelo servidor |
| Controle de orçamento | Defina budgetSats no orquestrador L402Client |