RawtohRawtoh/Docs
Documentation

Sécurité et fiabilité

Où tournent vos scripts, ce que vous nous confiez, et ce qui se passe quand quelque chose tombe.

Rawtoh est un service hébergé qui détient les clés de votre chaîne et exécute votre code. Cette page dit clairement comment ce code est isolé, où vivent vos identifiants, et ce qui casse (et ce qui ne casse pas) quand un maillon tombe.

Où tournent vos scripts

Les déclencheurs et les actions s’exécutent sur les serveurs de Rawtoh, dans un runtime JavaScript dédié. Chaque exécution reçoit son propre bac à sable isolé, configuré avec des limites strictes. Les scripts n’ont ni système de fichiers, ni réseau propre, ni accès aux autres organisations : tout ce qu’ils peuvent faire passe par les globales rawtoh (modules, stockage, logs).

LimiteValeur
Délai d’une condition de déclencheur5 secondes
Délai d’une action30 secondes
Mémoire par exécution8 Mo
Pile par exécution512 Ko

Les délais sont appliqués à l’intérieur du runtime lui-même : un while (true) est arrêté comme n’importe quoi d’autre. Un script qui dépasse le délai ou plante est enregistré comme processus en erreur ; son bac à sable est jeté et un neuf prend sa place. Les autres automatisations, les vôtres comme celles des autres, continuent de tourner.

Aucun événement perdu

Chaque événement passe par une file persistante. Le runtime n’acquitte un message qu’une fois l’événement et les processus qu’il a lancés écrits en base : un plantage en cours d’exécution ne perd jamais un événement acquitté, la file le livre à nouveau. La livraison est au moins une fois et l’insertion de l’événement est idempotente, donc une relivraison ne crée pas de doublon. Les cooldowns (throttle et debounce) vivent dans la même file partagée, si bien que plusieurs workers se coordonnent sans qu’aucun ne soit un point de défaillance unique.

Ce que vous nous confiez

Les scripts ne voient jamais rien de tout cela. Un script s’adresse à un module par son nom ; c’est le module qui détient l’identifiant et fait l’appel.

Ce qui se passe quand quelque chose tombe

OBS sans onglet de navigateur

Le module OBS local est un binaire unique qui tourne à côté d’OBS sur le PC de streaming. Il parle obs-websocket d’un côté et Rawtoh de l’autre, avec les mêmes événements et méthodes que le module OBS hébergé. Le navigateur est hors circuit : rien à garder ouvert, rien qu’une suspension d’onglet puisse interrompre. Il se reconnecte seul à OBS comme à Rawtoh.

# OBS → Outils → Paramètres du serveur WebSocket : activer, noter le mot de passe
# Rawtoh → Modules → Instances → créer une instance → copier le jeton d’enrôlement
module-local-obs --state-dir ~/.config/rawtoh-obs --obs-password '...' --enroll rth_e_...
# lancements suivants
module-local-obs --state-dir ~/.config/rawtoh-obs --obs-password '...'

Mesuré en production, un appui sur le Tableau atteint OBS en environ 60 ms de bout en bout ; un événement atteint votre script en moins de 10 ms. C’est suffisant pour des changements de scène et des shoutouts. Pour des coupes à l’image près, gardez-les sur un mélangeur local et laissez Rawtoh le piloter.