FOR CLAUDE CODE + COPILOT CHAT

Your coding agent.
In your comfy place.

SofaCode is an app for Android and iOS, plus a small daemon on your computer. It turns your phone into a remote control for Claude Code and GitHub Copilot Chat running in VS Code on your own machine — talk to it, approve it, watch it work, from anywhere on your network. It even runs on cheap Android smartwatches today (plain AOSP watches — not Wear OS), with dedicated Wear OS and Apple Watch apps on the roadmap.

Android in private beta · iOS coming soon · Wear OS & Apple Watch on the roadmap · Free trial: 50 chat interactions, then $5/mo or $50/yr.

01 What it does

Everything the desktop agent does.
Now it fits in your pocket.

SofaCode isn't a chat wrapper — it's a full remote control for the coding agent that's already running on your machine. Same session, same files, same permissions. Just untethered from your desk.

A

Talk to it

Push-to-talk dictation

Hold to talk, straight into the editor's voice input — no typing on glass.

The deck

One glanceable circle: LIVE, WORKING, or NEEDS YOU — with a live waveform.

Send it your way

Long-press send to choose: steer the running agent, interrupt and send now, or just type into the box without sending.

Two assistants, one remote

Claude Code and Copilot Chat are both first-class: switch per session, use Copilot's Plan mode, and pick any model — cloud or local.

B

Stay in the loop

One-tap Approve / Deny

Answer permission prompts instantly, and cycle through permission modes without touching the keyboard.

Live chat transcript

Follow the running session on your phone — code blocks rendered properly, the agent's task checklist ticking off live, even its thinking if you want it.

Session stats

Token counts, turn counts, elapsed timer, subagent count — all live.

C

Reach across machines

Session browser

Every session across every paired machine, grouped by machine and folder — searchable, sortable, with favorites and one-tap archive.

Multiple machines, multiple devices

Pair a phone and a watch to the same machine, or one phone to several machines — all at once.

Open a new VS Code window

Launch any paired project into a fresh VS Code window on the machine, from your wrist.

D

Get hands-on

Browse & edit files

A real code editor on your phone — find, goto, undo, conflict-safe saves — and attach any file from the tree as @context.

Terminal & control

Run commands with output streaming back live, keep favorites on a quick rail, plus slash commands and /compact.

Photos in, files out

Snap a photo — or pick from the library — straight into the conversation. Pull any file back down, or a whole folder as a .zip.

Per-machine CLAUDE.md editor

Edit each machine's system prompt right from the app.

E

Make it yours

Text-to-speech

Have replies read aloud — pick the voice, rate, and pitch.

6 themes, incl. LCARS

A full LCARS skin, custom chime sounds per event, and optional ambient "thinking" sounds.

Background notifications

Get pinged the moment the agent needs you, or finishes.

Runs on cheap watches

Android 8.0 (API 26) and up — works on budget AOSP smartwatches, not just phones.

02 Screens

Straight off the phone.

Real screenshots, not mockups — shot on a live device while SofaCode's own agent was building this very page. The session in these frames is the one that shipped it.

SofaCode deck: machine pill on top, the push-to-talk ring in the WORKING state, and the control rail — provider (claude), window, session, new, chat
THE DECK one glance
SofaCode deck showing a floating attention bubble for a session on another machine that needs you, a needs-you count badge on the machine pill, and Approve and Deny buttons
BUBBLES another session needs you
SofaCode terminal with a shell-style working-directory prompt, a git status command with its clean output and exit code, and a rail of favorite commands
TERMINAL a real shell
SofaCode full-screen permission prompt: Bash, git push origin main, a countdown, and big Allow and Deny buttons
APPROVE in one tap
SofaCode live transcript: the agent narrating its work with tool calls, session timer and token counts in the header, Stop, Mode and Compact chips
TRANSCRIPT live
SofaCode session browser: sessions across machines, search, favorites, sort and archive controls, grouped by machine and folder with live state dots
SESSIONS every machine
SofaCode file browser: project folders and files with per-row attach and download actions, plus New file, Upload and folder-as-zip buttons
FILES in & out
SofaCode session stats screen: running timer, prompt and reply counts, model name, token breakdown with a context window meter
STATS tokens & timer

↔ scroll · shot on device, July 2026, v2.8

03 Setup

Running in under a minute.

