Fonctionnalité

Garde tes terminaux Claude Code, Codex et OpenCode, ou travaille depuis l’app

Happier les lance comme la session que tu aurais démarrée toi-même — tu peux donc la piloter depuis leur propre TUI, depuis ton téléphone, ou depuis les deux, sans que la session s’en aperçoive.

Si tu vis dans un terminal, la plupart des textes sur le pilotage d’agents de code depuis un téléphone se lisent comme une invitation à arrêter. C’est une invitation qu’on a bien raison de refuser. Rien dans un écran de téléphone n’est meilleur que tmux et un clavier pour la partie du travail où tu es vraiment bon.

L’affirmation ici est donc plus étroite. Une session Happier, c’est une session avec deux façades : un terminal sur l’ordinateur qui fait le travail est l’une, l’app sur ton téléphone est l’autre. Passer de l’une à l’autre ne démarre rien de neuf — l’identifiant de session, la transcription, le mode de permission et les messages en file sont exactement les mêmes objets de l’autre côté du basculement.

Commence dans le terminal ou dans l’app, et passe de l’un à l’autre

Commence dans le terminal
Lance happier dans un dépôt et tu obtiens l’agent par défaut avec l’app attachée. happier codex, happier opencode, happier gemini et le reste du registre, c’est la même chose pointée vers un autre CLI. Tu es dans ton propre terminal, dans ton propre shell, avec tes propres alias ; l’app regarde.
Commence dans l’app, finis dans le terminal
Lance une session depuis ton téléphone dans le train, puis exécute happier attach <session-id> en t’asseyant. Sans id, il ouvre un sélecteur des sessions en cours sur cet ordinateur, et marque celles auxquelles il ne peut pas s’attacher en indiquant la raison plutôt qu’en les cachant.
Rends la session à l’app
Prendre le contrôle local part du terminal ; le rendre peut se demander depuis l’app. Happier attendra d’abord que le tour en cours dans le terminal atteigne un point d’arrêt sûr, parce que forcer un prompt dans un TUI occupé, c’est comme ça qu’on perd le travail qu’il était en train de faire.
Utilise le terminal intégré à l’app
Un shell en direct sur l’ordinateur connecté, ancré au panneau du bas, à la barre latérale ou au panneau de détails, qui survit à un rafraîchissement de page et garde le même shell quand tu le déplaces. C’est le même transport de terminal que l’app utilise pour lancer les connexions aux providers.

Quels agents déplacent une session entre le terminal et l’app

Trois sur les treize, et ils ne se comportent pas de la même façon. Codex est exclusif — un seul pilote à la fois. OpenCode ne l’est pas, et Claude Code peut être l’un ou l’autre, selon le runtime sous lequel tu le démarres.

AgentTerminal et app ensembleSe rattache viaCe que ça change en pratique
Claude CodeUn à la fois, ou les deuxtmuxSur le runtime par défaut, un message envoyé depuis l’app pendant que tu pilotes le terminal attend dans la file au lieu d’être tapé dans ta session ; les demandes de permission sont quand même transmises à l’app, et ce pont est actif par défaut. Le runtime de terminal unifié, c’est le cas « les deux » — voir plus bas.
CodexUn à la foistmuxMême exclusivité. Happier attend que le tour local se termine, soit interrompu ou quitte avant de reprendre la session et de délivrer ce que tu as mis en file.
OpenCodeLes deux à la foisL’attach propre à OpenCodeContrôle local partagé sans rien à activer au préalable : l’app reste en écriture pendant que le TUI OpenCode est attaché, et aucun multiplexeur n’entre en jeu.

Les dix autres agents que Happier fait tourner démarrent toujours depuis le terminal avec happier <agent> et apparaissent toujours sur ton téléphone. Ce qu’ils ne permettent pas, c’est de reprendre la session dans leur propre TUI en cours de route.

Pilote une même session Claude Code depuis le terminal et depuis l’app

Orienter et interrompre sont deux gestes différents. Interrompre arrête le tour en cours et en démarre un autre à partir de ton message. Orienter s’ajoute au tour en cours — le travail continue, en sachant désormais ce que tu viens de dire. Les deux sont utiles, et le second est celui que tu veux quand tu lèves les yeux de ton téléphone et réalises qu’il est sur le point de renommer le mauvais fichier.

Anthropic documente l’entrée en streaming de l’Agent SDK comme des messages mis en file et traités séquentiellement, avec la possibilité d’interrompre. C’est le runtime que Happier utilise par défaut pour Claude Code, et pour la plupart des sessions c’est le bon. Le terminal propre à Claude Code accepte l’autre type de message : tape pendant qu’il travaille et l’instruction rejoint le travail déjà en vol.

Le runtime de terminal unifié, c’est la façon dont l’app atteint ça. Happier démarre le vrai TUI claude à l’intérieur d’un hôte de terminal partagé — tmux là où tu l’as, sinon le zellij que Happier embarque —, diffuse ce terminal vers tous les appareils sur lesquels tu es connecté, et tape ce que tu envoies depuis l’app dans le même composer que celui où tu aurais tapé toi-même. Un seul processus Claude Code, une seule session, deux claviers dessus. Tu peux taper dans le TUI à ton bureau pendant que la même session reçoit une réponse depuis un téléphone, et aucune des deux extrémités ne verrouille l’autre.

Il est désactivé tant que tu ne l’actives pas, dans les réglages du provider Claude Code. Il a besoin de tmux ou du zellij embarqué, donc aujourd’hui cela veut dire macOS et Linux ; sous Windows, le CLI te dit d’utiliser WSL2 plutôt que de démarrer quelque chose qu’il ne peut pas vérifier. Et quand le terminal est dans un état où taper serait risqué — une boîte de dialogue est ouverte, ou tu es au milieu d’une ligne à toi — Happier garde ton message au lieu d’écrire par-dessus toi.

Ce qu’il faut pour s’attacher : tmux, le même ordinateur, un daemon en marche

Celui qui piège les gens : sur macOS et Linux, s’attacher à une session Claude Code ou Codex lancée depuis l’app exige que l’intégration tmux soit activée avant le démarrage de cette session. Active-la après coup et la session déjà en cours n’est pas attachable — elle n’a jamais été lancée dans tmux au départ. Tu dois aussi t’attacher depuis l’ordinateur qui possède la session et depuis le compte qui l’a lancée.

Windows n’utilise pas tmux. Une session y est lancée en mode masqué, dans Windows Terminal, ou dans une console, et happier attach met au premier plan l’hôte qui existe déjà au lieu de se rattacher à un multiplexeur. C’est un choix par machine et par session, pas un choix global.

Le terminal intégré a besoin que ton daemon tourne et soit connecté pour l’ordinateur que tu vises. Si le daemon est hors ligne, Happier affiche un état d’erreur plutôt qu’un shell qui ne fait silencieusement rien.

tmux, le mode session Windows, et l’endroit où le terminal s’ancre

Rien sur cette page ne demande de configuration si tu lances tes sessions depuis le terminal — ce chemin fonctionne dès que le CLI est installé. Les réglages qui demandent une décision sont l’intégration tmux, le mode de session Windows et l’endroit où s’ancre le terminal intégré, et les trois sont dans la référence de configuration.