Labsco
sena-labs logo

OzBridge

1

from sena-labs

Standalone MCP server bringing Warp™ Oz™ agents to Claude Code, Cursor, Codex and any MCP client — no VS Code required. Independent project, not affiliated with, endorsed by, or sponsored by Warp.

🔥🔥🔥✓ VerifiedFreeAdvanced setup

OzBridge — Warp Oz for any IDE or agent, via MCP

Independent extension — not affiliated with, endorsed by, or sponsored by Warp, Inc. Warp™ and Oz™ are trademarks of Warp, Inc., used here nominatively only to describe interoperability. OzBridge uses solely Warp's documented public interfaces (the oz CLI, the Model Context Protocol, and the WARP_OUTPUT_FORMAT env var); it does not modify, reverse-engineer, or compete with Warp. See DISCLAIMER.

OzBridge brings Warp Oz to any IDE or agent that speaks the Model Context Protocol (MCP). Run it embedded in VS Code — where Oz shows up natively as the @oz Chat Participant and as Agent-Native Language Model Tools that Copilot Agent mode invokes autonomously — or expose the same Oz toolset over HTTP+SSE so Claude Code, Cursor and Codex drive Oz too. No editor at all? Ship the standalone @sena-labs/oz-mcp-server and point any MCP client at it.

OzBridge screenshot

Runs & Resources

OzBridge sidebar with active runs, history and schedules

Warp Drive

Warp Drive prompt and skills preview inside VS Code

MCP bridge

Embedded MCP bridge status with registered clients

Dashboard

OzBridge dashboard with analytics and failure triage


Table of Contents


Features

  • MCP bridge — Warp Oz for any client — expose the Oz toolset as a Model Context Protocol server over HTTP+SSE so Claude Code, Cursor and Codex drive Oz through the same tools Copilot sees. Run it embedded in VS Code (opt-in) or fully standalone via @sena-labs/oz-mcp-server. See docs/MCP.md.
  • @oz Chat Participant — interact with Warp Oz agents from the VS Code chat panel.
  • Agent-Native Language Model Tools — Copilot Agent mode can invoke Warp Oz directly, without typing @oz.
  • One-click model selection — pick the Oz model from a QuickPick (OzBridge: Select Model), the $(sparkle) status-bar indicator, or @oz /models <id> — no hand-typing an id into settings. Agents switch it via the MCP tools oz_list_models / oz_set_default_model.
  • Warp sidebar + status bar — Activity Bar view with Active Runs, History, Schedules, Environments, MCP Servers and Secrets, plus a $(cloud) Warp: N active indicator and a $(sparkle) <model> model indicator (click to switch).
  • Context variables & Warp handoff — inline #warp.env, #warp.profile, #warp.model, #oz.history and #oz.run/<id> tokens expanded into any /run or /cloud prompt, plus a one-click handoff to an actual Warp terminal.
  • Per-workspace config — optional .warp/warp-bridge.yaml committed to the repo overrides ozBridge.* settings for everyone who opens the project. Precedence: YAML > VS Code settings > defaults. Secrets like mcpBearerToken and platform-specific ozPath are deliberately excluded.
  • 9 slash commands covering the full agent workflow: /run, /cloud, /status, /history, /schedule, /models, /mcp, /config, /init.
  • IDE context injection — automatically includes workspace path, active file, selection and diagnostics in every prompt.
  • Agent skill detection — maps prompt keywords to the 7-agent pipeline (spec, design, implement, review, test, deploy, maintenance).
  • Cloud run polling — exponential-backoff polling with real-time progress updates in the chat stream.
  • Robust JSON parser — 5-level fallback for mixed text/JSON CLI output.
  • Configurable — every setting is exposed via the VS Code Settings UI under ozBridge.*.
  • Minimal runtime footprint — one bundled workspace package (copilot-chat-toolkit) plus the vscode API; no third-party network code. Production bundle ~160 KB.

Architecture

The extension follows a layered architecture with dependency injection at the composition root (src/extension.ts). Each layer has a single responsibility:

LayerFilesResponsibility
Typestypes/index.tsInterfaces, error classes, config shape, constants
Parsersparsers/jsonParser.ts, parsers/outputFormatter.tsJSON parsing (5-level), chat stream rendering
Servicesservices/ozCliService.ts, configManager.ts, contextCollector.ts, runPoller.ts, logger.tsCLI execution, settings, IDE context, polling, logging
Commandscommands/router.ts + 9 command filesSlash-command dispatch and business logic
Toolstools/*VS Code Language Model Tool implementations
Participantparticipant/handler.ts, followups.tsChat Participant registration and follow-ups

Folder structure

src/
├── types/index.ts          — Contracts: interfaces, errors, config
├── parsers/
│   ├── jsonParser.ts       — Robust 5-level JSON parser
│   └── outputFormatter.ts  — Chat stream formatting & truncation
├── services/
│   ├── configManager.ts    — VS Code settings wrapper with caching
│   ├── contextCollector.ts — IDE context gathering
│   ├── ozCliService.ts     — Core CLI execution via child_process
│   ├── runPoller.ts        — Async polling with exponential backoff
│   └── logger.ts           — Centralised extension logging
├── commands/
│   ├── router.ts           — Slash-command dispatch
│   └── {9 command files}   — One handler per /command
├── tools/
│   ├── baseTool.ts         — Shared helpers (textResult, errorResult)
│   ├── runLocalTool.ts     — oz_run_local
│   ├── runCloudTool.ts     — oz_run_cloud (with confirmation)
│   ├── getRunTool.ts       — oz_get_run
│   ├── listRunsTool.ts     — oz_list_runs
│   └── index.ts            — registerWarpTools()
├── participant/
│   ├── handler.ts          — Chat Participant registration
│   └── followups.ts        — Contextual follow-up suggestions
└── extension.ts            — Entry point: compose & register

Data flow

  1. User types @oz /run implement auth in Copilot Chat.
  2. VS Code dispatches the request to the @oz Chat Participant.
  3. CommandRouter maps /run to the createRunCommand handler.
  4. Handler calls ContextCollector.gather() for IDE context.
  5. Handler calls OzCliService.agentRun(), which spawns oz as a child process.
  6. JSON output is parsed via the 5-level jsonParser.
  7. OutputFormatter renders the result as markdown in the chat stream.

Development

# Install dependencies
npm install

# Type-check
npm run compile

# Build (esbuild)
npm run build

# Run tests
npm test

# Tests with coverage report
npm run test:coverage

# Watch mode (dev)
npm run watch

# Clean build artifacts
npm run clean

# Package VSIX for distribution
npm run package

Test Suite

  • 1,400+ tests across 100+ files
  • High test-to-code ratio
  • Framework: Vitest v4.0.18

Disclaimer

OzBridge is an independent project developed by Ivan Sena under the Sena Labs name. It is not affiliated with, endorsed by, sponsored by, or officially associated with Warp, Inc., Microsoft, GitHub, or Visual Studio Code.

Warp™ and Oz™ are trademarks of Warp, Inc.; other names may be trademarks of their respective owners. They are used here nominatively only to describe interoperability. OzBridge uses solely Warp's documented public interfaces (the oz CLI, the Model Context Protocol, and WARP_OUTPUT_FORMAT); it does not modify, reverse-engineer, or compete with Warp.

This extension is provided "as is", without warranty of any kind. Use it at your own risk. See DISCLAIMER.md for details.