Skip to content

Auto-configure Devin CLI (Devin for Terminal) as a supported MCP client #21

Description

@Miyamura80

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 listgrep -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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions