Dans un navigateur et sur un téléphone
./bin/casty webcasty web demande la phrase de passe du magasin de clés, puis sert une page sur
http://127.0.0.1:3390 qui lit depuis le même nœud que les autres commandes et écrit à travers lui.
Il affiche un lien avec un jeton ; ouvrez-le pour appairer le navigateur.
casty web on http://127.0.0.1:3390open to pair a browser: http://127.0.0.1:3390/#token=<43 characters>Ctrl-C stops it; until then the app key stays unlocked in memoryPour la voir sans nœud, pnpm demo:web démarre le nœud factice, ajoute une clé avec la phrase de
test, publie un cast et sert la page sur un port libre jusqu’à ce que vous appuyiez sur Ctrl-C.

Ce que fait la page
Section intitulée « Ce que fait la page »La page a les commandes de la CLI, sous les mêmes noms.
| Sur la page | Dans un terminal |
|---|---|
| Le fil, numéroté : vos casts et ceux des comptes que vous suivez, les plus récents d’abord | casty feed |
| « mentions » : les casts qui vous mentionnent et les réponses à vos 25 casts les plus récents | casty mentions |
| Les bascules au-dessus : réponses affichées ou non, et une par application | --no-replies, --exclude-app |
| Toucher un nom de canal : seulement ce canal ; toucher de nouveau le filtre : tout | --channel |
| Toucher un cast : le cast auquel il répond, le cast, ses réponses | casty thread |
| « reply », « recast », « like », et dans « more » : supprimer, ouvrir sur farcaster.xyz, copier le lien | reply, recast, like, delete |
› cast something en bas : du texte avec des @names comme mentions, un canal facultatif, jusqu’à deux liens |
cast --channel --embed |
| Toucher un nom : les casts de ce compte, les applications à travers lesquelles il publie, le suivre | clients --fid, follow, unfollow |
| « you » (votre compte) : votre fid, votre adresse de custody, vos clés d’application, votre stockage, le nœud et l’horloge | whoami, key list, storage, doctor |
| Dans votre compte, « add a key with your wallet » (replié sous « add another key » dès que ce casty en a une) : une nouvelle clé d’application, autorisée par le portefeuille dans le navigateur | casty init avec la phrase de récupération |
| Les adresses vérifiées d’un profil, Ethereum ou Solana, avec copie | |
| Le champ de recherche dans votre compte : un compte par @name ou fid | follow @name |
Un brouillon dans la zone de rédaction survit à un rechargement, conservé dans le navigateur selon ce à quoi il répond, jusqu’à ce que le cast parte. Le fil charge sa page suivante quand sa fin arrive à l’écran, et le bouton « show more » reste pour les claviers. Sur un téléphone, tirer le fil vers le bas depuis son sommet puis relâcher l’actualise, puisqu’une page installée n’a pas de barre de navigateur à tirer.
Chaque fois que la page affiche le fil ou les mentions, elle enregistre leur ordre comme le fait
casty feed, si bien que casty like 3 dans un terminal agit sur le cast numéroté 3 à l’écran. La
dernière liste affichée l’emporte : un autre navigateur, ou casty feed, casty mentions ou
casty thread dans un terminal, renumérote.
Une clé d’application depuis votre portefeuille
Section intitulée « Une clé d’application depuis votre portefeuille »L’adresse de custody autorise une clé d’application avec deux signatures EIP-712, la demande de clé
et l’ajout de clé ; casty init les fait signer par la phrase de récupération. La page peut les
faire signer par un portefeuille à la place : dans votre compte, « add a key with your wallet »
demande à casty web une nouvelle clé et les deux messages, les transmet au portefeuille dans le
navigateur (une extension de portefeuille, ou la page ouverte dans le navigateur intégré d’une
application de portefeuille, eth_signTypedData_v4 via EIP-1193), vérifie que le compte du
portefeuille est l’adresse de custody, et renvoie les signatures ; casty web les vérifie, envoie le
KEY_ADD à travers votre nœud, et stocke la clé, chiffrée, comme sa plus récente. La phrase de
récupération ne quitte jamais le portefeuille, et un portefeuille matériel derrière l’extension
fonctionne de la même façon.
Pour commencer sans aucune phrase, casty init --fid <fid> écrit la configuration à partir du nœud,
adresse de custody comprise, et ne crée aucune clé ; casty web demande ensuite une phrase de passe
pour le magasin qu’il s’apprête à créer, et la page ajoute la première clé. La suppression d’une clé
reste dans le terminal (casty key revoke, avec la phrase de récupération ou avec la clé elle-même).
La page trouve un portefeuille de la façon dont les portefeuilles s’annoncent (EIP-6963), si bien que
plusieurs extensions côte à côte ne posent pas de problème, et window.ethereum en solution de
repli. Si le portefeuille propose un autre compte que celui de custody, la page lui demande de vous
laisser choisir le bon. Les messages de clé nomment Ethereum mainnet, si bien qu’un portefeuille sur
Base ou OP Mainnet est d’abord invité à changer de chaîne (MetaMask refuse de signer pour une autre
chaîne que la chaîne active) ; le changement ne coûte rien. Sur un téléphone sans portefeuille dans le
navigateur, la page propose des liens qui l’ouvrent dans MetaMask, Coinbase Wallet ou Trust Wallet, et
un bouton qui copie le lien d’appairage à coller sur la page là-bas, pour que le navigateur du
portefeuille signe. Les liens ne portent aucun jeton : chacun passe d’abord par le serveur de
l’éditeur du portefeuille. Un compte dont la custody est la phrase de récupération Farcaster de
farcaster.xyz peut importer cette phrase une fois dans n’importe lequel de ces portefeuilles, et ne
jamais la taper dans un terminal.
Un profil affiche les adresses que son compte a vérifiées comme siennes, Ethereum ou Solana, à partir du nœud : chacune renvoie vers son explorateur (ouvert seulement quand on la touche) et se copie. Les vôtres sont aussi listées dans votre compte. Rien n’est lu sur une chaîne.
Pour rester rapide, la page réutilise ce qu’elle a lu sur votre nœud dans les 30 dernières secondes quand vous basculez un filtre, affichez plus ou revenez à une vue. Tout ce que vous écrivez depuis la page efface ce cache, tout comme l’actualisation, le rechargement de la page, et toucher « feed », « mentions » ou « you » quand la vue est ouverte ; un cast publié dans un terminal apparaît à l’actualisation suivante, ou à un chargement plus de 30 secondes après. Recharger la page relit les casts mais reprend votre liste de suivis des dix dernières minutes ; l’actualisation la relit aussi, si bien qu’un compte suivi dans une autre application apparaît tout de suite.
Tant que la page est ouverte, elle demande à votre nœud toutes les deux minutes, et de nouveau chaque
fois que vous y revenez, si quelqu’un vous a mentionné ou a répondu à vos 25 casts les plus récents
depuis votre dernière visite. La réponse s’affiche sous forme de nombre à côté de « mentions », dans le
titre de l’onglet, et sur l’icône de la page si vous l’avez installée comme application et que le
navigateur le permet. Ouvrir « mentions » le remet à zéro. Tout comme casty mentions dans un
terminal, ou « mentions » ouvert dans un autre navigateur : casty retient la mention la plus récente
qui vous a été montrée, dans son répertoire de configuration, pas dans le navigateur. Le premier
compte part du moment où la page interroge pour la première fois, si bien que les mentions
antérieures ne comptent jamais comme nouvelles.
Une semaine avant que la clé d’application de ce casty n’expire, l’avis sous la barre le signale ; n’importe quel cast, like ou follow la renouvelle. La zone de rédaction compte les octets. Au-delà de 320, le cast part comme un cast long, jusqu’à 1024. Une écriture attend que le nœud ait le message, comme le fait la CLI ; si elle échoue, la page affiche le même message et la même indication que la CLI. Le point à côté de casty est votre nœud : vert quand il est synchronisé, orange quand il est en retard, rouge quand il ne répond pas.
Au clavier : n nouveau cast, r actualiser, j et k passent d’un cast à l’autre, l like, o
ou Entrée ouvrir, Échap fermer, Ctrl-Entrée ou Cmd-Entrée envoyer.
Le mot en haut à droite règle le thème : « auto » suit le système, « light » et « dark » restent tels que choisis dans ce navigateur. Sur un téléphone, la barre n’a de place ni pour lui ni pour l’actualisation : le thème est dans votre compte, et toucher « feed », « mentions » ou « you » quand la vue est ouverte la recharge.

La page ne charge rien depuis d’autres sites. Elle n’affiche ni images ni avatars, et un lien dans un cast ne s’ouvre que quand vous le suivez.
Sur un téléphone
Section intitulée « Sur un téléphone »./bin/casty web --listen 0.0.0.0:3390Cela affiche un lien pour chaque adresse IPv4 que la machine a sur un réseau, et un code QR du
premier. Scannez-le avec un téléphone sur le même réseau. La page peut être ajoutée à l’écran
d’accueil et s’ouvre alors en plein écran ; si elle y affiche l’écran d’appairage, collez-y le lien.
La machine doit rester allumée avec casty web en cours d’exécution.
La connexion est en HTTP simple. Quiconque peut observer le trafic sur ce réseau peut lire le jeton
et publier en votre nom jusqu’à ce que vous arrêtiez casty web. Utilisez un réseau en qui vous avez
confiance, ou reliez le téléphone et la machine par un VPN comme WireGuard et n’écoutez que sur
l’adresse du VPN. Pour que tous les liens affichés auparavant cessent de fonctionner, arrêtez
casty web et redémarrez-le avec --new-token.
Un navigateur appairé garde le jeton pour cette adresse et ce port, disons http://192.168.1.20:3390.
Sur un autre réseau, la même adresse peut appartenir à la machine de quelqu’un d’autre, et une page
ouverte là depuis l’écran d’accueil lui remettrait le jeton. Si cela a pu se produire, démarrez
casty web avec --new-token.
Ouvrir le lien le place, jeton compris, dans l’historique du navigateur, et dans son historique synchronisé si le navigateur se synchronise. Effacez cette entrée sur un navigateur que vous partagez.
--read-only saute la phrase de passe. La page lit alors et ne peut pas écrire.
Ctrl-C arrête casty web. Une écriture (un cast, un like, un recast, une suppression ou un follow)
qui attend encore son message peut d’abord se terminer, et le terminal le signale ; un second Ctrl-C
arrête immédiatement.
Pour atteindre la page depuis n’importe quel réseau, pas seulement celui où se trouve la machine, faites-la plutôt tourner sur l’hôte du nœud derrière HTTPS, où une mention ou une réponse peut aussi arriver sur le téléphone comme notification push : Depuis n’importe quel réseau.
Comment la page est protégée
Section intitulée « Comment la page est protégée »- Elle écoute sur 127.0.0.1 sauf si
--listenindique autre chose. - Chaque requête à l’API porte le jeton. Le lien le contient après
#, qu’un navigateur n’envoie jamais à un serveur ; la page le déplace dans le stockage du navigateur et le retire de la barre d’adresse, y compris quand le lien est ouvert dans un onglet qui affiche déjà la page. - Le jeton se trouve dans
~/.config/casty/web-token, mode 0600, si bien qu’un téléphone appairé reste appairé d’un redémarrage à l’autre. - Les écritures ne sont acceptées qu’en JSON, si bien qu’un formulaire sur un autre site ne peut pas envoyer de données à la page.
- Une requête dont le Host n’est ni une adresse IP, ni
localhost, ni l’hôte de--listenest refusée, si bien qu’un site qui fait pointer son propre domaine vers votre machine ne peut pas atteindre la page. - La page n’exécute que son propre script et son propre style, et insère le texte des casts comme du texte, jamais comme du HTML.
- Tant que
casty webtourne, la clé d’application est déchiffrée en mémoire, comme elle l’est pendant la durée d’un simplecasty cast.
Usage: casty web [options]
the feed, threads and a compose box in a browser, on this machine or a phone
Options: --listen <host:port> where to serve; 0.0.0.0:3390 lets a phone on the same network in (default: "127.0.0.1:3390") --new-token pair again; links printed before stop working --read-only do not unlock the app key; the page reads but cannot write --no-allow-fname-server look @names up with your node only; by default names it does not know are looked up on fnames.farcaster.xyz (public, no key) -h, --help display help for command