Concepto
Un token L402 (macaroon:preimage) es una cadena portable — una vez pagado, puede pasarse a cualquier sub-agente que necesite acceso al mismo recurso. El orquestador tiene la billetera; los sub-agentes solo reciben un token.
Los tokens expiran después de 1 hora. Cada preimage solo puede usarse una vez por servidor (protección contra repetición). Para sub-agentes en paralelo que acceden al mismo endpoint, cada uno necesita su propio pago.
Cuándo compartir un token vs. pagar de forma independiente
Existen dos patrones de delegación, cada uno con diferentes compromisos: Compartir el token funciona cuando los sub-agentes acceden al mismo endpoint de forma secuencial. El orquestador paga una vez, extrae el valor del encabezadoAuthorization y lo pasa como una cadena. Los sub-agentes llaman al endpoint con ese encabezado directamente — no se necesita billetera. Esto minimiza el costo (un solo pago), pero no es seguro para acceso concurrente — solo un agente puede tener un preimage dado, y los servidores rechazan las repeticiones.
Pago independiente (cada sub-agente tiene su propio L402Client que comparte la billetera del orquestador) funciona para acceso paralelo o concurrente. Cada agente paga su propia factura y almacena en caché su propio token. Esto cuesta más sats pero es más sencillo de razonar y seguro a cualquier nivel de concurrencia.
Regla general: Si tus sub-agentes se despliegan en paralelo, dale a cada uno su propio L402Client. Si se ejecutan secuencialmente y acceden al mismo endpoint, comparte la cadena del token.
Consideraciones de seguridad
- Nunca pases credenciales de billetera a los sub-agentes. Pasa solo la cadena del token (
L402 <macaroon>:<preimage>). Un token puede llamar a un endpoint durante hasta una hora — una clave privada puede vaciar una billetera. - Los tokens son de un solo uso por servidor. Tras la primera solicitud aceptada, el servidor registra el hash del preimage. Una segunda solicitud con el mismo preimage devuelve 402. Esto previene ataques de repetición, pero significa que no puedes compartir un token entre dos sub-agentes concurrentes que acceden al mismo servidor.
- El control del presupuesto está a nivel de billetera. Establece
budgetSatsen elL402Clientdel orquestador para limitar el gasto total de todos los sub-agentes que comparten esa billetera. Ver Control de Presupuesto.
TypeScript — el orquestador paga, el sub-agente usa el token
Python — el orquestador paga, el sub-agente usa el token
Patrón multi-agente: un pago, lecturas en paralelo
Si múltiples sub-agentes necesitan el mismo recurso de forma concurrente, el patrón más limpio es que cada sub-agente pague de forma independiente usando su propioL402Client con una billetera compartida:
Propiedades de seguridad
| Propiedad | Cómo funciona actualmente |
|---|---|
| Aislamiento de billetera | Los sub-agentes reciben una cadena de token, nunca claves privadas |
| Limitado en el tiempo | Los macaroons expiran después de 1 hora |
| Seguro frente a repeticiones | Cada preimage solo puede ser aceptado una vez por el servidor |
| Control de presupuesto | Establece budgetSats en el L402Client del orquestador |