Skip to content

For Devin Desktop users

Devin Desktop edits the file.
Maguyva sees the repo.

Devin Desktop (the Windsurf IDE) is the editor and Devin Local is the agent. In a monorepo, the agent still needs a map of which file matters. Maguyva indexes your codebase and serves it back over MCP (semantic, AST, graph, and text), so “where does auth happen” returns the actual auth flow, not seven test stubs.

Free tier: 3 repos, 50K indexed lines, no card.

Devin Desktop edits what you point at. Maguyva tells Devin Local which file to point at.

What each layer does

Four pieces. Each one has a job.

// editor

Devin Desktop

Where you and Devin Local actually work.

// manual context

@ mentions + .devin/rules/

Manual context wins, until the repo is big.

// codebase

Maguyva

Automatic codebase facts over MCP.

// who pays

Workspaces, not seats

Agents don’t pay seats. See pricing

Devin Desktop is the editor. Use it.

The IDE is not the problem. Devin Local, tab completion, multi-file edits, and .devin/rules/ are excellent, and you already use them for:

  • Inline suggestions and Devin Local edits in the open file.
  • Multi-file edits when the change is local.
  • .devin/rules/ for repo conventions and style guardrails.
  • @-mentions to pull a specific file into context.

Keep doing that. None of it goes away.

But in a real monorepo (TypeScript with workspace deps, Python services, mixed packages) agent context breaks the moment the relevant file isn’t already on Devin Local’s radar.

Manual fixes you’ve already tried, and where they break

Four manual fixes paired with their failure mode. Left = what you do today. Right = where it breaks.

// the fix

// mention the files

You @-mention the three files you think matter. Devin Local edits cleanly inside them.

// where it breaks

// mentioning is a guess

It works when you already know which files are involved. The whole point of context tools is to surface the files you didn’t know to mention.

// the fix

// paste the snippets

You paste 200 lines from another package into Devin Local to give it enough context.

// where it breaks

// pasted code goes stale

The snippet you pasted at 9 a.m. doesn’t reflect the rebase your teammate landed at 11 a.m. Devin Local is editing against a phantom version of the package.

// the fix

// write a context doc

You write a .devin/rules/ file or an architecture markdown. It’s right today.

// where it breaks

// docs drift faster than code

Anything you write by hand drifts. The code is the source of truth. A doc explaining the queue layer is correct for a week, then wrong forever.

// the fix

// keep the rules files

You add .devin/rules/ for naming, lint, and build commands. Great for behavior.

// where it breaks

// rules ≠ index

.devin/rules/ is the right place for “always run pnpm tsc -b before commits.” It is not a queryable index of every symbol, file, and call-site in your monorepo.

Maguyva is the layer underneath

Not a Devin Desktop replacement. The repo-context layer that hangs off Devin Local’s MCP support.

  • Semantic + AST + graph + text search by meaning, structure, dependency, or literal. Every hit returns a file path and line number.
  • Cross-package by default call-sites and importers across every package in the monorepo, not just the one Devin Local has open.
  • Branch-aware Maguyva sees the version of the code Devin Local is editing.
  • Complementary, not competitive .devin/rules/ keeps doing its job. @-mentions keep doing theirs. Maguyva fills the gap they don’t fill.

Devin Local edits the file you point at.

Maguyva tells the agent which file to point at.

Three monorepo workflows

Cross-package, cross-language. Grounded against the actual call graph, not Devin Local’s grep.

// workflow 01

Find the auth flow across packages, without mentioning anything

devin> where does authentication happen in this monorepo?

graph::query("authentication flow")
  packages/web/src/auth/session.ts:42       middleware
  packages/api/src/auth/jwt.ts:88           token verify
  packages/shared/src/auth/types.ts:12      AuthContext
  packages/admin/src/auth/admin-only.ts:31  rbac gate

→ 4 entry points across 4 packages, ranked by call-site density.
[exit 0]

You didn’t mention a file. You didn’t paste a snippet. Devin Local has the four files that matter, in the right ranking, and can make a grounded edit.

// workflow 02

Find the real implementation, not the test stub

devin> how does normalizePhoneNumber handle E.164?

semantic::query("normalize phone E.164")
  packages/shared/util/phone.ts:88     normalizePhoneNumber()  ← real impl
  packages/api/test/phone.spec.ts:14   jest.mock(...)          ← stub
[exit 0]

Names lie. Mocks shadow real code. Maguyva ranks the real implementation above the test mock, across every package.

// workflow 03

Check blast radius before you refactor

devin> what calls QueueDispatcher.publish across the monorepo?

graph::callers(QueueDispatcher.publish)
  3 in packages/billing/*
  1 in packages/audit/*
  1 in packages/notifications/*
  1 in services/python-worker/*  ← cross-language via gRPC stub
[exit 0]

Cross-package, and cross-language when you have a polyglot repo, call-sites surface inline. The diff is grounded against real importers, not Devin Local’s grep.

Setup with Devin Desktop

Three steps. Free tier: 3 repos, 50K indexed lines, no card.

  1. // step 01

    Index a repo at maguyva.ai

    Pick the monorepo where you’ve felt the most context pain.

  2. // step 02

    Add Maguyva as an MCP server in Devin Desktop

    ~/.config/devin/mcp_config.json

    {
      "mcpServers": {
        "maguyva": {
          "url": "https://maguyva.tools/mcp",
          "headers": {
            "Authorization": "Bearer ${env:MAGUYVA_API_KEY}"
          }
        }
      }
    }
  3. // step 03

    Ask one question whose answer you already know

    Don’t start with your whole company. Start with one repo and one verifiable question, like “what calls formatInvoice across packages?”