Aller au contenu principal

La CLI arclip

arclip met un projet dans un terminal. Un agent que vous utilisez déjà — Claude Code, Codex, Cursor — construit la scène avec les mêmes outils que l'assistant de l'éditeur, et vérifie son propre travail avant de vous dire qu'il a terminé. Les scripts et la CI utilisent les mêmes commandes.

Chaque commande correspond à un appel au serveur MCP : la CLI ne peut donc rien faire que les outils de l'éditeur ne sachent faire, et ne s'en écarte jamais.

Installation

npm i -g arclip

Il faut Node 18 ou plus récent. arclip render --real demande en plus Node 22 et Google Chrome ou Chromium sur la machine.

Démarrage rapide

arclip login                  # sign in once, in the browser
arclip link <project-id> # in your folder: set it up for agents
arclip dev # a QR code — the live draft on your phone
claude # or codex, or Cursor — ask for the scene
arclip verify && arclip render -o shot.png
arclip publish # when you are happy

arclip projects liste les projets que vous pouvez ouvrir. L'identifiant est aussi la dernière partie de l'adresse de l'éditeur : editor.arclip.design/project/<project-id>.

Se connecter

arclip login ouvre votre navigateur sur la même page de permissions que celle que reçoit un client MCP. Décochez ce que vous ne voulez pas accorder, appuyez sur Allow, et la CLI reçoit un jeton. arclip login --token arclip_… enregistre à la place un jeton que vous avez créé vous-même ; --no-browser se contente d'afficher l'adresse, à ouvrir dans un navigateur sur la même machine.

Le jeton est conservé dans votre configuration utilisateur (~/.config/arclip), lisible par vous seul, et n'est jamais envoyé qu'au serveur qui l'a émis. arclip whoami affiche le compte, le serveur et les permissions utilisés ; arclip logout oublie le jeton. Vous pouvez le révoquer à tout moment dans votre compte, sous API & MCP.

Lancez la commande dans n'importe quel dossier — un nouveau, ou votre dépôt existant :

FichierÀ quoi il sert
.arclip/project.jsonà quel projet appartient ce dossier — vous pouvez le commiter sans risque
CLAUDE.mdla routine de l'agent : construire, vérifier, faire un rendu, lancer un playtest, rendre compte — et ne jamais publier sans qu'on le lui demande
.mcp.jsonle serveur MCP d'AR Clip, lancé via la CLI et épinglé à ce projet ; aucun jeton à l'intérieur
.claude/settings.jsonpermet à l'agent de lire cette documentation et de lancer les vérifications en lecture seule sans demander ; la publication, elle, demande confirmation

Les fichiers que vous avez déjà sont fusionnés, pas écrasés ; un CLAUDE.md existant est conservé, sauf si vous passez --force.

arclip clone <project-id> [folder] fait de même dans un nouveau dossier, et rapatrie les scripts et les cartes UI du projet sous forme de fichiers.

Les scripts et les cartes UI comme fichiers

arclip pull        # server → folder: scripts/**/*.ts and ui/**/*.json
arclip diff # what you changed, line by line
arclip push # folder → server

push compile d'abord chaque script, et n'envoie rien si le projet a changé sur le serveur depuis votre dernier pull — faites un pull, regardez la différence, puis poussez à nouveau (--force écrase). Les nouveaux fichiers sont créés sur le serveur ; supprimer un fichier en local ne le supprime pas là-bas. pull laisse intact un fichier modifié des deux côtés et vous le signale.

La scène elle-même — objets, composants, événements — reste sur la plateforme, où plusieurs personnes la modifient ensemble ; elle n'est pas rapatriée sous forme de fichiers.

Votre scène sur votre téléphone

arclip dev

affiche un lien et un QR code. Scannez-le et le brouillon s'ouvre dans le navigateur du téléphone — sans connexion, sans publication. Le terminal continue de tourner : chaque modification, qu'elle vienne de l'agent ou d'un collègue dans l'éditeur, est signalée et la scène revérifiée, et le téléphone propose la nouvelle version. Une session AR en cours propose de recharger au lieu de remplacer la scène sous vos yeux.

arclip dev --watch pousse aussi scripts/ et ui/ à chaque enregistrement. Le lien expire au bout de --hours (12 par défaut, 72 au maximum).

Le brouillon s'ouvre dans le navigateur du téléphone, pas dans l'application AR Clip.

Vérifier le travail

