domaeng
v1.5.5
Published
Local bridge between Codex and the Domaeng web app. Run `domaeng up` to start.
Downloads
114
Readme
Domaeng CLI
domaeng is the local bridge package for Domaeng. It runs on the machine where Codex is installed, prints a first-pairing QR/code, and relays encrypted traffic between Codex and a paired Domaeng Web client.
Domaeng is local-first: the Codex runtime, credentials, repo access, and bridge state stay on your machine. The relay can be run locally, on a private network, or on infrastructure you control.
Install
Install the bridge CLI on the Mac that runs Codex:
npm install -g domaeng@latest
domaeng upFor the normal first run, that is all you need. The npm package includes the bridge CLI, local relay, and Web App assets. On macOS, domaeng up starts the local relay, installs or restarts the launchd-backed background bridge service, then prints the Web App URL and pairing QR/code.
If you already have a reachable relay, Tailscale endpoint, or reverse proxy, you can override the default local relay:
DOMAENG_RELAY="wss://your-relay.example.com/relay" domaeng upOn other operating systems, run the bridge in the foreground or wrap it with your own service manager.
If you are developing from a source checkout and want the local source CLI, install it from the repository root:
npm install -g ./phodex-bridgePairing
Open Domaeng Web from the relay-served /app/ route, then scan the QR or enter the short pairing code printed by domaeng up.
After the first secure handshake:
- the browser stores the trusted Mac for that web origin
- the bridge keeps its device identity locally
- trusted reconnect can resolve the current live bridge session through the configured relay
- QR/code pairing remains available as a recovery path
Self-hosted Relay
Point the bridge at your relay explicitly:
DOMAENG_RELAY="ws://localhost:9000/relay" domaeng upFor another device on your network, use a relay URL that device can reach, such as a LAN hostname, a Tailscale hostname, or a reverse-proxied wss:// endpoint:
DOMAENG_RELAY="wss://api.example.com/domaeng/relay" domaeng upIf you enable push notifications on your own relay, also set:
DOMAENG_PUSH_SERVICE_URL="https://api.example.com/domaeng/v1/push" domaeng upManaged push remains off unless you configure it explicitly.
Commands
domaeng upstarts the bridge or macOS bridge service and prints pairing details.domaeng statusshows current daemon and bridge status.domaeng status --jsonprints machine-readable status for local diagnostics.domaeng renew-pairingasks the macOS daemon for a fresh pairing QR/code.domaeng trusted-device disabledisables trusted reconnect without deleting pairing history.domaeng restartrestarts the macOS bridge service.domaeng menubar statuschecks whether the optional native MenuBar app is bundled/installed.domaeng menubar installinstalls the bundled prebuiltDomaengMenuBar.appto~/Applicationsand enables login startup.domaeng menubar openopens the installed or bundledDomaengMenuBar.app.domaeng menubar login on|offchanges the MenuBar login startup preference.domaeng-jsonl-diagnoseinspects Codex JSONL session files for debugging.
State and Compatibility
Domaeng is based on Remodex, originally created by Emanuele Di Pietro. This package keeps the Apache-2.0 license and NOTICE attribution while using the Domaeng public package name and branding.
Some internal files and state paths intentionally keep legacy remodex or phodex names so this package can stay compatible with existing bridge state and upstream Remodex comparisons. For example, bridge state is stored under the legacy-compatible ~/.remodex/ directory.
Those internal names are not the public distribution name. The npm package, CLI command, app UI, web UI, and public docs use Domaeng.
Development
From the package directory:
npm ci
npm test
npm pack --dry-runThe package tarball should contain bin/, src/, bundled/, README.md, LICENSE, NOTICE, and package.json. The bundled/ directory contains distributable local relay and Web App assets, plus the optional prebuilt native MenuBar app when a release build provides it. It should not contain test fixtures, local relay sessions, pairing secrets, or private packaged defaults.
