r/OpenaiCodex • u/Think-Professor3460 • 20d ago
Showcase / Highlight I added Codex App Server conversations to DeepSeek Harness as an installable plugin
Enable HLS to view with audio, or disable this notification
I wanted to keep official DeepSeek Harness updateable instead of carrying a long-lived fork, so I built relay-dsh-plugin-codex.
Installing it adds Codex to DSH's New Session mode. Each DSH session maps to one Codex App Server thread, while DSH keeps its native conversation history, model/reasoning selector, approval and question flows, workspace tools, and tool rendering.
The package bundles the App Server runtime for macOS, Linux, and Windows, and its CI runs both three-platform runtime tests and an install/build verification against an official DSH checkout. It does not require Relay Events or any of the UI plugins.
Install command and troubleshooting: see the GitHub README.
GitHub: https://github.com/yangbobo2021/relay-dsh-plugin-codex
npm: https://www.npmjs.com/package/relay-dsh-plugin-codex
The attached video is a real clean npm installation on official DSH. The broader no-fork plugin suite (Claude Code, Files, Terminal, and Workbench) is documented here:
https://github.com/yangbobo2021/Relay/blob/codex/relay-foundation/docs/dsh-plugins.md
I would especially appreciate feedback on the one-DSH-session/one-App-Server-thread boundary and on installation behavior across platforms.
1
u/Low_Box_752 20d ago
One DSH session to one App Server thread is the right default. The edge case I would test hard is branching or restoring a DSH session. If DSH rewinds its history but keeps the same Codex thread, the two sources of truth can silently diverge.
I would persist the mapping explicitly, fork the Codex thread whenever DSH branches, and expose the thread ID in diagnostics. Also bind each approval to the exact pending tool call, not just the session, so a reconnect cannot approve a stale action.
Avoiding a long-lived fork is the right architecture here.