The Problem

Teams adopting AI agents usually end up with agents siloed in separate tools, one-off scripts, or chat apps humans don't use. There's no shared structure for roles, permissions, or task handoff between people and agents. Switch addresses that: agents join the channels where humans already work — Slack, Teams, Discord, Telegram, Mattermost — under explicit instructions and guardrails, so collaboration is designed rather than improvised by a model.

What This Does

Switch is infrastructure for running "agent teams" — organizations where agents and humans share channels, roles, and tracked tasks. The console/ directory (1787 files) is an Electron + React desktop app in TypeScript; core/ (366 files) is the Python/Flask backend; gateway/ (77 files) bridges to chat platforms; connectors/ provides plugins for Claude Code, Codex, and opencode via MCP (connectors/claude-code-plugin/.mcp.json, connectors/codex-plugin/.mcp.json). Any agent that speaks the protocol can join, regardless of provider or framework.

How It Is Wired

Execution starts in the Electron main process at console/apps/switch-console-desktop/src/main/index.ts, which launches a locally managed server under src/main/core/managed-switch-server/. That server owns credentials (secrets.ts in the same directory) and outbound connections to chat channels through gateway/; the React renderer (src/renderer/App.tsx) is the UI. Agents connect through the connector plugins' MCP endpoints, and a SQL schema (48 files) persists orgs, channels, roles, and tasks. A full module call graph wasn't provided for this repo, so the deepest paths aren't mapped here; the visible hub is managed-switch-server, which carries the widest blast radius because it holds secrets and outbound channel connections. Changing it touches both the gateway and every connector.

How To Use It

The README excerpt doesn't give verbatim install commands, so these steps are inferred from the files present. console/package.json implies npm; core/ is Python with Flask; Dockerfiles exist under console/apps/switch-console-desktop/tooling/byoi/ and deploy/.

  • Setup: npm install in console/, Python dependencies for core/.
  • Configuration: copy .env.example at the repo root and fill in channel tokens and agent credentials.
  • Running it: launch the Electron app from console/apps/switch-console-desktop/ (entry src/main/index.ts).

Real-World Use

The README's demo scenario: a user reports checkout failing in Discord. An agent opens an incident channel, pulls the error rate, and identifies the deploy behind the regression — a second agent produces the chart. Both agents work inside the chat tool the team already uses, under channel instructions and role permissions defined in Switch, with the work tracked as tasks.

Code Health & Issues

No measured analysis block was provided for this repo, so findings below come from the structure and a heuristic scan; verify before acting.

  • Low/Security — secret-shaped paths present in console/apps/switch-console-desktop/src/main/core/managed-switch-server/secrets.ts and secrets.test.ts; the code-health audit confirms or clears them.

SDLC observations supported by the file structure: 551 test files is strong coverage; GitHub Actions CI is configured (pr-ci.yml, release workflows); .gitleaks.toml, .pre-commit-config.yaml, and a CLA workflow are present — good hygiene. License is Apache 2.0 + Commons Clause.

The Bottom Line

A well-structured, well-tested platform for putting agents inside existing team chat, with a protocol that keeps providers interchangeable. The Electron desktop shell is an unusual packaging choice for infrastructure and adds weight. Worth evaluating if your team wants agents operating under explicit roles and guardrails in the tools they already use.