Aller au contenu
Chaque URL de service est embeddable en iframe
HTTPS par défaut — pas de blocage mixed-content
Dashboard = infra (pas une couche par-dessus)
Contrôle via HTTP ; l'iframe reflète le nouvel état
UI générée par AI — compose des URLs en HTML
Tout appareil avec un navigateur, n'importe où
Chaque URL de service est embeddable en iframe
HTTPS par défaut — pas de blocage mixed-content
Dashboard = infra (pas une couche par-dessus)
Contrôle via HTTP ; l'iframe reflète le nouvel état
UI générée par AI — compose des URLs en HTML
Tout appareil avec un navigateur, n'importe où
Chaque URL de service est embeddable en iframe
HTTPS par défaut — pas de blocage mixed-content
Dashboard = infra (pas une couche par-dessus)
Contrôle via HTTP ; l'iframe reflète le nouvel état
UI générée par AI — compose des URLs en HTML
Tout appareil avec un navigateur, n'importe où
Chaque URL de service est embeddable en iframe
HTTPS par défaut — pas de blocage mixed-content
Dashboard = infra (pas une couche par-dessus)
Contrôle via HTTP ; l'iframe reflète le nouvel état
UI générée par AI — compose des URLs en HTML
Tout appareil avec un navigateur, n'importe où
Méthode transversale

Les iframes comme primitive de composition universelle.

Chaque service de conteneur — terminal, display, files, éditeur de code, navigateur, UI SQLite — est une URL HTTPS embeddable en iframe. Les dashboards ne sont pas construits par-dessus l'infra ; ils sont assemblés à partir d'elle.

Un fichier HTML + iframes = UI d'infra custom · pas de SDK · pas de postMessage

Tout est un src d'iframeHTTPS par défaut — embed partoutContrôle via HTTP, l'état reflèteTout appareil, tout navigateur
Dashboard = infra

Ne construisez pas un dashboard par-dessus votre infra. Assemblez-le à partir de votre infra.

Les dashboards traditionnels lisent la base, pollent des APIs, rendent des chiffres et des courbes. Un dashboard Hoody embed des iframes des services eux-mêmes — terminaux live, displays en cours, arbres de fichiers que vous pouvez éditer. Pas de lag de sync parce qu'il n'y a rien à synchroniser.

Pas de couche de polling

Le dashboard ne polle pas un endpoint de monitoring. Il embed la chose qui est monitorée.

Lire et agir

vous voyez un pic de métrique ? Clique dans le terminal embedded à côté et tape `top`. Pas de changement de contexte.

Par client, par projet, par env

Compose des dashboards à partir d'URLs — n'importe quelle combinaison est un dashboard.

AI-composable

Un LLM peut émettre du HTML avec des URLs d'iframe. UI d'observabilité custom, générée à la demande.

Contrôle via HTTP

Changez le container. L'iframe reflète.

Pas de postMessage. Pas de protocole parent-enfant. Un iframe affiche une URL de service ; le service est mis à jour via l'API HTTP ; la prochaine requête de l'iframe récupère le nouvel état. L'iframe et l'API sont le même container.

1

L'app embed une URL de service

La page parent dépose un iframe pointant vers une URL de service de conteneur dans son layout.

2

L'app envoie une requête HTTP de contrôle

POST /api/v1/files/upload (ou n'importe quel autre appel API) — authentifié contre le même container.

3

L'iframe pull l'état frais

Auto-refresh, SSE, ou interaction utilisateur déclenche une nouvelle requête. Le nouveau fichier est visible dans l'iframe.

4

Pas de protocole wrapper

votre app n'envoie jamais de postMessage à l'iframe. Elle met juste le conteneur à jour ; l'iframe voit le changement à son prochain rendu.

Indépendant de l'appareil

Les iframes rendent sur chaque navigateur. Chaque navigateur est sur chaque appareil.

Un dashboard Hoody embedded fonctionne sur un téléphone. Sur une tablette. Sur un navigateur TV. Sur une smartwatch. Sur le navigateur d'un casque VR. La propriété d'embeddability traverse tout le paysage des appareils parce que le navigateur le fait.

La primitive de composition est iframe + HTTPS. Les deux sont universels. C'est la seule raison pour laquelle la parité d'appareils est automatique.

UI générée par AI

Un LLM peut composer un dashboard à partir d'URLs de container.

Demande à un agent "code-moi un dashboard de health-check pour ces trois conteneurs". Il émet du HTML avec des balises iframe pointant vers les URLs terminal, display et exec que vous avez nommées. Le résultat est un dashboard réel et live en un seul tour de prompt.

1

L'agent reçoit la spec

"J'ai besoin de monitorer trois conteneurs : frontend, backend, db. Montre le log terminal de chacun."

2

L'agent émet du HTML

Template avec trois balises iframe pointant vers les bonnes URLs terminal-1 de chaque container.

3

Sers depuis n'importe où

Collez dans un fichier statique, une page Notion qui autorise les embeds iframe, ou un conteneur Hoody dédié faisant tourner http-3000.

4

Ouvrez l'URL

Dashboard live. Composé à partir de l'infra, pas d'un produit dashboard.

Réserves honnêtes

Là où l'embeddability touche les limites du navigateur.

Les iframes sont une primitive du navigateur. Le navigateur impose des règles sur ce qui peut et ne peut pas être embed. Ce sont des contraintes universelles, pas spécifiques à Hoody — mais elles comptent quand vous composez des UIs.

X-Frame-Options / CSP

Les URLs externes qui posent `X-Frame-Options: DENY` ou `frame-ancestors 'none'` ne peuvent pas être embed. Les services Hoody ne le font pas ; les URLs tierces que vous embed peuvent le faire.

Contenu mixte

Embed une URL HTTP dans une page HTTPS est bloqué. Les URLs Hoody sont toujours HTTPS — fonctionnent partout.

Cookies tiers

Les navigateurs bloquent de plus en plus les cookies tiers. L'auth dans les iframes embedded peut nécessiter des tokens par requête plutôt que des cookies de session.

Storage tiers

localStorage dans un iframe est scopé à l'origine de l'iframe. L'état inter-iframe doit venir du conteneur, pas du navigateur.

Démarrer

Code le dashboard à partir de l'infra, pas par-dessus.

Un fichier HTML. Une poignée de balises iframe. Conteneurs live en cours d'exécution. C'est toute la stack.

Guide embeddability

Voir aussi — /platform/proxy pour la composition dans Hoody, /kit/environments pour le runtime Environment, /methods/multiplayer pour les sessions iframe partagées.