# Mysti puts two coding agents on opposite sides of an argument, and its provider count says twelve while its table lists eleven

> A VS Code extension that runs two of twelve supported coding assistants against the same problem under one of five collaboration strategies, with personas, inline routing by mention, and early exit on convergence. The extension activates in every window and again on seeing a rival tool's config file.

**DeepMyst/Mysti** — AI coding dream team of agents for VS Code. Claude Code + openai Codex collaborate in brainstorm mode, debate solutions, and synthesize the best approach for your code.

- Repository: https://github.com/DeepMyst/Mysti
- Website: https://www.deepmyst.com
- Stars: 1,139 · Forks: 55
- Language: TypeScript
- License: Apache-2.0
- Published: 2026-09-10 · Updated: 2026-09-10 · Language: en
- Canonical page: https://hysenlabs.com/projects/deepmyst-mysti

## The count says twelve providers and the selection table has eleven rows

The header advertises twelve providers and names them, and the release notes say the four most recent additions brought the total to twelve. The provider selection table underneath has eleven rows.

The one that disappears is the agent named in the header and in the count. It appears in the release notes as one of the six providers present before the latest version, and it appears in the comparison table's provider count. It does not appear in the table of what each provider is best for, and it does not appear in the later paragraph explaining why two assistants beat one, which names the other eleven.

So a reader counting rows in the selection table gets a different answer from a reader counting the headline, and the paragraph that is supposed to justify the whole feature enumerates the set without the missing one. Anyone planning a two-agent combination should check the settings panel rather than the page, since the page cannot be trusted on this point.

One more inconsistency in the same family: the manifest's keyword list includes a model provider that appears nowhere in the twelve, in the table, or in the release notes.

## The extension starts with the editor and watches for its rivals' config files

The manifest's activation list is longer than it needs to be and the first entry does most of the work. The extension is told to activate when startup finishes, with no condition at all. That means it loads in every VS Code window, whether or not you are working on a project it has anything to contribute to.

The remaining entries are all of the same kind: a list of filenames, each guarded on the workspace containing it. Six of them belong to other tools. There is a lowercase and an uppercase variant of one of them, and a lowercase and an uppercase variant of the extension's own file. So the list is a catalogue of the state files that a competing assistant might have left in your workspace, plus the two casings of its own, and the extension wakes up when it sees one.

The intent is reasonable: a tool that orchestrates other tools should start when those tools are present. The cost is that the unconditional entry makes all of it conditional on nothing, so the file watching is additive rather than the actual trigger. On a machine with several workspaces open you get several extension hosts, which is the usual cost of a startup activation.

## Five strategies, and each one is a named pair of roles

Brainstorm mode asks you to pick any two of the available agents from the settings panel, and then picks how they relate to each other. There are five strategies and the table gives each one a role pair and a use case.

The simplest is a direct synthesis, recommended for simple tasks and fast answers, where the two agents do not argue. Then there are three adversarial shapes: a critic against a defender for architecture decisions and trade-offs, a proposer against a challenger for security reviews and edge cases, and a risk analyst against an innovator for greenfield design and technology selection. The fifth is a facilitator against a refiner, recommended for complex problems where the goal is consensus rather than a decision.

That last distinction is the useful one. Three of the five are contests, one is a merge, and one is a moderated refinement. A security review and a technology selection want the same structure for opposite reasons: in one you want the objection to win, in the other you want the objection to be heard before it is dismissed.

The justification the page gives is blunt. The assistants have different training, different strengths and different blind spots, so two working together catch edge cases one would miss and synthesise a better answer than either. The comparison is a senior developer and a tech lead reviewing code, except the two discuss it first.

## Convergence is measured, and turning it on changes when the discussion ends

The discussion does not run to a fixed length. The extension tracks agreement between the agents and the stability of their positions, and when auto-convergence is enabled the exchange exits as soon as the two reach consensus.

Two details make that more than a turn counter. It tracks position stability as well as agreement, so an agent that says the same thing twice without moving is not counted as progress. And the feature is opt-in, so the default behaviour is to keep going, which is the right default if you cannot see why it stopped.

The release notes put convergence guards in the list of stability fixes, alongside silence based timeouts, authentication pre-checks, mention limits and retry cleanup. Read together, those are five different ways the two-agent exchange can fail to converge or can fail to terminate: one side goes quiet, one side is not authenticated, a mention does not resolve, a retry leaves debris, or the pair simply circles.

Eighteen fixes in that group, and two named bugs beside them: a process spawn error on Windows when auto shell mode was enabled, and a case where brainstorm ignored the configured path to the second assistant's binary.

## The version has not moved since March while the branch has moved since September

There are two releases and they are four weeks apart: 0.3.1 in February and 0.4.0 in March. The manifest declares 0.4.0, so the packaged version and the newest tag agree with each other.

The last commit is dated 2026-09-23, which is six months after the version tag. The page also leads with a section describing what is new in 0.4.0, so the most recent feature summary in the document is describing a March release while the repository itself has moved twice since.

That gap is the practical risk. A marketplace user gets 0.4.0, a clone gets whatever is on the default branch, and there is no tag in between to say which of them contains a fix. For an extension whose distinguishing feature is a fragile two-agent protocol with a convergence guard, the six months of unreleased work is exactly the part you would want tagged.

