tandem
v0.8.4Bidirectional 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.
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
claude plugin marketplace add IchenDEV/agent-plugin-mkt
claude plugin marketplace update agent-plugin-marketplace
claude plugin install tandem-2@agent-plugin-marketplacePaste 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/tandemClone 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
├── .claude-plugin/plugin.json└── .mcp.json
MCP servers2
- 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}
- 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
{
"$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"
}For maintainers
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)