Linux Codex Desktop App with Remote Control: How I Got 'Control Other Devices' Working
What I Wanted
I wanted to use Codex Desktop on Linux to remote control my Mac mini at home.
Specifically, I wanted the Linux Codex Desktop App with Remote Control working well enough that I could open Codex Desktop on Linux, go to Control other devices, authorize the machine, and remote into my Mac mini.
This is not official support. This is an experimental, unofficial, local hack against the excellent Linux build repo here:
There is also a relevant GitHub issue tracking this rough edge:
If you are searching for things like Codex Desktop Linux remote control, Codex remote control Linux, Codex Desktop for Linux Control other devices, or Linux Codex Desktop App remote control Mac mini, this is the exact debugging path that worked for me.
Installing Codex Desktop for Linux
The normal install worked fine for me using the unofficial Linux repo:
git clone https://github.com/ilysenko/codex-desktop-linux.git
cd codex-desktop-linux
make bootstrap-native
That got the base app installed and launching.
The issue was not the basic Linux app. The issue was outbound remote control from Linux.
First Failure: macOS Only Device Keys
When I tried to authorize remote control, Codex Desktop failed with this error:
remote_control_authorize_failed
errorMessage="Remote control device keys are only available on macOS"
That was the first blocker.
The app was trying to use remote control device keys, but the device-key provider path it expected was macOS-only.
At this point, it looked like Linux could run the desktop app, but could not authorize for remote control.
Enabling remote-mobile-control
The important discovery was that ilysenko/codex-desktop-linux already has an experimental Linux feature called remote-mobile-control.
That feature matters because it adds two important pieces:
- a Linux file-backed device-key provider
- launching
codex app-serverwith--remote-control
That fixed the macOS-only device-key blocker.
To enable it, I created linux-features/features.json:
mkdir -p linux-features
cat > linux-features/features.json <<'EOF'
{
"enabled": [
"remote-mobile-control"
]
}
EOF
After that, the app-server side was much closer to what I needed.
But there was a second problem.
Second Failure: Control other devices Was Hidden on Linux
After enabling remote-mobile-control, the Control other devices tab was still not usable.
In the Codex UI, this is the access-other-devices settings tab. The Linux feature patch was intentionally filtering that tab out as unsupported.
That makes sense as a defensive upstream choice. If the feature is experimental and not fully supported, hiding the tab avoids presenting a broken flow to users.
But in my case, I specifically wanted to test outbound remote control from Linux. So hiding the tab became the next blocker.
The Tiny Local Patch
The local hack was to let the access-other-devices tab show up on Linux.
In linux-features/remote-mobile-control/patch.js, the existing patch changed the settings tabs with something like this:
"function codexLinuxRemoteControlSettingsTabs(e){return typeof navigator!==`undefined`&&navigator.userAgent.includes(`Linux`)?e.filter(e=>e.key!==`access-other-devices`):e}"
For my local build, I changed it to return the tab list unchanged:
"function codexLinuxRemoteControlSettingsTabs(e){return e}"
I also disabled or skipped the selected-tab fallback patch that redirected Linux away from access-other-devices.
That part matters. If the tab exists but the selected-tab logic forces Linux away from it, the UI still will not let you use the flow.
So the practical patch was:
- Enable
remote-mobile-controlinlinux-features/features.json. - Modify
linux-features/remote-mobile-control/patch.jssocodexLinuxRemoteControlSettingsTabsreturns tabs unchanged instead of filtering outaccess-other-devices. - Skip the selected-tab fallback patch that redirects away from
access-other-devices. - Rebuild and reinstall.
Again, this is a local hack. I am not claiming this is supported by OpenAI or by the unofficial Linux repo.
Rebuild and Verify
After the local patch, rebuild and reinstall:
make install-native
Then launch Codex Desktop.
I verified the important processes with:
pgrep -af 'codex app-server|/opt/codex-desktop/electron'
The app-server process should include this:
codex app-server --remote-control --analytics-default-enabled
I also checked the launcher logs:
tail -200 ~/.cache/codex-desktop/launcher.log
For the UI patch, I verified the built webview asset contained the patched function:
grep -R "function codexLinuxRemoteControlSettingsTabs(e){return e}" \
/opt/codex-desktop/content/webview/assets/remote-connections-settings-*.js
Once those lined up, the Control other devices tab was visible and usable on Linux.
Result: Remote Controlling My Mac mini from Linux
After the patch and rebuild, the Linux Codex Desktop App allowed the Control other devices tab.
Authorization worked.
I was able to remote control my Mac mini from Linux.
That was the end state I wanted: OpenAI Codex Desktop Linux remote into Mac behavior through the unofficial Linux build, using the experimental remote-mobile-control feature plus a local UI patch.
Caveats
A few important warnings before anyone treats this like a normal install guide:
- This is unofficial.
- This is experimental.
- It may break on updates.
- The Linux device-key storage path is file-backed.
- Server-side support could change.
- The upstream repo may intentionally keep outbound remote control hidden on Linux until it is more stable.
So I would treat this as a debugging note, not a supported product feature.
If you are using this for real work, understand what you are patching and where keys are stored.
Useful Links
- ilysenko/codex-desktop-linux
- codex-desktop-linux issue #381
- Search upstream Codex remote-control issues
Prompt for Codex CLI
If you want Codex CLI to apply the same local hack, this is the prompt I would paste in:
In this repo https://github.com/ilysenko/codex-desktop-linux, make a local experimental build that enables outbound remote control from Linux.
Do the following:
1. Create linux-features/features.json enabling remote-mobile-control.
2. Editlinux-features/remote-mobile-control/patch.js.
3. Keep the Linux remote-control device-key provider and app-server --remote-control behavior.
4. Do not hide the Control other devices / access-other-devices tab on Linux.
5. Change codexLinuxRemoteControlSettingsTabs so it returns the tab list unchanged.
6. Disable the selected-tab fallback patch that redirects Linux away from access-other-devices.
7. Rebuild and reinstall with make install-native.
8. Launch /usr/bin/codex-desktop.
9. Verify that /opt/codex-desktop/content/webview/assets/remote-connections-settings-*.js contains `function codexLinuxRemoteControlSettingsTabs(e){return e}` and that pgrep -af 'codex app-server' shows --remote-control.
This is an unofficial local hack. Do not claim official support.
Final Notes
The main trick was that the first failure and second failure were different problems.
The macOS-only device-key error was solved by enabling remote-mobile-control.
The missing Control other devices tab was solved by not filtering out access-other-devices on Linux.
Together, those two changes got codex-desktop-linux remote-mobile-control working well enough for me to control my Mac mini from Linux.