Agent Plugins Marketplace
All plugins

tandem

v0.8.4

Bidirectional bridge between Claude Code and Codex (ChatGPT): code review, adversarial review, task delegation, background jobs, models consulting each other, and image generation via Codex's built-in tool. Runs on your existing ChatGPT subscription, no API keys.

Claude Code2 MCP serversstdio

By VlDubrLicense: MIT1 GitHub starsUpdated 2 weeks ago

Directory evidence

Runtimes
Claude Code
Parsed components
2 skill or MCP entries
Source updated
Sep 6, 2026
Manifest status
Canonical path parsed

The directory validates manifest shape and source location. It does not execute the plugin or provide a security endorsement. Review the indexing methodology

Install tandem for Claude Code

Installs for the current user
claude plugin marketplace add IchenDEV/agent-plugin-mkt
claude plugin marketplace update agent-plugin-marketplace
claude plugin install tandem-2@agent-plugin-marketplace

Paste and run these commands in a terminal with Claude Code. They add and refresh the PluginsMP catalog, then install this plugin.

The installer fetches third-party code from the source repository shown on this page. This directory validates manifest structure and source location, but does not perform a security audit; review the manifest, components, and source before installing.

Get the source manually
git clone https://github.com/VlDubr/tandem

Clone the source repository, then follow its setup instructions to add the plugin to a compatible client. The repository root is the plugin root.

Plugin files

tandem/
├── .claude-plugin/plugin.json
└── .mcp.json

MCP servers2

codexstdio
command
node
args
${CLAUDE_PLUGIN_ROOT}/scripts/mcp-codex.mjs
env.TANDEM_REVIEW_BACKEND
${user_config.review_backend}
env.TANDEM_LANG
${user_config.language}
env.TANDEM_MODEL
${user_config.default_model}
env.TANDEM_EFFORT
${user_config.default_effort}
env.TANDEM_REASONING_SUMMARY
${user_config.reasoning_summary}
env.TANDEM_JOB_TIMEOUT_MIN
${user_config.job_timeout_minutes}
env.TANDEM_MAX_PARALLEL_JOBS
${user_config.max_parallel_jobs}
env.TANDEM_BYPASS_SANDBOX
${user_config.bypass_sandbox}
env.TANDEM_PROGRESS
${user_config.progress_notifications}
imagestdio
command
node
args
${CLAUDE_PLUGIN_ROOT}/scripts/mcp-image.mjs
env.TANDEM_LANG
${user_config.language}
env.TANDEM_IMAGE_DIR
${user_config.image_output_dir}
env.TANDEM_IMAGE_TIMEOUT_MIN
${user_config.image_timeout_minutes}
env.TANDEM_BYPASS_SANDBOX
${user_config.bypass_sandbox}
env.TANDEM_PROGRESS
${user_config.progress_notifications}

MCP configuration uses runtime-provided plugin path placeholders such as ${PLUGIN_ROOT} or ${CLAUDE_PLUGIN_ROOT}. Review the manifest for the runtime-specific expansion rules.

Plugin manifests1

.claude-plugin/plugin.json
{
  "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json",
  "name": "tandem",
  "displayName": "Tandem",
  "version": "0.8.4",
  "description": "Bidirectional bridge between Claude Code and Codex (ChatGPT): code review, adversarial review, task delegation, background jobs, models consulting each other, and image generation via Codex's built-in tool. Runs on your existing ChatGPT subscription, no API keys.",
  "author": {
    "name": "VlDubr",
    "url": "https://github.com/VlDubr"
  },
  "license": "MIT",
  "keywords": [
    "claude",
    "claude-code",
    "claude-code-plugin",
    "anthropic",
    "codex",
    "openai-codex",
    "chatgpt",
    "gpt",
    "mcp",
    "code-review",
    "debate",
    "multi-model",
    "delegation",
    "ai-agents",
    "image-generation",
    "gpt-image-2"
  ],
  "defaultEnabled": false,
  "userConfig": {
    "review_backend": {
      "type": "string",
      "title": "Code review backend",
      "description": "exec (default) uses the established codex exec review path. app-server explicitly enables Codex's native review/start reviewer; it falls back to exec only if review/start was not accepted.",
      "default": "exec",
      "required": false
    },
    "language": {
      "type": "string",
      "title": "Language of descriptions, messages and prompts",
      "description": "en — English (default), ru — Russian. Prompts are sent to the invoked model in the selected language, so its answers follow it as well. Commands and agents are always in English.",
      "default": "en",
      "required": false
    },
    "default_model": {
      "type": "string",
      "title": "Default Codex model",
      "description": "For example gpt-5.6-sol, gpt-5.4-mini, gpt-5.3-codex-spark. Empty means Codex's own default.",
      "required": false
    },
    "default_effort": {
      "type": "string",
      "title": "Default reasoning effort",
      "description": "Reasoning level. The available set depends on the model — /tandem:models shows the exact list. Only earlier-generation models accept minimal; gpt-5.6 and newer reject it.",
      "required": false
    },
    "reasoning_summary": {
      "type": "string",
      "title": "Reasoning summaries",
      "description": "auto — Codex decides (there may be no summaries at all), detailed — verbose summaries in the progress trail. The model's full reasoning is unavailable at any value.",
      "required": false
    },
    "progress_notifications": {
      "type": "boolean",
      "title": "Show progress during a call",
      "description": "Codex's action trail is sent to the client as notifications/progress. Turn this off if your Claude Code build is affected by anthropics/claude-code#47378: there, receiving such notifications closes the MCP server connection and the next call fails with \"Connection closed\".",
      "default": true,
      "required": false
    },
    "max_parallel_jobs": {
      "type": "number",
      "title": "Limit of concurrent Codex jobs",
      "description": "How many jobs may run at once. Each one is a separate Codex process consuming ChatGPT quota and memory. Zero removes the limit.",
      "default": 4,
      "min": 0,
      "max": 32
    },
    "job_timeout_minutes": {
      "type": "number",
      "title": "Background job timeout (min)",
      "description": "After this time the job is marked as timeout and the process is killed.",
      "default": 30,
      "min": 1,
      "max": 480
    },
    "image_output_dir": {
      "type": "string",
      "title": "Directory for images",
      "description": "Where to put generated files, relative to the project root.",
      "default": "assets/generated",
      "required": false
    },
    "image_timeout_minutes": {
      "type": "number",
      "title": "Image generation timeout (min)",
      "description": "Codex's built-in tool usually answers within 4–6 minutes, longer at 4K.",
      "default": 15,
      "min": 2,
      "max": 60
    },
    "bypass_sandbox": {
      "type": "boolean",
      "title": "Bypass the Codex sandbox (emergency mode)",
      "description": "Enable only if the Codex sandbox is broken by a version mismatch and /tandem:setup confirms it. Codex will then run commands without isolation. The proper fix is to reinstall Codex.",
      "default": false,
      "required": false
    }
  },
  "homepage": "https://github.com/VlDubr/tandem",
  "repository": "https://github.com/VlDubr/tandem"
}

If you maintain this plugin, link to this source-backed listing from your README so users can review its manifest and indexed components.

[tandem on Agent Plugins Marketplace](https://pluginsmp.com/plugins/tandem-2)