Two pieces live on your computer: a small daemon and the VS Code extension. The one-line installer sets up both, then a pairing window pops open. No config files to hand-edit, no IP addresses to guess.

  1. 1

    Install the daemon + extension on your computer

    Pick your platform — the installer fetches the daemon, installs the VS Code extension, and starts everything as a login service:

    curl -fsSL https://dl.codedatda.casa/sofacode/install.sh | bash

    Works on Apple Silicon and Intel. Installs a LaunchAgent so the daemon starts at login. Needs python3 (preinstalled on macOS) and VS Code with Claude Code or GitHub Copilot Chat.

    curl -fsSL https://dl.codedatda.casa/sofacode/install.sh | bash

    Sets up a user systemd service and a PulseAudio / PipeWire virtual mic for dictation. Needs python3 3.10+ and VS Code.

    irm https://dl.codedatda.casa/sofacode/install.ps1 | iex

    Run in PowerShell. Installs the daemon into your user profile, adds it to the login programs, and puts sofacode on your PATH. Needs Python 3.10+ and VS Code.

    curl -fsSL https://dl.codedatda.casa/sofacode/install.sh | bash

    The daemon is pure Python and runs anywhere VS Code does — including a Raspberry Pi or other arm64 single-board computer running Linux. Same systemd path as desktop Linux; give a Pi 4/5 (or a headless box running VS Code Server) plenty of RAM for the editor.

  2. 2

    A pairing window pops open

    The installer finishes and your browser opens automatically, showing a QR code and a big 8-digit code. Leave it up.

  3. 3

    Add the machine from the app

    Open the SofaCode app on your phone (or watch), tap Machines → Add machine, then scan the QR — or type the 8 digits. Watches with no camera just use the digits. The app walks you through this the first time it runs.

  4. 4

    Done

    The app finds the machine on your network by itself from here on. Pairing survives IP changes — nothing to redo when your router hands out a new address. Away from home? Reach it over your own VPN or a mesh like Tailscale.

sofacode doctor — diagnose a machine the phone can't see sofacode pair — open a fresh pairing window any time sofacode update — pull the latest daemon + extension

04 Requirements

What you'll need.

  • COMPUTERmacOS, Linux, or Windows — even a Raspberry Pi / arm64 board — running VS Code with either Claude Code or GitHub Copilot Chat installed
  • PYTHONPython 3.10 or newer, for the daemon (the installer checks for it)
  • PHONEAn Android 8.0+ phone, or an iPhone on iOS 16+ (iOS coming soon), on the same network as the computer
  • WATCHOptional — a plain Android (AOSP) smartwatch, Android 8.0+. This is not a Wear OS app; it runs on the same budget AOSP watches a phone build runs on

Claude Code and GitHub Copilot Chat subscriptions are your own and aren't included with SofaCode.

05 Pricing

Try it free. Keep it cheap.

One purchase covers every device and every machine you pair — no per-seat pricing, no per-machine limits.

Trial

Free

Your first 50 chat interactions — no time limit, every feature unlocked, no limited mode.

Monthly

$5/month

Cancel any time. Covers all your paired devices and machines.

Yearly

$50/year

Two months free next to paying monthly. Same everything, one renewal a year.

The Android app is in private beta and headed to Google Play; iOS is coming soon. Ask for early access and we'll notify you the moment it opens.

06 Early access

Get in early.

The app is in private beta while we polish it for Google Play and finish the iOS build. Leave your email and we'll tell you the moment it opens — no list, no spam, one message when there's something to install.

We only use this to send one release notification. See our terms.

07 The desktop side

Daemon & extension.

The only thing you install by hand is the computer half — and the one-line installer in Setup does it for you. These direct downloads are here for air-gapped machines, custom setups, and the curious.

SofaCode daemon

The small background process that bridges the app and VS Code. Python, cross-platform — Windows, macOS, Linux, and arm64 boards like a Raspberry Pi.

Get the daemon

VS Code extension

Streams the live session, terminal output and window info back to the daemon. Installed automatically by the daemon installer, or grab the .vsix to sideload.

Get the extension

We're looking for partners.

SofaCode is a small independent studio's shot at making the coding agent you already pay for usable from anywhere. We're looking for partners — distribution, platform, or investment — to bring it to a mass-market audience. If that's you, let's talk.

Partner with us

08 FAQ

Questions, answered straight.

Is my code sent anywhere?+

No. The phone talks directly to the daemon running on your own machine, over your own network. Nothing routes through a server SofaCode controls — there isn't one in the loop.

What does the daemon actually do?+

It's a small background process that sits between the app and VS Code — it relays your voice, taps, and messages to Claude Code or Copilot Chat, and streams the session back to your device.

Does it work over the internet, away from home?+