The engineering signals around it are healthy. Three hundred and sixty automated tests through a test runner with its own configuration, a changelog, a contributing guide, and a separate instructions file for another coding tool sitting in the root of the extension's own source.

## One provider reuses another's streaming protocol, and another hides four backends

Two of the newer integrations are described in enough detail to be useful, and both descriptions are about plumbing rather than capability.

The first says the coding assistant from that vendor uses the same streaming protocol as the assistant this extension already integrated, which is what makes the integration seamless rather than a second adapter. The same entry notes that it supports a particular model generation and three approval modes, one of which is named as if it were a hazard.

The second is described as a multi-backend agent reaching four model vendors through a single command line tool, using whatever default model you have configured. The page's framing is that this is the no lock-in option among the cloud providers.

Both entries are honest about being adapters. The consequence is the same for a user: the streaming protocol and the approval modes of one tool are inherited from another tool's implementation, and a multi-backend provider is only provider-neutral as far as the tool in front of it supports.

The local pair is sold differently. Two local inference servers are presented as needing no cloud subscription, with the claims of full privacy, zero latency and complete control. Zero latency is a property of local inference in general rather than of this extension.

## The action section describes two screenshots that are not in the page

There is a section for showing the editor in use, and it contains two paragraphs of caption text describing what the pictures show: a chat interface with syntax highlighting, markdown support and diagram rendering, and a task list with progress tracking.

Neither picture is there. Each caption sits in an empty centred container, so the rendered page shows the description of a screenshot with no screenshot. The same pattern runs through the rest of the document, where several decorative blocks are empty and the provider section has a gap where a grid of logos would be.

For a marketplace listing this matters more than for a readme, because the gallery banner and icon are declared in the manifest but the in-page demonstration is described rather than shown. A reader who wants to know whether the chat surface supports diagrams is told it does and then shown nothing.

The document also ends mid-table. The section on choosing which two agents collaborate opens its combination table, and the file stops after the header row of that table. So the guidance that would tell you which pairing to use for which situation is the one piece of the page that is not written.

## A Nix flake and three build configurations sit in a marketplace extension

The top level is longer than a typical extension. Besides the manifest, the lock file and the readme translations, there is a configuration file for the editor's own development, an ignore file for packaging, a changelog, a contributing guide, a code of conduct by omission, a language configuration file, and a build configuration for a bundler alongside a TypeScript configuration and a test runner configuration.

Two entries are unusual. A Nix flake and its lock file sit in the root, which is a reproducible shell definition for developing against pinned tool versions. For an extension that spawns external command line tools on the user's machine, pinning the toolchain is defensible, and it is the kind of thing a package repository would normally hold rather than an application.

The second is an instructions file for a different coding tool, in the same repository whose extension activates when it sees that tool's config file. The extension is simultaneously documenting itself for the tool it integrates and shipping a file that tool looks for.

The readme set is the other thing worth counting. Eleven language versions are listed in the header and all eleven files are at the root, which is a real translation effort and one that has to be repeated for every release.

Installation itself is the marketplace and one command. The page tells you to open the editor's command palette and paste the extension install line:

```
ext install DeepMyst.mysti
```

## Conclusion

Use it if you want a second opinion inside the editor rather than a second tab, and if you already pay for two different assistants, since the premise is that two different tools have different blind spots. The five strategies are worth reading even if you never install it, because naming the role pair for each one is a reusable way to structure a disagreement. Three things to check. The provider list is inconsistent across the page, so verify a tool is actually selectable before designing a workflow around it. The newest tagged version is from March while the branch has moved since September, so the marketplace build and the repository head are not the same thing. And the extension activates at editor startup, so budget for that before adding it to a machine with a large workspace.

## FAQ

### How many AI providers does Mysti support?

The page says twelve in the header, the release notes and the comparison table, while the provider selection table has eleven rows, and the agent that is missing from that table is also absent from the paragraph listing the assistants.

### What are the five brainstorm collaboration strategies in Mysti?

A direct synthesis for simple tasks, a critic against a defender for architecture decisions, a proposer against a challenger for security reviews, a risk analyst against an innovator for greenfield design, and a facilitator against a refiner for reaching consensus.

### What does auto-convergence do in Mysti brainstorm mode?

It ends the discussion early once the agents agree and their positions stop moving. It is opt-in, and the release notes list convergence guards among the stability fixes for the brainstorm mode.

### When does the Mysti extension activate in VS Code?

On editor startup with no condition, and also when the workspace contains one of a list of config filenames belonging to other coding tools or to Mysti itself, in both lowercase and uppercase variants for two of them.

### How do I install the Mysti VS Code extension?

Open the command palette with Ctrl+P, or Cmd+P on a Mac, and run the extension install command for the publisher and extension name, or install it from the marketplace listing.

## Sources

- [DeepMyst/Mysti on GitHub](https://github.com/DeepMyst/Mysti)
- [License: Apache-2.0](https://github.com/DeepMyst/Mysti/blob/main/LICENSE)
- [Project website](https://www.deepmyst.com)
- [README](https://github.com/DeepMyst/Mysti/blob/main/README.md)
- [Releases](https://github.com/DeepMyst/Mysti/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/deepmyst-mysti
