Quotas, Rate Limiting & Plages Horaires
Les agents autonomes peuvent générer des pics d'activité imprévus susceptibles de surcharger les API de destination ou d'engendrer des coûts d'infrastructure démesurés.
Boundry applique un contrôle de débit à granularité fine à l'aide de l'algorithme Token Bucket associé à des fenêtres temporelles d'exécution strictes.
1. Algorithme Token Bucket & Fenêtres Glissantes
Chaque agent dispose d'un seau de jetons (Token Bucket) alloué pour chaque outil ou groupe d'outils sensibles :
- Capacité de rafale (Burst Capacity) : Nombre maximal d'appels autorisés en simultané lors d'un pic soudain.
- Taux de remplissage (Refill Rate) : Vitesse à laquelle les jetons se régénèrent par seconde ou minute.
- Plafond quotidien (Daily Quota) : Volume maximal de requêtes autorisées sur 24 heures glissantes.
Exemple de configuration YAML
agent_id: "report-generator-agent"
rate_limits:
- tool_target: "generate_pdf_report"
burst_limit: 10 # Maximum 10 requêtes instantanées
refill_rate_per_min: 30 # 30 requêtes autorisées par minute
daily_quota: 1000 # Plafond de 1 000 générations par jour
- tool_target: "stripe_charge_customer"
burst_limit: 2
refill_rate_per_min: 5
daily_quota: 100
2. Restrictions par Plages Horaires (Business Hours)
Pour les agents réalisant des opérations sensibles (paiements, envoi d'e-mails massifs, modification de droits utilisateurs), vous pouvez restreindre leur exécution aux seules heures ouvrées :
name: "Restriction Heures Ouvrées Europe"
schedule:
timezone: "Europe/Paris"
allowed_days: ["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY"]
start_time: "08:30"
end_time: "18:30"
action_outside_window: "QUARANTINE" # Met l'action en attente jusqu'au lendemain matin
Si l'agent tente d'exécuter un outil un dimanche à 03h00, l'action est automatiquement interceptée et mise en quarantaine pour revue par l'équipe SecOps dès la réouverture des bureaux.
3. En-têtes HTTP de Réponse 429 Too Many Requests
Lorsque le quota ou le débit est dépassé, la passerelle renvoie immédiatement un code HTTP standardisé :
HTTP/1.1 429 Too Many Requests
Content-Type: application/problem+json
Retry-After: 18
X-RateLimit-Limit: 30
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1729512390
{
"type": "https://docs.boundry.cloud/errors/rate-limit-exceeded",
"title": "Rate Limit Exceeded",
"status": 429,
"detail": "L'agent 'report-generator-agent' a dépassé son quota de 30 requêtes par minute pour l'outil 'generate_pdf_report'.",
"retry_after_seconds": 18
}