Yes — over your own VPN or a mesh network like Tailscale. It is not exposed to the public internet by design, so there's nothing to lock down or accidentally leave open.

Is it secure?+

Pairing codes are short-lived and rate-limited. The long-lived token never crosses the wire — device authentication is a mutual HMAC challenge, so the phone proves itself to the machine and the machine proves itself to the phone.

Can I use it with Copilot Chat as well as Claude Code?+

Yes. SofaCode works with both Claude Code and GitHub Copilot Chat in VS Code.

Is there an iPhone app?+

It's coming. SofaCode is built for both Android and iOS from the same design; the Android build is in private beta now and the iOS build follows. Sign up and we'll tell you when iOS lands.

Does it work on a smartwatch? Is it a Wear OS app?+

It runs on plain Android (AOSP) smartwatches — the cheap ones running stock Android 8.0+. It is not a Wear OS app; it's the same phone build, and it happens to fit a tiny round screen. The watch is a fun bonus, not the main event — most people run SofaCode on their phone.

Can I pair more than one machine?+

Yes. Pair as many machines as you like, and as many devices as you like — a phone and a watch to the same machine, or one phone to several machines.

What happens when my computer's IP address changes?+

Nothing you need to do. Trust is keyed to the machine's identity, not its address, so the app keeps finding it after a router reboot or a new DHCP lease.

How do I update?+

Both the app and the daemon check for updates themselves and tell you when one's ready.

How do I uninstall?+

Remove the Android app like any other app, and run the daemon's uninstall command on your computer (the installer prints it when it finishes, and it's echoed by sofacode doctor).

What counts as a chat interaction on the free trial?+

A message you actually send to the assistant — a push-to-talk press that starts the mic, or a typed prompt you send off. Slash commands, terminal commands, and drafts you type without sending never count. Fifty of those are free, with no time limit; after that it's $5/month or $50/year.

Do I need a Claude subscription?+

Yes — your own Claude Code or GitHub Copilot Chat subscription. SofaCode is the remote control, not the agent itself, and doesn't include either subscription.

09 Changelog

What's new.

The app and daemon version together. Full notes ship inside the app under About → Changelog.

2.12.3App, daemon & extension · Jul 2026

Voice button stays in sync

  • The app's voice button could invert if you toggled Claude Code's own dictation by hand in the editor (its mic button / Ctrl+D) — a toggle SofaCode can't see. The daemon now tells the extension the intended state on every start, so the app, daemon and extension stay in agreement and the button no longer does the opposite of what you press. (Claude Code's dictation is a blind toggle with no readable state, so a manual mic-button press in the editor can still flip Claude's own listening once — use the app's button, not the editor's, to stay in sync.) Also: the submit key (Enter vs Ctrl+Enter) can be changed per machine from Settings.
2.12.2App, daemon & extension · Jul 2026

Quiet the reconnect chime

  • Moving between WiFi and cell used to play the connection sound on every hop. Settings › Sound gains a switch to turn the connection sound off on its own, and a reconnect quiet period that stops it repeating for a while after connecting (default 1 minute, off to 5 minutes). Per device.
2.12.1App, daemon & extension · Jul 2026

中文,每一個畫面

  • Finishes the Chinese localization from 2.12.0 — every remaining screen (permissions, per-machine config, approvals, projects, saved prompts, stats, usage, docs, onboarding, about) in Traditional (Hong Kong) and Simplified, with permission-mode names and descriptions translated at the source so no English clause is left inside a Chinese sentence.
2.12.0App, daemon & extension · Jul 2026

繁體中文 · 简体中文

  • The app speaks Chinese — Traditional (Hong Kong) and Simplified, over 1,300 strings across every screen. Pick it in Settings, or let it follow your phone.
  • New “Assistant replies in” setting. Claude Code and Copilot already answer in whatever language you write to them, so it is off by default — turn it on to write Chinese about an English codebase and still get Chinese back. It adds one line to your message; nothing is machine-translated in between.
  • The bottom “Talk to” pill lists only the sessions belonging to the selected server and window — server, window, session, in that order.
  • Submit key is now an app setting: Enter or Ctrl+Enter, matching whatever you rebound Claude Code's send to.
2.11.1App, daemon & extension · Jul 2026

Long press sends again

  • Long press to send did nothing when the computer's display session had changed under the daemon (an RDP reconnect renumbers displays; the service kept typing at a dead one). The daemon now finds the live display that actually hosts your VS Code windows by itself, re-checks whenever a keystroke fails, and heals without a restart.
2.11.0App, daemon & extension · Jul 2026

