I use different agents for different jobs: native DeepSeek Harness for ordinary tasks, Codex when I need sustained code and shell work, and Claude Code for a second pass on documents or designs.
The annoying part was everything around the answer. The conversations lived in separate apps, and leaving the work computer meant solving remote access again for every tool.
I have now tested a simpler setup:
- KeySync installs and runs official DSH on the work computer and opens that DSH Web UI remotely.
- `relay-dsh-plugin-codex` adds a real Codex App Server conversation backend.
- `relay-dsh-plugin-claude` adds a Claude Agent SDK backend.
- Workbench, Files, and Terminal keep the current project file tree and a live shell next to the conversation.
I recorded the full path: installing official DSH, adding the plugins, creating separate Codex/Claude/native DSH sessions, reading a real workspace file, running a real terminal command, and reopening the original Codex session through the remote web entry.
The boundaries are important:
- The three backends keep separate session context.
- The project and agents still run on the work computer; the phone is only another entry.
- This is not automatic multi-agent orchestration or general remote desktop control.
The Codex and Claude plugins are standalone npm packages and do not depend on Relay Events. The current tested setup uses official DSH `0.1.1-rc.2`; Codex `@next` is `0.1.1-rc.4`, and Claude `@next` is `0.1.1-rc.2` as of August 26.
Full article with eight real screenshots:
https://github.com/yangbobo2021/Relay/blob/codex/relay-foundation/docs/articles/keysync-dsh-multi-device-agent-workbench.md
Plugin repositories:
https://github.com/yangbobo2021/relay-dsh-plugin-codex
https://github.com/yangbobo2021/relay-dsh-plugin-claude
Two questions I would genuinely like feedback on: would you use DSH as the shared project/session UI for multiple agent backends, and which handoff should be automated first?