by ianjwhite99
OpenCode plugin to use your Claude Max/Pro subscription with OpenCode via Meridian
# Add to your Claude Code skills
git clone https://github.com/ianjwhite99/opencode-with-claudeGuides for using ai agents skills like opencode-with-claude.
Last scanned: 5/30/2026
{
"issues": [],
"status": "PASSED",
"scannedAt": "2026-05-30T15:13:29.013Z",
"npmAuditRan": true,
"pipAuditRan": true
}See how opencode-with-claude compares with popular alternatives.
opencode-with-claude is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by ianjwhite99. OpenCode plugin to use your Claude Max/Pro subscription with OpenCode via Meridian. It has 612 GitHub stars.
Yes. opencode-with-claude passed SkillsLLM's automated security scan — a dependency vulnerability audit plus prompt-injection heuristics — with no high-severity issues. You can read the full report in the Security Report section on this page.
Clone the repository with "git clone https://github.com/ianjwhite99/opencode-with-claude" and add it to your Claude Code skills directory (see the Installation section above).
opencode-with-claude is primarily written in JavaScript. It is open-source under ianjwhite99 on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh opencode-with-claude against similar tools.
No comments yet. Be the first to share your thoughts!
30 days in the Featured rail · terms & refunds
⚠️ Third-Party Software Notice
This skill is third-party open-source software developed and hosted independently on GitHub. SkillsLLM is an informational directory and does not control or maintain the underlying repository.
Any security checks, ratings, or warnings displayed by SkillsLLM are automated and limited in scope. They do not constitute a security certification or guarantee that the software is safe, error-free, or free from malicious code, vulnerabilities, compromised dependencies, or prompt-injection risks.
Review the source code, permissions, dependencies, and configuration before installing or running any third-party skill. Use is at your own risk. To the maximum extent permitted by applicable law, SkillsLLM is not liable for losses arising from third-party software.
Automated security scan — not a certification.
Use OpenCode with your Claude Max subscription.
An OpenCode plugin that runs Meridian (formerly opencode-claude-max-proxy) for you: start OpenCode once and the proxy comes up with it; quit OpenCode and the proxy stops. No separate proxy CLI or Docker container to manage.
Works with both OpenCode generations: the 1.x line (opencode) and OpenCode 2 (@opencode/cli), from the same package.
Compared to running the proxy yourself:
┌─────────────┐ ┌────────────────────┐ ┌─────────────────┐
│ OpenCode │─────────────▶│ Claude Max Proxy │──────▶│ Anthropic │
│ (TUI/Web) │ :3456 / auto │ (local server) │ SDK │ Claude Max │
│ │◀─────────────│ │◀──────│ │
└─────────────┘ └────────────────────┘ └─────────────────┘
The plugin hooks into OpenCode's plugin system. When OpenCode launches, it starts the proxy, configures the Anthropic provider, and cleans everything up on exit.
1. Install the plugin
With npm:
npm install -g opencode-with-claude
Or with Homebrew (macOS/Linux), which keeps the plugin
updated through brew upgrade instead of npm update -g:
brew install ianjwhite99/tap/opencode-with-claude
2. Authenticate with Claude (one-time)
npm install -g @anthropic-ai/claude-code # or: brew install --cask claude-code
claude auth login
3. Add to your opencode.json
Global (~/.config/opencode/opencode.json) or project-level. The keys differ
between OpenCode generations; a block written for the other generation is
silently ignored, so make sure you use the right one.
OpenCode 1.x:
{
"$schema": "https://opencode.ai/config.json",
"plugin": ["opencode-with-claude"],
"provider": {
"anthropic": {
"options": {
"baseURL": "http://127.0.0.1:3456",
"apiKey": "dummy"
}
}
}
}
OpenCode 2 (plugins and providers.<id>.settings instead of plugin and
provider.<id>.options):
{
"$schema": "https://opencode.ai/config.json",
"plugins": ["opencode-with-claude"],
"providers": {
"anthropic": {
"settings": {
"baseURL": "http://127.0.0.1:3456/v1",
"apiKey": "dummy"
}
}
}
}
In both examples, the configured baseURL is only a placeholder. The plugin
uses the port its own proxy actually got, so several OpenCode instances can
run side by side:
config hook replaces
provider.anthropic.options.baseURL with the proxy origin, without /v1.model.request hook replaces the entire request
baseURL with the proxy origin plus /v1 for Anthropic requests. It does
not append /v1 to providers.anthropic.settings.baseURL or preserve its
configured path.For OpenCode 2 requests that pass through this plugin's model.request hook,
http://127.0.0.1:3456 and http://127.0.0.1:3456/v1 are equivalent
placeholders; the configured /v1 suffix is not required. The example
keeps /v1 to match OpenCode 2's Anthropic endpoint format: its transport
uses a custom base URL as-is and adds /messages, not /v1/messages.
This equivalence depends on the hook running; it does not apply to calls
that bypass the hook or when the plugin is not loaded.
If you installed with Homebrew, point the plugin entry at the installed
file instead of the package name (the path is stable across upgrades, and
brew info opencode-with-claude prints it):
"plugin": ["file:///opt/homebrew/opt/opencode-with-claude/libexec/lib/node_modules/opencode-with-claude/dist/index.js"]
("plugins": [...] on OpenCode 2.) On Linux or Intel macOS replace
/opt/homebrew with your Homebrew prefix (brew --prefix, usually
/home/linuxbrew/.linuxbrew or /usr/local).
4. Run OpenCode
opencode
brew upgrade opencode-with-claude. The release workflow
bumps the formula in ianjwhite99/homebrew-tap
after every npm publish, so brew update && brew upgrade tracks new releases.npm update -g opencode-with-claude. Note that OpenCode caches
plugins it installs by package name; if a new version is not picked up,
clear ~/.cache/opencode/node_modules/opencode-with-claude and restart.The plugin now reads the same Meridian configuration files the meridian CLI
uses, so you can maintain multiple Claude accounts and tune SDK behavior
without leaving OpenCode.
~/.config/meridian/profiles.json)Define one or more named profiles (for example, a personal Claude Max account, a work account, or an OAuth-token profile). The plugin forwards them to Meridian at startup.
[
{
"id": "personal",
"claudeConfigDir": "/Users/me/.config/meridian/profiles/personal"
},
{
"id": "work",
"claudeConfigDir": "/Users/me/.config/meridian/profiles/work"
},
{
"id": "headless",
"type": "oauth-token",
"oauthToken": "<token from claude setup-token>"
}
]
~/.config/meridian/settings.json){ "activeProfile": "work" }
activeProfile selects the default profile for any request that does not send
an explicit x-meridian-profile header. If the saved id is not in
profiles.json (or the file is missing), the plugin logs a warning and falls
back to the first configured profile.
~/.config/meridian/sdk-features.json)Meridian reads this file lazily on every request, so overrides take effect without restarting the proxy. The plugin does not need to do anything special for it to work — just edit the file and the next request picks it up. See Meridian's documentation for the full list of adapter keys.
This plugin does not edit Meridian's SDK feature file. When Meridian's default
client prompt pass-through is enabled, the plugin scrubs OpenCode-identifying
prompt fingerprints with @rynfar/meridian-plugin-opencode-scrub before
forwarding. User context such as AGENTS.md and configured instructions is
preserved, while cwd is forwarded to Meridian through the process environment.
{
"opencode": {
"memory": true,
"thinking": "enabled",
"maxBudgetUsd": 0.5
}
}
For parity with the meridian CLI:
MERIDIAN_PROFILES — JSON array of profile objects; wins over profiles.json.MERIDIAN_DEFAULT_PROFILE — profile id; wins over settings.activeProfile.MERIDIAN_PATH — run your own Meridian build instead of the bundled one
(see Using your own Meridian build).Malformed or missing files never crash the plugin; all parse/IO failures are logged via OpenCode's plugin log and the plugin falls back to no-profile mode.
Each plugin release pins one exact @rynfar/meridian version, and Meridian
ships faster than this plugin does. Set MERIDIAN_PATH to follow Meridian's
releases without waiting for a plugin release:
npm install -g @rynfar/meridian
MERIDIAN_PATH="$(npm root -g)" opencode
MERIDIAN_PATH accepts any of:
.../node_modules/@rynfar/meridian@rynfar/meridian from — a global
node_modules, or a project that depends on it.../@rynfar/meridian/dist/server.jsAuth, profiles, and the session cache already live on disk
(~/.config/meridian, ~/.cache/meridian), so an external build shares all of
them with the meridian CLI; only the code version changes.
The bundled copy stays the fallback. A path that does not exist, is not a
Meridian install, or exposes no startProxyServer logs a warning and changes
nothing else. Either way the plugin logs which build it is running, so a bug
report can name it:
meridian 1.79.0 (bundled)
meridian 1.80.0 (external: /opt/homebrew/lib/node_modules/@rynfar/meridian)
A swapped build has to keep the surface the plugin uses: startProxyServer
returning { server, config.port, close() }, and a /health response carrying
status, error, version, and auth.{daysUntilRenewal,renewalRequiredSoon}.
Profile switching through Meridian's HTTP API continues to work — call
POST /profiles/active on the proxy URL the plugin prints at startup. The
selection is persisted back to settings.json and survives restarts.
npm install -g @anthropic-ai/claude-code
claude auth login
# or (depends of your version)
claude login
This opens a browser for OAuth. Your Claude Max subscription credentials are needed.
claude auth statuslsof -i :$CLAUDE_PROXY_PORT