Tap to pair

  • Pairing is two taps and a camera point now. Tap a discovered machine in Machines and its pairing QR pops up on that computer's screen; the app opens the scanner for you. The code still never leaves the computer — you scan it off that screen — so nothing about the trust model changed, only the walking. Machines that don't want this can turn it off (pairing.remote_open).
  • The installer puts a “Pair SofaCode” shortcut on the desktop, so opening a pairing window later never requires remembering a terminal command.
2.10.1App, daemon & extension · Jul 2026

The phantom dictation toasts

  • Voice input worked, but VS Code sometimes showed “Dictation error: no audio detected” — and “WebSocket error” in a second window. Claude Code's dictation is a blind toggle, and SofaCode's stop signals could land in a window that wasn't dictating, switching a phantom dictation ON onto a microphone nobody was feeding. Stops are now guarded — only a window whose own dictation is running ever acts on one — so the phantoms, and their error toasts, are gone.
2.10.0App, daemon & extension · Jul 2026

Never lose the stream, follow every server

  • A chat you are reading never freezes again. Clicking out of a VS Code window on the computer used to silently stop that conversation updating on the phone. Aiming and subscribing are separate now: the open chat owns its own stream and jumps with the focus instead of losing it.
  • Follow-focus works across all your servers. Click between VS Code windows on two different machines and the app switches server, window and session with you — the window you touched last wins, wherever it is. Manual picks still pin the app until you touch a computer again, and attention bubbles keep every other server's sessions one tap away, in chat as well as on the deck.
  • A context meter sits under the chat input: how full this session's window is, 0–100% against the model's real limit (1M models included). Amber past 80%, red past 95% — tap it for the full stats.
  • The deck's chat button is sized to the pair of buttons under it instead of spanning the whole tablet.
  • The iOS app compiles and runs on hardware for the first time, catches up with the 2.9 deck, and lands a wide parity pass with Android — same screens, same controls, same behaviour.
2.9.0App, daemon & extension · Jul 2026

Follow your computer's focus, and a cleaner deck

  • The app now follows your computer. Whichever VS Code window you click into on a server becomes the active chat on your phone — move between windows on the computer and the app moves with you, no tapping. Pick a session or window on the phone and it holds there until you focus a window on the computer again, which takes back over. Only the server you have selected is followed; switching server stays your choice.
  • The deck is rearranged. Chat is now a full-width button on its own row — the thing you reach for most is the easiest to hit. The VS Code window is a small pill right under the server name, the session is the pill at the bottom, and the smaller buttons are tidied to one row.
  • Tapping the session pill shows sessions and nothing else. The server is the pill up top, the window is its own pill — so the session picker stopped repeating both. Windows and sessions everywhere are scoped to the server you have selected.
  • Chat has one-tap “continue” and “try again” replies, so the two answers you give an agent most often don't need the keyboard.
2.8.8App, daemon & extension · Jul 2026

Windows delivery, and same-named folders

  • Windows: prompts went to whatever app was in front instead of VS Code. The daemon never brought the editor window forward on Windows at all — that step was written for Linux and silently did nothing everywhere else — and it could not check which window had the keyboard either, so it typed regardless. Approving from the phone never worked there for the same reason.
  • The VS Code extension is now installed by the installer. It was always required — a prompt goes to a session's WINDOW, and the daemon only knows a window exists once its extension connects — but installing it was a manual step that was never written down, so a new machine could pair perfectly and never deliver a word. Reload VS Code once after updating.
  • Two projects whose folders end in the same word (~/work/api and ~/side/api) now both work. They looked identical to SofaCode before, so a prompt could land in the wrong one. Windows are told apart by their full folder, and the editor window itself confirms it is in front before anything is typed.
  • sofacode doctor now checks the things that actually stop a prompt: whether a VS Code window is connected, whether this machine can type at all, and whether it can bring a window forward.
2.8.7App, daemon & extension · Jul 2026

A prompt could land in the wrong project

  • A prompt could be typed into the wrong project. Two VS Code windows whose folders end in the same word — ~/work/api and ~/side/api — looked identical to SofaCode, which knew each window only by that last word. A session in one of them resolved to whichever window you were looking at, and every safety check agreed, because they all compared the same word. Windows are now told apart by their full folder, and where keystrokes still cannot be aimed at exactly one window, nothing is sent and the app says why.
2.8.6App, daemon & extension · Jul 2026

