build with the world's most frontier models in one unified workspace

extension

MockingBird, inside your editor.

Chat, edit, and build — right where your code lives.

One extension, four models, and an edit pipeline that reads your files before it touches them.

1.0   chat

Chat, grounded in your codebase.

Route work to the right model, not just one model.

Claude, GPT, Gemini, and DeepSeek sit behind one picker. Sonnet for reasoning-heavy refactors, a fast model for boilerplate, Opus when you need to go deep — swap mid-conversation without losing context. If a provider goes down mid-task, MockingBird falls back automatically. No dropped request, no starting over.

MockingBird
MockingBird
Claude Haiku 4.5
Claude Sonnet 4.6
Claude Opus 4.6
Claude Opus 4.7
Claude Opus 4.8

GPT

GPT 4.1 mini
GPT 4.1
GPT 5.4
MockingBird

Start a conversation.

Switch models anytime.

Settings.tsx
src/pages
settings.json
.vscode
vite.svg
src/assets
react.svg
src/assets
hero.png
src/assets
@Settings.tsx

Reference a file, don't paste it.

Type @ and pull any file in your workspace straight into the conversation — the model reads it directly instead of you copying code back and forth. No stale pastes, no forgetting to update the context when the file changes.

Show it, don't just describe it.

Attach screenshots, error dumps, design mockups — anything visual — alongside your message. Multimodal models read the image and the code together, so "this button looks wrong" is a valid bug report.

Open

QUICK ACCESS

Desktop

Downloads

Documents

Pictures

MockingBird > src

assets
components
context
hooks
layouts
lib
pages
types
File name:

2.0   edit

Edits that land where you meant.

One model call reads the file and proposes the edit — not two.

Most tools read your code with one model call, then guess at the edit with a second, disconnected one — reconstructing the change from a text marker instead of the actual file state. MockingBird's propose_edits runs inside the same call that reads your code, so the edit is grounded in what the model just saw, not a re-guess of it.

Every edit stops at a review panel first.

Nothing touches your files until you accept it. See the exact diff, accept, reject, or ask for changes — the model never writes to disk behind your back.

MockingBirdMockingBird

the login form doesn't handle empty passwords, fix it

Claude Haiku 4.5

Found it — handleSubmit in LoginForm.tsx submits even when the password field is empty. Adding a guard:

src/LoginForm.tsx

Edits land on the right line, every time.

Insertions are anchored to exact text in your file, not a line number that shifts the moment something above it changes. Works identically whether your file uses LF or CRLF line endings — no more edits that apply, then quietly land three lines off.

18  function authenticate(req, res) {
19    const { email, password } = req.body;
-  if (!email) return res.status(400).end();
+  if (!email || !password) return res.status(400).end();
+  if (password.length < 8) return res.status(422).end();
22    const user = await db.users.find({ email });
-  if (user.password !== password) throw new Error();
+  const valid = await compare(password, user.hash);
+  if (!valid) return res.status(401).end();
25  }

3.0   sudo mode

Turn off the review step, when you trust the pipeline.

One switch, and the review panel disappears.

Sudo Mode skips the accept/reject step entirely — edits apply the instant they're proposed. Same propose_edits pipeline underneath, same anchoring, same CRLF-safe application. You're not trading safety for speed, you're trading a click for speed.

Built for repetition, not risk.

Bulk renames, formatting passes, applying the same fix across a dozen files — the kind of work where reviewing every diff is friction, not safety. Sudo Mode stays off by default; you turn it on per session, not per project.

BEHAVIOUR

Auto model switch

Switch to another provider on 503

Sudo Mode

Apply proposed edits instantly, no review

SLASH COMMANDS

/clearClear current chat
/modelOpen model switcher

4.0   builder mode

Describe what you want built. MockingBird runs the build.

A conversation first, a plan second.

Talk through what you want before anything runs. MockingBird asks questions, reads your codebase, and proposes a step-by-step plan — no file gets touched during this stage, planning conversations are architecturally locked out of editing. When the plan looks right, one click turns it into a queue of Builder Mode steps.

MockingBirdMockingBird
MockingBird

Let's plan your build.

Tell me what you want to create.

Builder Mode
Discuss with AI

| Ref | Purpose |

|---|---|

`retryRef` | Holds the step id currently being retried
`pollTimer` | Interval driving `RunLoop.status` polling
`isRetrying` | Declared but **not actively used** in the current code

Step 1   Claude Sonnet 4.6DONE

Add a manual Retry button to the Builder Mode step card for failed steps

OUTPUT

Found StepCard.tsx— failed steps already store their error, just no action to retry. Adding a Retry button that re-invokes the step's original tool call.

FILE

src/components/StepCard.tsx

REVIEW

Clean on review.

7f3a1c9Revert
Step 2   Claude Sonnet 4.6PENDING

Wire the Retry button to re-run the failed step through the existing RunLoop queue instead of starting a new one

OUTPUT

Confirmed — RunLoopEngine.enqueueStep() already accepts a step id for re-runs. Wiring the button to call it directly.

One step at a time, not one giant diff.

Each step runs, applies its edit, and commits to git — before the next step starts. Every step self-reviews against what directly depends on it, so a change in step 2 doesn't silently break step 5. Assign different models to different steps: a fast model for boilerplate, a stronger one for the step that actually needs judgment.

Every step has a way out.

A failed step can be retried, skipped, or the whole build aborted — and any applied step can be reverted individually, without touching the ones before or after it. Reject a proposed edit mid-run and reprompt it, retry it, or dismiss it and move on.

5.0   workspace

A workspace, not just a chat window.

Commands, not menus.

/clear wipes the current chat, /model opens the model switcher, /workspace swaps context, /context shows exactly what's been injected into the system prompt, /help lists what's available. No hunting through settings mid-conversation.

MockingBirdMockingBird
MockingBird

Let's plan your build.

Tell me what you want to create.

/clearClear current chat
/modelOpen model switcher
/workspaceOpen workspace picker
/contextShow injected system context
/helpShow available commands
/
Your conversations

Refactor the auth middleware

MockingBird12m

New Chat

38m

Fix cart checkout race condition

Northwind1h

Add pin-to-workspace summarization

MockingBird3h

Debug map marker clustering

Northwind5h

New Chat

1d

Every conversation belongs to a workspace.

Reopen a past conversation and it's still scoped to the right project — the right files, the right context, nothing bleeding in from a different workspace you were in yesterday.

Save the decision, not the whole thread.

Pin a message and MockingBird summarizes it — under 40 words — then appends it to the workspace's running context. The next conversation in that workspace already knows what was decided, without you re-pasting it.

MockingBirdMockingBird

Add debounce to the map marker clustering so it doesn't recompute on every drag frame, only once the user stops panning.

Pinned to workspace: Debounce map marker clustering to run once panning stops, not every drag frame.

Northwindsaved

One context. Best models.
No more fragmented coding.