Skip to main content

Claude Max API Proxy

claude-max-api-proxy is a community tool that exposes your Claude Max/Pro subscription as a local OpenAI-compatible API endpoint. This lets you point WednesdayAI (and other OpenAI-compatible tools) at your subscription instead of an API key.
This is a community tool, not officially supported by Anthropic or WednesdayAI. Anthropic has previously blocked some subscription usage outside Claude Code. Review Anthropic’s current terms before relying on this path in production.

How it works

WednesdayAI → claude-max-api-proxy → Claude Code CLI → Anthropic (via your subscription)
 (OpenAI format)    (converts format)                    (uses your login)
The proxy accepts OpenAI-format requests at http://localhost:3456/v1/chat/completions, converts them to Claude Code CLI commands, and returns responses in OpenAI format (streaming supported).

Prerequisites

  • Node.js 20+
  • Claude Code CLI authenticated with a Claude Max or Pro subscription
  • claude-max-api-proxy npm package

Quick setup

1. Install the proxy

npm install -g claude-max-api-proxy

2. Verify Claude CLI authentication

claude --version

3. Start the proxy server

claude-max-api
# Runs at http://localhost:3456

4. Test it

curl http://localhost:3456/health
curl http://localhost:3456/v1/models

5. Configure WednesdayAI

Point WednesdayAI at the local proxy as a custom OpenAI-compatible endpoint:
{
  env: {
    OPENAI_API_KEY: "not-needed",
    OPENAI_BASE_URL: "http://localhost:3456/v1",
  },
  agents: {
    defaults: {
      model: { primary: "openai/claude-opus-4" },
    },
  },
}

Available models

Model IDMaps to
claude-opus-4Claude Opus 4
claude-sonnet-4Claude Sonnet 4
claude-haiku-4Claude Haiku 4

Cost comparison

ApproachCostBest for
Anthropic APIPay per tokenProduction, high volume
Claude Max subscription + proxy$200/month flatPersonal use, development

Auto-start on macOS

Create a LaunchAgent to run the proxy automatically:
cat > ~/Library/LaunchAgents/com.claude-max-api.plist << 'EOF'
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Label</key>
  <string>com.claude-max-api</string>
  <key>RunAtLoad</key>
  <true/>
  <key>KeepAlive</key>
  <true/>
  <key>ProgramArguments</key>
  <array>
    <string>/usr/local/bin/node</string>
    <string>/usr/local/lib/node_modules/claude-max-api-proxy/dist/server/standalone.js</string>
  </array>
  <key>EnvironmentVariables</key>
  <dict>
    <key>PATH</key>
    <string>/usr/local/bin:/opt/homebrew/bin:~/.local/bin:/usr/bin:/bin</string>
  </dict>
</dict>
</plist>
EOF

launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.claude-max-api.plist