Upgraded machines were stuck on the old release channel

  • Machines upgraded from the old name kept checking a release address that no longer exists. The rename preserves your existing settings on purpose — that is what keeps your devices paired — but it carried the old update address along with them. The check failed every time, the daemon fell back to the last answer it had, and the machine went on advertising an ancient version however new it really was. The address is now corrected automatically on startup.
2.8.5App, daemon & extension · Jul 2026

A Windows installer that runs, and the extension's version

  • Windows install fixed. A ?? had crept into install.ps1. That operator is PowerShell 7 only and Windows ships 5.1, where an unknown operator is a parse error — so the whole script died before its first line ran and a stock Windows machine got red text and no install. It also now forces TLS 1.2 (5.1 negotiates 1.0 by default, which the download host refuses) and spots the Microsoft Store python.exe stub instead of failing later with an unrelated error.
  • Settings shows the VS Code extension's version alongside the app and daemon — the one piece of the stack whose version nothing ever reported.
2.8.4App, daemon & extension · Jul 2026

Settings on the deck, and the right daemon version

  • Settings is reachable straight from the talk screen — the gear beside the machine name. It used to be two taps down inside the machine picker.
  • The daemon version in Settings showed whichever machine reported last rather than the one you are using, so with several machines paired the number could change to one from a machine you weren't looking at. It now follows the active machine.
2.8.3App, daemon & extension · Jul 2026

The daemon version you saw was its own stale cache

  • A machine could report an old daemon version long after it had been upgraded, and every app connected to it showed the same wrong number. The daemon was reading its own version out of a saved update check written by an older build — and nothing ever corrected it, because an update check tells you what is available, never what you are running.
  • It now reports the version it is actually running, always.
  • The app, the daemon and the VS Code extension share one version number from here on, so a mismatched set is obvious at a glance.
2.8.2App, daemon & extension · Jul 2026

A tidier download host

  • The one-line installers moved to a per-product path — dl.codedatda.casa/sofacode/install.sh and /sofacode/install.ps1 — so more of our apps can ship from the same download host. Update any bookmarked command; already-installed machines keep updating themselves.
  • The Android app is now handed out through GitHub releases rather than this site, while it's in private beta and on its way to Google Play. Ask for early access and we'll send you the link.
2.8.1App & daemon · Jul 2026

Pairing that actually connects

  • Pairing now works on machines with more than one network — the QR carries every LAN address and the app tries each, so a phone on a different subnet than the computer's main one still connects.
  • The pairing window (code + QR) pops up on the computer automatically when a new device tries to connect — no need to run sofacode pair first.
  • The installer opens the firewall for the daemon (Windows Defender, Linux firewalld/ufw, macOS) — the most common reason a phone couldn't reach the computer.
  • Clearer connection errors: firewall vs. wrong-network / AP isolation vs. bad address, instead of one catch-all line.
  • Terminal output no longer shows raw shell escape-code garbage.
2.8.0App & daemon · Jul 2026

New name: SofaCode — plus Claude usage & chat fixes

  • CouchCode is now SofaCode. Same product, new name and a new home here at sofacode.codedatda.casa. Existing users re-pair their devices once.
  • Claude usage: token spend and estimated cost across your sessions — today, this week, all time, broken down by model.
  • Tapping an attention bubble opens that conversation directly; the chat now shows bubbles for other sessions that need you.
  • Long-press a message to read it — and everything after it — aloud.
  • Auto-scroll follows the reply while it streams, and holds your place when you scroll back.
2.6.0App & daemon · Jul 2026

Deck rework, cross-session alerts, shell-grade terminal

  • Reworked the voice deck: machine on top, and a clean provider · window · session · new rail — pick Claude or Copilot right there, and it filters the sessions.
  • Cross-session attention bubbles: when a session on another machine needs you or finishes, it pops up as a tappable chip — one tap switches to it.
  • Pinning that sticks: starred sessions get their own section at the top of the list and lead the deck picker.
  • Terminal now feels like a shell — a live working-directory prompt, command history, and a Ctrl-C interrupt.
  • Move and rename files right in the in-app explorer.
2.5.0Jul 2026

Payments & polish

  • Settled pricing: 50 free chat interactions, then $5/month or $50/year.
  • Photo and file transfers both directions; a Play-compliant build flavor.
2.4.xJul 2026

Routing safety & live terminal

  • Prompts, approvals and commands always land in the session's own VS Code window.
  • Live terminal output over VS Code's shell integration; session favorites and auto-archive.
  • The dictation reliability pass.

10 Contact

Talk to a person.

Beta access, a partnership, a bug — one form, and it reaches an actual human at [email protected].

Goes straight to [email protected]. By sending you agree to our terms.