Now available — desktop app included

AI coding tools.
Anywhere.

Run Claude, Gemini & Codex from your phone. Connect to your computer instantly — no SSH keys, no VPN, no setup.

RemoteAI
Codex ×
Claude ×
Gemi... ×
Update(package.json)
dependencies updated
Read 1 file
Bash(cd ~/project && npm test)
> remoteai@2.1.89 test
> jest --coverage
PASS src/auth.test.ts
PASS src/relay.test.ts
Update(src/auth.ts)
14 - const token = getToken();
14 + const token = await refreshToken();
15 + if (!token) throw new AuthError();
Read 3 files
I've refactored the auth module to use
async token refresh with proper error
handling. The changes include:
- Token refresh on expiry
- Retry logic with backoff
- Better error messages
Update(src/config.ts)
8 - timeout: 5000,
8 + timeout: 10000,
9 + retries: 3,
>
Claude
[remoteai] 0:zsh 1:claude* 2:npm
Message

Up and running in minutes.

RemoteAI.dmg 27 MB · Universal
01 · Download

Install the desktop app

Get RemoteAI for your Mac or Linux computer. Install it like any other app — no terminal, no scripts.

Paired
02 · Scan

Pair with your phone

The desktop app shows a QR code. Scan it from the mobile app to securely link the devices — no passwords on desktop.

MacBook Pro Online · just now
$ claude
03 · Connect

Tap and you're in

Open RemoteAI on your phone — your computer appears automatically. Tap to connect and run claude.

Encrypted end to end.

Your terminal content never touches our servers. The relay only passes encrypted bytes between your devices.

Your phone Mobile app
Relay TLS 1.3
Your computer Desktop app
  • Never decrypted in transit
  • Relay sees ciphertext only
  • Device-to-device keys

Everything you need.

RemoteAI · workspace 3 sessions
fix-auth
ui-redesign
refactor
+
$ claude refactor src/auth
analyzed 12 files · 4 hotspots
Editing auth/jwt.ts
+ rotate refresh tokens before exp
+ reduced bundle by 4.2kb
$
Sessions

Multi-tab, all running.

Independent AI sessions side by side — Claude, Gemini, Codex, or plain shell. Tabs persist across restarts and survive disconnects.

TLS 1.3 AES-256
  • End-to-end encrypted
  • No SSH keys to manage
  • No port forwarding
  • Per-device revocation
Locked down

Encrypted by default.

No VPN, no SSH keys, no port forwarding to mess up. Traffic is encrypted from your phone to your computer.

$ claude login
claude.ai/auth
Authorize RemoteAI? Allow
Logged in.
Native auth

OAuth without leaving the app.

When Claude or Codex needs to log in, the browser sheet opens in-app — no token copy-paste.

Build passed
deploy/staging · 1m 12s
5m
Codex hit usage limit
Resets in 1h 24m
2m
Claude finished working
Refactored auth · 3 files changed
now
Background

Notifications that find you.

Pings the moment your AI finishes, hits a limit, or needs input.

Esc
Tab
Ctrl
|
~
/
]
PAGE 1 / 3
Customizable

Drag any key, anywhere.

Three pages of customizable keys. Drag to reorder. Modifiers and symbols exactly where you want them.

$ kubectl get pods -A -o wide
api-gateway-7c4d9 Running 2d 10.0.4.21 node-3
worker-relay-2f8a Running 2d 10.0.4.22 node-1
postgres-primary-0 Running 9d 10.0.4.10 node-4
Wide canvas

Landscape mode.

Rotate to fit a full git log, build output, or wide diff — without cramped wrapping.

Your terminal, in your pocket.

