Your coding agents, in your pocket.
Remote Micro is the local-first Host and protocol. Lembic Micro is its Tauri desktop control surface: six persistent agent slots, live status light, exact approval routing, fork, steering, model-specific reasoning control, Skill shortcuts, and an expanded activity/diff view. The Expo Mobile client remains available for remote monitoring.
The clients never automate the ChatGPT UI and never connect to App Server directly. The Host owns codex app-server, repository access, approvals, SQLite sequence/replay, and command deduplication. Provider credentials stay on the Host. The deterministic Mock Adapter is test infrastructure only.
- Node.js 24 (pinned in
.nvmrc) - pnpm 11
- Rust toolchain supported by Tauri 2 (for the native desktop shell)
- Codex CLI installed and authenticated on the Host
The current App Server contract is verified against codex-cli 0.146.0. Check the installed CLI and its existing official authentication before starting the Host:
codex --version
codex login statusRemote Micro does not ask Mobile for an OpenAI API key and does not copy the CLI credential into its event database.
Install once, then use two terminals:
pnpm install
pnpm dev:hostpnpm dev:desktoppnpm dev:desktop opens the Tauri 2 window. For browser-only UI development use pnpm dev:desktop:web. The Host binds to 127.0.0.1:47831 and owns the repository root as its single configured workspace by default. Override the executable or workspace with empty-secret environment configuration when needed:
REMOTE_MICRO_CODEX_BIN=/absolute/path/to/codex \
REMOTE_MICRO_WORKSPACE_PATH=/absolute/path/to/repository \
pnpm dev:hostDesktop uses VITE_REMOTE_MICRO_URL, defaulting to the loopback Host. It does not need LAN exposure. To run Mobile separately, use pnpm dev:mobile; Expo uses EXPO_PUBLIC_REMOTE_MICRO_URL, also defaulting to loopback. A physical phone cannot use the Host computer's loopback address. LAN binding and plaintext ws:// are development-only: explicitly set REMOTE_MICRO_ENABLE_LAN=true, set the same non-empty development token in REMOTE_MICRO_DEV_AUTH_TOKEN and EXPO_PUBLIC_REMOTE_MICRO_TOKEN, choose the Host's private LAN address for REMOTE_MICRO_HOST and EXPO_PUBLIC_REMOTE_MICRO_URL, and use only a trusted network. Host startup rejects LAN binding without the token.
In Lembic Micro:
- Wait for the Host indicator and select one of the six Agent Keys.
- Enter a task. An empty slot starts a thread; a running slot steers the active turn.
- Turn the dial to select only efforts supported by the current model. Use the model selector or
Alt+ dial. - Review the selected session's command, path, risk, and reason before
Allow onceorDeny. - Fork the selected thread into the next empty slot or flick the Skill joystick to run one of four enabled Skills.
- Double-click an Agent Key within 350 ms to open Expanded View for output, tools, approvals, and diffs.
Completion marks a slot unread until it is opened. Reconnect sends the last applied sequence; SQLite replays only missing RM Link events, and the client discards duplicate sequences.
pnpm format
pnpm lint
pnpm typecheck
pnpm test
pnpm build
pnpm check:desktop-nativeSee desktop controls, architecture, protocol, security, provider contract, and the Lembic Micro/Codex 0.146.0 ADR.
This is a development build with one Host-owned workspace and one Codex provider. Desktop still expects a separately running Host; managed sidecar/service lifecycle, tray/global shortcuts, push-to-talk, assignment of an existing unassigned thread, drag reordering, signed installers, production pairing/WSS, secure mobile credential storage, push notifications, Claude, plugins, Relay, accounts, and automatic approvals are not implemented. Do not expose the development WebSocket to an untrusted network.