Free and Open Source · MPL-2.0

26stars217downloads

Your agents don't need you watching.

Uxnan Desktop runs Claude Code, Codex, OpenCode and four more side by side — each in its own worktree, on a machine you can still use. Uxnan Mobile puts all of them in your pocket.

Other platforms

Windows, Linux · macOS (experimental) · Android on Google Play · iOS coming soon

Uxnan DesktopALPHA
Claude Code
Uxnan project session startup
OpenCode
Antigravity
Claude Code v2.1.222
Opus 5 (1M context) with xhigh effort · Claude Max
~\Documents\GitHub\uxnan

> add a reconnect backoff to the zero adapter and cover it with a test

Read(bridge/src/adapters/zero-adapter.ts)

⎿ 142 lines

Grep("reconnect")

⎿ 6 matches in 3 files

Update(bridge/src/adapters/zero-adapter.ts)

+18 −4

Task(doc-check) running 12s

Bash(npm test -w uxnan-bridge)

✓ 493 tests passed in 6.2s

Reconnect backoff is in, with a test that fakes three dropped sockets. Want me to open the PR?

> Try "fix lint errors"
⏸ manual mode on· ? for shortcuts

Bring your own agent

If it runs in your terminal, it runs in Uxnan.

22 agents report precise status — working, waiting, blocked, done — plus session resume, live model discovery and per-agent run options. Any other CLI you register launches exactly the same way.

Claude Code
Codex
OpenCode
Cursor
GitHub Copilot
Droid
Grok
Amp
Goose
Qwen Code
Kiro
Auggie
Devin
Kimi
Kilo Code
MiMo Code
Command Code
OpenClaude
Pi
OMP
Zero
Antigravitypartial support

These launch and run the same way, and show a working/idle indicator — their CLI just has no way to say a turn ended, so uxnan doesn't claim a precise state it can't know.

Aider
Cline
Continue
Crush
Codebuff
Mistral Vibe
Rovo Dev
Autohand
Ante
+ any CLI agent

Every one of them runs as that vendor's own official binary, under the account you already signed it in with. Uxnan never calls a provider API, holds a key, or embeds an SDK — it drives the terminal, exactly like you would.

Parallel by default

One task. One worktree. One agent.

Every task gets its own isolated git worktree, so nothing an agent touches collides with what you're doing — or with the other three. You keep one window, and each of them keeps their own copy of the repo.

  • A new worktree in seconds — new branch, existing branch, or anywhere you like.
  • Terminals that survive sleep and restore with their scrollback intact.
  • Commit, push and open the PR with the merge methods your repo actually allows.
  • Subagents show up nested under the agent that spawned them.
uxnan· 3 active worktrees 1 ready
feat/reconnect-backoff
Claude Code · editing zero-adapter.ts
Working
fix/windows-flake
Codex · asking to run the suite
Waiting on you
docs/agent-surfaces
OpenCode · +142 −38 · ready to review
Done
$git worktree add ../uxnan--fixready in 0.9s

Away from the keyboard

Then walk away.

Uxnan Mobile is a real client, not a status page. Pick the agent and the model, start the conversation, and steer it from wherever you are — the sofa, the bus, another country.

9:41
claude/opus-5

It pairs with a small daemon on your PC so the phone can stream a conversation, approve the next step and review a diff.

Architecture

Monorepo with:

  • shared/ — JSON-RPC + E2EE contracts
  • relay/ — optional, self-hosted
  • bridge/ — the daemon on your PC

The phone connects directly over LAN or Tailscale first, and only falls back to the relay when you are off that network

Status: ALPHA. Android is in open testing on Google Play, and the desktop ships stable and nightly builds.

Copy response
17.9k9
Message…

It streams, live

Watch the answer arrive token by token, leave the app, come back — it is still there, still going.

Queue a follow-up

Send the next instruction while the agent is still working. On the CLIs that allow it, it lands mid-turn without stopping anything.

Review the diff

Read what changed and stage it from the phone, before anyone opens a laptop.

A push when it's done

The moment an agent finishes, your phone tells you — not fifteen minutes later.

It pairs with your PC, not with a cloud.

A small daemon runs on your machine and prints a QR code. Scan it once and the phone connects straight over your LAN or Tailscale, falling back to an optional relay only when you're off the network — which never sees anything but sealed envelopes.

$ npm install -g uxnan-bridge
$ uxnan-bridge start
▸ scan the QR from the app

X25519 · Ed25519 · AES-256-GCM

9:41
Devices
DESKTOP-4RO76Q2
Last seen 13:00
ConnectedLAN
MBP-DEV
Last seen Jul 30
ALPHA

Measured, not guessed

Small enough to leave the machine to the agents.

An agent needs the CPU more than your editor does. So the number that matters is what the app costs while they work — and it is a measurement, not a marketing figure: every run records the OS, webview version, CPU, build profile and commit before it records a megabyte.

226 MB
workspace asleep
252 MB
one agent, one terminal
274 MB
four agents, four terminals

Windows 11 · release build · private working memory. Agent CLIs run in their own processes and are never counted as ours. Read how it is measured.

Open source

Free, open, and yours.

No paid tier, no key to hand over, no API of ours in the middle. Uxnan is built in the open and released under the MPL-2.0 — if something is missing, the source is right there.

~/code
$ git clone github.com/luisgamas/uxnan
✓ cloned in 3.1s
$ cd uxnandesktop && npm ci
✓ dependencies installed
$ npm run tauri dev
▲ Uxnan Desktop dev running
$
  • Change the interface

    Every surface is Svelte and Rust, and the design tokens live in one file.

  • Teach it a new agent

    Register any CLI by hand, or wire a real adapter and get status and resume too.

  • Ship your own build

    MPL-2.0. Build it, patch it, run it on your own machines.

Give your agents somewhere to work.

Install it, sign your agents in the way you already do, and let them run. Your machine stays usable, and your phone keeps the thread.

Honest heads-up: the Windows and macOS builds aren't code-signed yet, so SmartScreen and Gatekeeper will warn you on first run. How to get past it. That's an alpha without a signing certificate, not a sign anything is wrong.