CommandeCe qu'elle vous dit
arclip verifyce qui s'enregistre sans erreur mais échoue en silence dans le lecteur — fichiers manquants, événements inconnus, scène sombre
arclip renderun PNG dessiné sur le serveur : disposition, échelle, couleurs, textures
arclip render --realle runtime publié dans un Chrome headless sur votre machine — exactement ce que voit un visiteur
arclip playtestexécute les scripts et la physique, et actionne chaque commande qu'il trouve
arclip testexécute vos scénarios scriptés, tests/*.flow.json

Chacune se termine avec le code 1 en cas d'échec : un agent — ou la CI — peut donc s'arrêter dessus.

render accepte --view front|side|back|top|three-quarter, --entity <id> pour cadrer un seul objet, --size 960x720 et -o file.png. Le rendu côté serveur ne dessine ni les scripts, ni les cartes UI, ni les effets ; --real, si, pour les scènes 3D et Surface. Les scènes qui démarrent depuis une caméra — marqueurs, visages, VPS — demandent un appareil.

playtest et test jouent la scène dans l'éditeur : le projet doit donc être ouvert dans un onglet du navigateur.

Tests scriptés (flows)

Un flow est un scénario avec ses résultats attendus, un par fichier dans tests/. arclip link en ajoute un pour démarrer.

{
"name": "door opens",
"steps": [
{ "frames": 30 },
{ "tap": "Door button" },
{ "wait": 500 },
{ "expect": { "target": "Door", "position": { "x": 1.2, "tolerance": 0.05 } } },
{ "key": "KeyW", "ms": 400 },
{ "expect": { "target": "Player", "moved": true } },
{ "ui": "HUD", "action": "restart" },
{ "expect": { "noCrashes": true } }
]
}
ÉtapeFait
framesavance d'autant de ticks
waitavance d'autant de millisecondes
key + msmaintient une touche, puis la relâche
taptouche un objet
ui + actiondéclenche une action sur une carte UI
input + target, payloadenvoie n'importe quel déclencheur de script
expectvérifie exists, visible, position, moved, un champ de component, ou noCrashes

Les cibles sont des noms d'objets tels que l'éditeur les affiche, ou des identifiants. Chaque flow s'exécute sur une copie neuve de la scène, et le temps n'avance que par pas fixes de 1/60 s — un flow qui passe une fois passe à chaque fois.

arclip test les exécute tous ; arclip test "door opens" n'en exécute qu'un.

Publier et héberger vous-même

arclip publish publie et affiche le lien et un QR code ; il demande d'abord confirmation (--yes en CI). arclip status affiche les scènes et l'état de publication ; arclip open ouvre le lien publié.

arclip export site && arclip serve site

export écrit un seul dossier — index.html, la scène en project.json, chaque fichier qu'elle utilise, les polices et le lecteur — qui tourne depuis n'importe quel hébergement statique : votre propre serveur, S3, un intranet. Seuls les glyphes de secours pour les écritures que les polices ne couvrent pas (CJK, arabe, …) viennent encore du CDN d'AR Clip. Les assets de la bibliothèque partagée conservent leurs conditions de licence.

Agents et autres clients MCP

arclip mcp serve est un pont local vers le serveur MCP, épinglé au projet lié — c'est ce que lance .mcp.json. arclip mcp config affiche cette entrée, pour un client qui tient sa propre liste.

N'importe quel outil est à une commande près :

arclip tools                                   # what this account can call
arclip call get_entity '{"entityId":"…"}' # arguments as JSON, or "-" for stdin

Scripts et CI

  • Le résultat va sur stdout, les diagnostics sur stderr ; --json rend chaque résultat lisible par une machine.
  • Le code de sortie 0 signale un succès, 1 une vérification ou un outil en échec, 2 un problème d'utilisation ou de connexion.
  • La CI n'a pas besoin de se connecter — placez un jeton et un projet dans l'environnement :
export ARCLIP_TOKEN=arclip_…
export ARCLIP_PROJECT=<project-id>
arclip verify --json
arclip render --view top -o top.png

ARCLIP_API pointe la CLI vers un autre serveur, comme --api. -p, --project et --space choisissent le projet et la scène pour une seule commande.

Limites

  • La scène vit sur la plateforme ; les scripts et les cartes UI sont les seules parties que vous travaillez sous forme de fichiers.
  • playtest et test demandent que le projet soit ouvert dans un onglet de l'éditeur, y compris en CI.
  • arclip render est un aperçu ; utilisez --real, ou un appareil, quand le rendu exact compte.
  • Ce qu'un agent peut faire suit les permissions de votre jeton et votre offre. La génération par IA dépense les crédits de votre équipe, comme dans l'éditeur.

Suite : À quoi servent les agents ici