
Research
TeamPCP Compromises Telnyx Python SDK to Deliver Credential-Stealing Malware
Malicious versions of the Telnyx Python SDK on PyPI delivered credential-stealing malware via a multi-stage supply chain attack.
codex-web-ui
Advanced tools
Codex Desktop's full UI — chat, skills, file editing, code execution — accessible from any browser on any device. No Electron window required.
One script. Full Web UI. Anywhere. 🌍
██████╗ ██████╗ ██████╗ ███████╗██╗ ██╗ ██╗ ██╗███████╗██████╗ ██╗ ██╗██╗
██╔════╝██╔═══██╗██╔══██╗██╔════╝╚██╗██╔╝ ██║ ██║██╔════╝██╔══██╗ ██║ ██║██║
██║ ██║ ██║██║ ██║█████╗ ╚███╔╝ ██║ █╗ ██║█████╗ ██████╔╝ ██║ ██║██║
██║ ██║ ██║██║ ██║██╔══╝ ██╔██╗ ██║███╗██║██╔══╝ ██╔══██╗ ██║ ██║██║
╚██████╗╚██████╔╝██████╔╝███████╗██╔╝ ╚██╗ ╚███╔███╔╝███████╗██████╔╝ ╚██████╔╝██║
╚═════╝ ╚═════╝ ╚═════╝ ╚══════╝╚═╝ ╚═╝ ╚══╝╚══╝ ╚══════╝╚═════╝ ╚═════╝ ╚═╝
E N A B L E R
OpenAI's Codex Desktop is a powerful AI coding agent — but it's locked inside an Electron window on a single machine. What if you could access it from any browser, on any device, anywhere on your network?
We reverse-engineered the minified Electron bundle and built scripts that patch the app at runtime to expose the full Codex UI over HTTP + WebSocket. The same scripts also unlock a hidden SSH remote execution engine that was already compiled into the binary but never wired up.
One command. Full Web UI. Plus SSH remote control. No recompilation.
Yes, that's a phone. Yes, that's Codex. Yes, it's running on a Mac across the network.
💬 Live AI Chat Session Full Codex conversation running on a Mac, controlled from an Android phone over the network. GPT-5.3-Codex responding in real-time. The address bar says it all: 100.107.32.83:5999 — that's a remote Mac.
|
🧩 Skills Manager — From Your Pocket Browsing and managing Codex skills (Playwright, Oracle Cloud CLI, Three.js, YouTube Search...) from a mobile browser. Full desktop functionality, zero compromises. |
🤯 This is not a mockup. This is a real Codex Desktop instance running on macOS, patched with our Web UI Enabler scripts, accessed from a mobile phone browser over Tailscale. Every feature works — chat, skills, file editing, code execution — all from your pocket.
# Run directly from npm (no clone needed)
npx -y codex-web-ui --port 5999
Open http://127.0.0.1:5999/ and you're flying. ✈️
With the Web UI enabled, Codex breaks free from the Electron window — and with SSH mode unlocked, it reaches any machine you own:
| 🎯 Use Case | 💡 Description |
|---|---|
| 📱 Code From Your Phone | Open Codex in any mobile browser — full chat, skills, file editing, code execution |
| 💻 Use Any Browser | Chrome, Firefox, Safari, Arc — no Electron install needed on the client |
| 🌐 Access Over the Network | Tailscale, LAN, VPN — access your Codex instance from anywhere securely |
| 🖥️ Control Your Mac Remotely | SSH into your MacBook from anywhere and let Codex operate it as if you're sitting in front of it |
| 🐧 Orchestrate Linux Servers | Point Codex at your Ubuntu/Debian/Arch boxes and run AI-powered coding sessions remotely |
| 🪟 Manage Windows via WSL | Connect through WSL2 SSH and bring Codex intelligence to your Windows dev environment |
| 🏠 Command Your Homelab | Proxmox, TrueNAS, Raspberry Pi clusters — Codex becomes your AI sysadmin |
| ☁️ Cloud Fleet Management | AWS EC2, Oracle Cloud, DigitalOcean droplets — manage entire fleets from one Codex window |
| 🔧 Web Service Orchestration | Nginx configs, Docker containers, systemd services — edit and deploy across machines |
| 🧪 Remote CI/CD Pipelines | Trigger builds, inspect logs, fix failing tests on remote CI runners in real-time |
| 📡 IoT & Edge Devices | SSH into Raspberry Pis, Jetson Nanos, or any edge device and code directly on them |
| 🏗️ Multi-Machine Refactoring | Coordinate code changes across microservices running on different hosts simultaneously |
TL;DR: Codex in your browser + SSH to any machine = your entire infrastructure as one AI-powered IDE. 🧠
codex-unpacked-toolkit/
├── 🌐 launch_codex_webui_unpacked.sh # WebUI mode launcher (browser access)
├── 🔧 launch_codex_unpacked.sh # SSH unlock & debug launcher
├── 🔌 webui-bridge.js # Browser-side WebSocket ↔ IPC bridge
├── 📖 PROJECT_STATE.md # Living project state & patching reference
├── 📂 images/ # Screenshots & proof it works
│ ├── mobile-chat-session.jpeg # Codex chat from mobile phone
│ └── mobile-skills-browser.jpeg # Skills manager from mobile phone
└── 📂 skills/
└── launch-codex-unpacked/
└── SKILL.md # Codex skill definition
launch_codex_webui_unpacked.sh — Browser-Based CodexThe main event. Run Codex in your browser. No Electron window needed. Access from any device on your network.
app.asar — Same unpacking as aboveroots guard compatibility issue in the React renderer that crashes in WebUI modewebui-bridge.js — Installs the browser-side bridge into the webview directory--webui flag, hides all native windows, serves UI over HTTP--token for secure remote access--originswebContents.send and mirrors to all connected clients)webui-bridge.js injection into HTML--app <path> Custom Codex.app path
--port <n> WebUI port (default: 5999)
--token <value> Auth token for secure access 🔐
--origins <csv> Allowed origins (comma-separated)
--bridge <path> Custom webui-bridge.js path
--user-data-dir <path> Chromium user data dir override
--no-open Don't auto-open browser
--keep-temp Keep extracted app dir
# Run from npm package
npx -y codex-web-ui --port 5999
# Basic local access
./launch_codex_webui_unpacked.sh
# Secure remote access with auth
./launch_codex_webui_unpacked.sh --port 8080 --token mysecrettoken
# Access from specific origins only
./launch_codex_webui_unpacked.sh --origins "https://mysite.com,http://localhost:3000"
launch_codex_unpacked.sh — The SSH UnlockerBonus superpower. This script extracts, patches, and launches Codex with the hidden SSH remote execution feature fully activated.
app.asar — Unpacks the Codex Electron bundle into a temp directory using @electron/asar.codex-global-state.json so the app recognizes it as a configured remotemain-*.js to auto-select the SSH host on startup (finds the startup sequence and rewires it to check electron-ssh-hosts first)--inspect for live debugging (port 9229 by default)--remote-debugging-port (9222) for DevTools Protocol accessBatchMode=yes and ConnectTimeout=6 before launching--keep-temp)--app <path> Custom Codex.app path (default: /Applications/Codex.app)
--user-data-dir <path> Chromium user data dir override
--inspect-port <n> Node inspector port (default: 9229)
--remote-debug-port <n> Chromium remote debug port (default: 9222)
--ssh-host <user@host> The SSH host to unlock and auto-connect 🔑
--no-inspect Disable Node inspector
--no-remote-debug Disable Chromium remote debugging
--keep-temp Keep extracted app dir for inspection
# Unlock SSH to your homelab server with custom ports
./launch_codex_unpacked.sh \
--ssh-host ubuntu@192.168.1.100 \
--inspect-port 9230 \
--remote-debug-port 9223
webui-bridge.js — The Browser-Side BridgeMakes the browser think it's Electron. Replaces
window.electronBridgewith a WebSocket-backed implementation.
/ws with automatic reconnection (exponential backoff, 500ms → 5s)electronBridge API — sendMessageFromView, sendWorkerMessageFromView, subscribeToWorkerMessages, and moreMessageEvents that the React app expectsclient-status-changed on connect, handles open-new-instance redirectsSee the full reverse-engineering findings in
PROJECT_STATE.md§ 9
We extracted the app.asar, deobfuscated the minified bundles, and traced the execution paths. Along the way we discovered a fully-built SSH remote execution engine hidden inside the binary. Here's what we found:
| 🔎 Discovery | 📝 Detail |
|---|---|
| Remote host detection | Activates when host config kind is ssh or brix |
| Command execution | Builds args from hostConfig.terminal_command, appends --, env vars, and command |
| SSH wrapper | Wraps commands in sh -lc <quoted> with -o BatchMode=yes -o ConnectTimeout=10 |
| Git over SSH | Routes git commands through remote shell with GIT_TERMINAL_PROMPT=0 |
| Remote git apply | Full flow: mktemp -d → cat > patch → test -e → git apply --3way → rm -rf |
| Codex home resolution | Checks $CODEX_HOME, falls back to $HOME/.codex |
All of this was already compiled into the app. We just wired it up. ⚡
┌─────────────────────────────────────────────────────┐
│ YOUR BROWSER │
│ │
│ webui-bridge.js │
│ ┌──────────────────────────────────┐ │
│ │ window.electronBridge (fake) │ │
│ │ ┌────────────┐ ┌─────────────┐ │ │
│ │ │ sendMessage │ │ subscribe │ │ │
│ │ │ FromView │ │ ToWorker │ │ │
│ │ └──────┬─────┘ └──────┬──────┘ │ │
│ └─────────┼──────────────┼────────┘ │
│ │ WebSocket │ │
└─────────────┼──────────────┼─────────────────────────┘
│ /ws │
┌─────────────┼──────────────┼─────────────────────────┐
│ ELECTRON MAIN PROCESS (headless) │
│ │ │ │
│ ┌────────┴──────────────┴────────┐ │
│ │ WebUI Runtime Patch │ │
│ │ ┌──────────┐ ┌─────────────┐ │ │
│ │ │ HTTP │ │ WebSocket │ │ │
│ │ │ Server │ │ Server │ │ │
│ │ └──────────┘ └──────┬──────┘ │ │
│ │ │ │ │
│ │ webContents.send ◄──┘ (intercept & mirror) │
│ └────────────────────────────────┘ │
│ │ │
│ ┌───────┴────────┐ │
│ │ SSH Transport │ ◄── UNLOCKED 🔓 │
│ └───────┬────────┘ │
└──────────────────────┼────────────────────────────────┘
│ SSH
┌────────┴────────┐
│ REMOTE HOST │
│ ┌────────────┐ │
│ │ ~/.codex │ │
│ │ git apply │ │
│ │ sh -lc ... │ │
│ └────────────┘ │
└─────────────────┘
--app path)node/npx (both launchers)ripgrep (launch_codex_webui_unpacked.sh)brew is missingcurl available for automatic Homebrew/tool installationAUTO_INSTALL_TOOLS=0 to disable auto-install behaviorBatchMode=yes)~/.codex directory (or $CODEX_HOME set) — only needed for SSH modeBatchMode=yes — no interactive password prompts, key-based auth onlyStrictHostKeyChecking overrides — your existing SSH config is respected| Problem | Solution |
|---|---|
EADDRINUSE | Port already in use — try --port 6002 |
SSH preflight failed | Check your SSH key: ssh -o BatchMode=yes user@host 'echo ok' |
Renderer guard patch anchor not found | Bundle version changed — open an issue |
Missing app.asar | Point --app to your Codex.app location |
| Blank page in WebUI | Check console for roots error — renderer patch may need updating |
# Clone this repo
git clone https://github.com/friuns2/codex-web-ui.git
cd codex-web-ui
# 🌐 Launch the Web UI — access Codex from any browser
./launch_codex_webui_unpacked.sh --port 5999
# 🔓 Or launch with SSH mode unlocked (connects to your remote host)
./launch_codex_unpacked.sh --ssh-host user@your-server.com
Found a new Codex version that breaks the patches? Bundle patterns change between releases — PRs to update the patch anchors are always welcome! Open an issue if you hit a new bundle shape.
If you think Codex should be accessible from any browser, on any device — not just the Electron window it shipped in — smash that star button. ⭐
Built by reverse-engineering Codex Desktop's Electron bundle 🔬
Because the best features are the ones they already shipped but forgot to turn on. 😏
FAQs
Launch Codex Desktop Web UI from CLI
The npm package codex-web-ui receives a total of 31 weekly downloads. As such, codex-web-ui popularity was classified as not popular.
We found that codex-web-ui demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Research
Malicious versions of the Telnyx Python SDK on PyPI delivered credential-stealing malware via a multi-stage supply chain attack.

Security News
TeamPCP is partnering with ransomware group Vect to turn open source supply chain attacks on tools like Trivy and LiteLLM into large-scale ransomware operations.

Security News
/Research
Widespread GitHub phishing campaign uses fake Visual Studio Code security alerts in Discussions to trick developers into visiting malicious website.