Summary
Add a devin client integration to the desktop client so it auto-configures the Devin CLI (Devin for Terminal) to route through the Edison gateway, the same way it already does for Claude Code, Codex, Cursor, etc.
This is separate from Cloud Devin, which is documented as a manual custom MCP connector and is org-shared (see below).
Background
The desktop client auto-injects Edison into local CLI/IDE agents via per-client integration modules registered in packages/desktop/src/main/clients/registry.ts. Currently present under packages/desktop/src/main/clients/: claude-code, claude-cowork, claude-desktop, codex, cursor, jetbrains, vscode, windsurf, zed.
Devin CLI is not in that list — grep -rn "devin" packages/desktop/src returns nothing.
Today the only documented Devin path is the Cloud Devin custom MCP connector, added by hand in Settings > Connections > Add a custom MCP. That surface is org-shared — Cognition's docs state a custom MCP server is shared org-wide and all members' sessions use the same authenticated connection — so a single Edison connector there mis-attributes every member's traffic to one per-user API key. There is no per-user option in Cloud Devin's GUI.
Why the CLI is a good fit for desktop auto-config
The Devin CLI reads MCP servers from a repo-shared .devin/config.json, with a git-ignored, per-developer .devin/config.local.json override. That per-user override is exactly the model the desktop client already targets for Claude Code / Codex: inject each user's own ?client=devin connection URL locally so traffic is correctly attributed per user. Unlike Cloud Devin, the CLI can carry a personal Edison key.
Proposed work
- Add a
devin ClientIntegration under packages/desktop/src/main/clients/devin/ (discovery + hooks/config writer), following the codex integration as the closest analog (file-based config model).
- Resolve and watch the Devin CLI config paths (
.devin/config.json shared, .devin/config.local.json per-user); write Edison's MCP entry with the ?client=devin URL into the per-user override.
- Register it in
registry.ts and add display metadata in clients/displayMeta.ts.
- Confirm the exact Devin CLI config schema against Cognition's CLI docs before implementing.
Already done — no work needed
These landed before the repo split and are verified present:
- The
devin agent icon exists in the shared agent registry (packages/shared/src/agent-registry/index.ts).
?client=devin is handled end-to-end on the backend: reconnect anchoring in src/middleware/openai_mcp_session_id_patch.py (identifies Devin by x-edison-client: devin when no user-agent is sent) and CLIENT_DISPLAY_NAMES["devin"] in src/middleware/session_tracking_models.py.
Out of scope
Cloud Devin (org-shared connector) — already documented manually in the docs site.
Follow-on (different repo)
Once this ships, the connect-clients doc page in the backend repo (docs/content/connect-clients/devin.mdx, ×5 locales) needs a CLI section alongside the existing Cloud Devin instructions.
History
Originally filed in the private backend repo as Edison-Watch/edison-watch#1015 (2026-06-22), against client_2/, before the desktop client moved to this repository. Re-filed here with updated paths; the original has been closed as moved. Verified still unimplemented at 0ff6668.
Summary
Add a
devinclient integration to the desktop client so it auto-configures the Devin CLI (Devin for Terminal) to route through the Edison gateway, the same way it already does for Claude Code, Codex, Cursor, etc.This is separate from Cloud Devin, which is documented as a manual custom MCP connector and is org-shared (see below).
Background
The desktop client auto-injects Edison into local CLI/IDE agents via per-client integration modules registered in
packages/desktop/src/main/clients/registry.ts. Currently present underpackages/desktop/src/main/clients/:claude-code,claude-cowork,claude-desktop,codex,cursor,jetbrains,vscode,windsurf,zed.Devin CLI is not in that list —
grep -rn "devin" packages/desktop/srcreturns nothing.Today the only documented Devin path is the Cloud Devin custom MCP connector, added by hand in
Settings > Connections > Add a custom MCP. That surface is org-shared — Cognition's docs state a custom MCP server is shared org-wide and all members' sessions use the same authenticated connection — so a single Edison connector there mis-attributes every member's traffic to one per-user API key. There is no per-user option in Cloud Devin's GUI.Why the CLI is a good fit for desktop auto-config
The Devin CLI reads MCP servers from a repo-shared
.devin/config.json, with a git-ignored, per-developer.devin/config.local.jsonoverride. That per-user override is exactly the model the desktop client already targets for Claude Code / Codex: inject each user's own?client=devinconnection URL locally so traffic is correctly attributed per user. Unlike Cloud Devin, the CLI can carry a personal Edison key.Proposed work
devinClientIntegrationunderpackages/desktop/src/main/clients/devin/(discovery + hooks/config writer), following thecodexintegration as the closest analog (file-based config model)..devin/config.jsonshared,.devin/config.local.jsonper-user); write Edison's MCP entry with the?client=devinURL into the per-user override.registry.tsand add display metadata inclients/displayMeta.ts.Already done — no work needed
These landed before the repo split and are verified present:
devinagent icon exists in the shared agent registry (packages/shared/src/agent-registry/index.ts).?client=devinis handled end-to-end on the backend: reconnect anchoring insrc/middleware/openai_mcp_session_id_patch.py(identifies Devin byx-edison-client: devinwhen nouser-agentis sent) andCLIENT_DISPLAY_NAMES["devin"]insrc/middleware/session_tracking_models.py.Out of scope
Cloud Devin (org-shared connector) — already documented manually in the docs site.
Follow-on (different repo)
Once this ships, the connect-clients doc page in the backend repo (
docs/content/connect-clients/devin.mdx, ×5 locales) needs a CLI section alongside the existing Cloud Devin instructions.History
Originally filed in the private backend repo as
Edison-Watch/edison-watch#1015(2026-06-22), againstclient_2/, before the desktop client moved to this repository. Re-filed here with updated paths; the original has been closed as moved. Verified still unimplemented at0ff6668.