RemoteAI
Claude ×
Gemini ×
> Shell ×
Update(src/api/routes.ts)
31 - app.get('/users', handler);
31 + app.get('/users', auth, handler);
32 + app.get('/users/:id', auth, getUser);
Read 4 files
Bash(cd ~/app && npm test)
> app@1.4.2 test
> jest --coverage
PASS src/api/routes.test.ts
PASS src/auth/middleware.test.ts
PASS src/db/queries.test.ts
Update(src/db/pool.ts)
12 - const pool = createPool(5);
12 + const pool = createPool(20);
13 + pool.on('error', handleErr);
Read 2 files
I've added auth middleware to all
user routes and increased the DB
connection pool with error handling.
- Auth guard on GET /users
- New GET /users/:id endpoint
- Pool size 5 -> 20 + error cb
>
Claude
[remoteai] 0:claude* 1:gemini 2:zsh
Message
Run AI sessions
Claude, Gemini, Codex, or shell — all in separate tabs that persist.
RemoteAI
Claude ×
Gemini ×
Update(src/sync.py)
refactoring sync logic...
Read 2 files
Update(src/queue.py)
42 - self.retry_count = 3
42 + self.retry_count = 5
43 + self.backoff = 2.0
Bash(python -m pytest)
PASS tests/test_sync.py
PASS tests/test_queue.py
Waiting for confirmation...
>
Claude finished
Refactored auth — 3 files changed
[remoteai] 0:claude* 1:gemini
Message
Push notifications
Know when your AI finishes or needs your attention.
RemoteAI
Codex ×
> Shell ×
Codex v0.1.4
> optimize database queries
Read src/db/queries.ts
Found 4 N+1 query patterns
Update(queries.ts)
23 - const users = await db.query(
23 + const users = await db.batch(
Indexed users table
Added query cache layer
Latency reduced 3.2x
>
Message
Ctrl+C
Ctrl+D
Ctrl+Z
Ctrl+L
Ctrl+A
Ctrl+E
Ctrl+R
Ctrl+W
Home
End
PgUp
PgDn
Custom keyboard
Three pages of configurable keys. Drag to reorder.

Built for many sessions.

The desktop app is designed for developers juggling multiple agents, branches, and terminals at once.

RemoteAI · workspace 4 sessions
claude · fix-auth
Edit auth.ts
refresh tokens added
Bash npm test
codex · refactor-db
Read queries.ts
N+1 detected · line 23
Edit batch query
gemini · ui-redesign
Update nav.tsx
dark variants applied
Read 2 files
shell · deploy
$ docker compose up -d
3 containers running
$ curl :8080/health
01 · Workspace

Many terminals, one window.

Claude Code, Codex, Gemini, and shells in adjacent panes. Drag to rearrange. Layout persists between launches.

  • Split horizontally, vertically, or both
  • Each pane is a real tmux session
  • Drag-and-drop pane rearrangement
RemoteAI · workspace · full screen ⎋ exit
claude · fix-auth
Edit auth.ts
refresh tokens added
awaiting approval…
Run this command?
$ npm test
1. Yes, proceed (y) 2. No (esc)
y
codex · refactor-db
Read queries.ts
N+1 detected · line 23
awaiting approval…
Run this command?
$ git push origin main
1. Yes, proceed (y) 2. No (esc)
y
gemini · ui-redesign
Update nav.tsx
dark variants applied
awaiting approval…
Apply this edit?
~ ui/nav.tsx +12 -4
1. Yes, proceed (y) 2. No (esc)
y
shell · deploy
$ curl :8080/health
200 OK
awaiting approval…
Run this command?
$ kubectl apply -f deploy/
1. Yes, proceed (y) 2. No (esc)
y
02 · Auto-focus

Focus follows whoever's asking.

When an AI agent asks for permission, RemoteAI brings that pane forward and shows the prompt overlay. Approve from the keyboard — no alt-tab, no missing what's running.

  • Per-pane permission overlays
  • Voice approval — say "yes proceed"
  • Same prompt mirrored to your phone
fix-auth
Claude Code
Needs Permission 4m
refactor-db
Codex CLI
Working 12m
ui-redesign
Gemini CLI
1h
$_
deploy-prod
Shell
Idle 2h
03 · Sessions

Sessions that tell you what they need.

Every session shows live status in the sidebar — idle, working, finished, or asking for permission. Sessions that need attention rise to the top so you never lose track of what's where.

  • Real-time status per session
  • Auto-sort by priority
  • Pulsing dot when an agent is actively working
AI Manager
watching 3 sessions
BETA
merge the auth changes when tests pass
Watching Claude pane · running auth.test.ts
git status
On branch fix-auth
3 files changed
All green — merging now.
Ask the manager…
04 · AI Manager BETA

An AI manager for your AI agents.

A co-pilot for your co-pilots. Watches your sessions, remembers what you're working on across them, and runs filesystem + git tools when you want to coordinate work between agents.

  • Typed memory with decay
  • Filesystem + git tools built in
  • Voice or text

Install, scan, done.

Install the desktop app on your computer and the mobile app on your phone. Sign in on the phone, then scan the QR code your desktop displays — they're linked.

Desktop

Mobile

iOS iPhone · App Store
Get on App Store
Android Coming soon
Coming soon