VCode home

Use VCode from app.v-code.dev

Agents: claude, codex, opencode, cursor · On: phone, desktop · beta

Open app.v-code.dev on your phone and log in with your account's email. The app opens VCode on every box linked to the account, through the VCode router: the same tabs, transcript and composer you get on the box itself, with the tabs of every box in one strip. No box asks for a code unless it is set to require pairing (add-a-phone).

Why you would use it

You are away from the box and it has no tunnel or tailnet of its own. The app is served from app.v-code.dev; everything you do in it goes to your box over an encrypted channel the router only forwards.

How to use it

  1. Open app.v-code.dev. The card says "Log in with the email of your v-code.dev account." Type the email in #rs-email and tap Send code (#rs-send).

    The login card with an email typed

  2. The hint changes to "Type the 8-digit code from the email." The code shows as eight boxes over one field (#rs-code): typing moves along the boxes, and a paste or the keyboard's code suggestion fills them all. Tap Log in (#rs-verify). Send code moves under it and reads Re-send code.

    The code boxes after Send code

  3. VCode opens with the tabs of every box on the account. The first time the app opens a box it keeps the box's key as the site lists it, and checks the box against it from then on. A box that is off leaves its tabs in the strip marked unavailable (work-on-several-boxes).

    With no box on the account yet, the box list shows No computer is linked to <email> yet. instead. Boxes (#rs-to-boxes) shows the list any time: each row reads paired once the app has opened that box, and ready before.

  4. A box set to Require pairing for new devices answers with the pair screen instead: the box name, its fingerprint, "Does the box show this fingerprint?", and This box asks for pairing. On the box, run v-code box pair and type the code it shows. Compare the fingerprint with the one on the box. Tap No (#rs-pair-no) to go back to the list, or Yes (#rs-pair-yes) to unlock the code field. Type the code in #rs-pair-code (XXXX-XXXX) and tap Pair (#rs-pair-go).

    The fingerprint question, with the code field still locked

    VCode, opened through the router

What you see

While logging in and pairing:

While you pick and pair a box, the app shows one of these screens when it cannot open it. Once VCode runs, a box that is off or refuses this device marks only its own tabs (work-on-several-boxes).

Screen Exact text What you can do
Offline "This box is offline." and Trying again in N s.; after a join, Waiting for <name> to start… Wait, it retries; or Boxes (#rs-to-boxes). While pairing, the pair screen says "This box is offline." under the code
Busy "The box has no room for another connection. Trying again in a few seconds." Wait
Connecting "Connecting to the box…" and Trying again in N s. Wait. When the site gives no token (unreachable, 429 or 5xx) the wait is the box list's: 2 s doubling to 60 s, or the site's Retry-After. A router or box that stops answering lands here too: after 10 s without an answer to the open (30 s for a pairing), the app drops its connection and tries again
Lapsed "Your subscription has lapsed." Open your account (#rs-account, v-code.dev/account), or Try again (#rs-lapsed-retry)
Box older "This box runs an older version. It updates itself within the hour." Try again (#rs-version-retry)
App older "Reload the app to talk to this box." Reload (#rs-reload)
Key changed "This box's key changed. Pair it again." Pair again (#rs-status-action): the pair screen says "This box has a new key. Pair only if the box shows this fingerprint." The old key stays pinned until that pairing succeeds
Asks for pairing "This box asks for pairing. On the box, run v-code box pair and type the code it shows." The box requires pairing for new devices, or removed this device. Type a code from the box on the pair screen. It pairs against the key the app pinned; if the site now lists another key for the box, you get Key changed instead
No WebCrypto "This browser cannot make the keys VCode needs." Use another browser

The lapsed screen

A lapse, or a login the site no longer accepts, covers VCode with its screen. A key change, a removed device or a version refusal from one box after VCode runs marks that box's tabs instead; tap the machine name on the row under the composer's keys in one of its tabs to open that box's screen. That includes a refusal the box gives when the app reopens a thread's live stream.

When a new build of the app is waiting, the sheet shows Update ready — reload (#rs-update) on whichever screen is up, since the sheet covers the top bar's update button. Tap it and the app reloads on the new build.

Options and settings

None in the app. The box's side is in link-this-box.

Limits and known gaps

Off in the app, on while you use the box directly:

Also: