expert0
Run Claude Code from your phone or desktop browser.
expert0 is a small program that wraps the Claude Code CLI. It runs on your machine and gives it a web page, so there is no app to install. You open that page in any browser, phone or desktop: a chat window, live output, a session list, diffs, and an interrupt button.
Claude Code keeps doing the actual work. expert0 just gives it a screen that a phone can use.
(Read-only. It replays a recorded session, so nothing runs.)
Why I made it
Built expert0 to scratch an itch. I come from a software background, so living in a terminal is normal for me. But Claude Code is a terminal app. On a phone, terminal keyboards have no autocorrect and no swipe typing, which makes real work painful. So I put a real chat page in front of it. A normal text box brings autocorrect and swipe typing back, so the phone is actually nicer to type in than the terminal. It is great for when I am on the go. If it is useful to others, that's a nice added bonus.
I am not always in front of a computer. Traveling, life, raising a
toddler. With expert0 I can start or steer a session from my phone. Later I
can grab the laptop to review on a full screen or in the IDE. Or I can SSH in
and pick the same session up in a terminal with claude --resume.
Whatever is most convenient. It is the same session either way.
It does more than quick edits. I have used it to build the software and iterate on itself, compile other binaries, deploy websites (once proper deploy auth is set up), use git in a repo, search online and read through documentation, and run everyday terminal commands. All on the remote Claude Code session.
It handles the whole loop. I can chat to make a change, have it deploy, then pull up the live site to check it, and go again. All from my phone.
Install
Grab the binary and run it. The web UI is built in, so it is one file and zero setup.
mkdir -p ~/bin
curl -fL https://expert0.com/download/expert0-linux-amd64 -o ~/bin/expert0
chmod +x ~/bin/expert0
~/bin/expert0 -dir ~
It listens on 127.0.0.1:8080 by default.
- On an ARM server, use
expert0-linux-arm64.
Usage
Every flag has a sensible default, so a bare expert0 just
works:
expert0 [flags]
-addr listen address (default 127.0.0.1:8080)
-dir folder new sessions start in (default: current)
-claude Claude Code executable (default: claude on PATH)
-idle-timeout stop idle sessions after this long, freeing memory;
they resume on your next message (default 30m, 0 off)
-memcap MiB cap for helper processes Claude starts;
a watchdog stops bigger ones (default 2048, 0 off)
-names session names file (default ~/.expert0/names.json)
-projects Claude Code transcripts (default ~/.claude/projects)
-v verbose: log every stream event
-dev development only: serve the UI from ./web on disk
To use another port, change the part after the colon in
-addr, keeping the 127.0.0.1.
Signing in
expert0 uses your existing Claude Code login. If you are already logged in to Claude Code on the machine, it just works. On a fresh machine, a first-run helper in the UI walks you through signing in with a login link, so you never need the terminal.
It works with a monthly Claude subscription (Pro or Max), not just pay-as-you-go API billing. Whatever your Claude Code already uses.
Features
- Start, resume, rename, and switch between sessions.
- Live replies as they stream, with thinking blocks, tool chips, and red/green diffs.
- Full history, read straight from Claude Code's own transcript files.
- Send a message while it is busy. It is queued for the next turn.
- Live plan usage in the header (rolling 5h and 7d), refreshing as you work, so you know when it is time to stop.
- Optimized for mobile, with no app to install. Swipe left and right to move between sessions, or swipe to refresh.
- Auto-reconnect when the connection drops, with a clear banner and notices so you always know the state.
Good to know
- Runs on any machine that already has Claude Code installed. One copy per machine.
- No accounts, no database, no build step. Just a single binary.
- Plus a small
~/.expert0/names.jsonconfig file that holds your session names.
- Plus a small
- Made for a machine you trust, like your own VM. Claude runs with permissions skipped, so the machine is the sandbox.
Reach it safely
The web UI is not meant to be hosted publicly. The server binds
127.0.0.1 only and never opens a public port. You reach it by
forwarding that loopback port to your own device over SSH, then opening the
page locally:
ssh -L 8080:127.0.0.1:8080 youruser@yourserver
Then open http://localhost:8080/ on the device running that
command, phone or laptop. Do not change -addr to a public
address to make it reachable.
Run it as a service
If you want expert0 to persist, so it starts at boot and stays up, create a service. A minimal systemd unit, with the args it needs to run unattended:
[Service]
User=youruser
ExecStart=/home/youruser/bin/expert0 -addr 127.0.0.1:8080 -dir /home/youruser
Restart=on-failure
Environment=HOME=/home/youruser
[Install]
WantedBy=multi-user.target
Then enable it:
sudo systemctl enable --now expert0
Ideas or feedback?
Would love to hear how you'd use it, and what's
missing. If some feature would make it click for you,
drop me an email at feedback @ expert0.com.
Not affiliated with, endorsed by, or sponsored by any AI company. expert0 is an independent tool that wraps the Claude Code CLI. All trademarks are the property of their respective owners.