Назад към всички

setup-embedded

// Embed claude-sub-proxy as an internal service within another project. Minimal footprint — 4 JS files + config, running on localhost with no external exposure.

$ git log --oneline --stat
stars:3
forks:1
updated:March 2, 2026
SKILL.mdreadonly

Skill: setup-embedded

Description

Embed claude-sub-proxy as an internal service within another project. Minimal footprint — 4 JS files + config, running on localhost with no external exposure.

Trigger

Trigger this skill when the user wants to:

  • Embed the proxy inside another project
  • Use claude-sub-proxy as a library/internal service
  • Add Claude API access to an existing app without a separate server
  • "Integrate claude-sub-proxy into my project"

Setup Guide

Step 1: Verify Claude Code CLI

Check that credentials exist:

cat ~/.claude/.credentials.json
# Should contain claudeAiOauth.accessToken

If not authenticated, run claude to log in.

Step 2: Choose Integration Method

Option A — Copy source files (recommended):

# From the claude-sub-proxy repo, copy these files into your project:
mkdir -p your-project/claude-proxy
cp src/server.js src/claude-executor.js src/format-bridge.js src/logger.js src/config.txt your-project/claude-proxy/

Option B — Git submodule:

git submodule add <repo-url> claude-proxy

Step 3: Install Dependency

npm install @anthropic-ai/claude-agent-sdk

Step 4: Configure via Environment Variables

For embedded use, set these environment variables in your app's startup:

VariableRecommended ValueDescription
CSP_PORT42069 (or any free port)Proxy listening port
CSP_HOST127.0.0.1Localhost only — no external exposure
CSP_LOG_LEVELWARNQuiet logging for embedded use

No CSP_PROXY_API_KEY needed — the proxy runs on localhost as an internal service.

Step 5: Start the Proxy

Option A — Background process in your start script:

// package.json
{
  "scripts": {
    "start": "concurrently \"node claude-proxy/server.js\" \"your-app-start-command\""
  }
}
npm install concurrently --save-dev

Option B — Programmatic start:

import { startServer } from './claude-proxy/server.js';
startServer();

Option C — PM2:

pm2 start claude-proxy/server.js --name claude-proxy

Step 6: Connect from Your App

Node.js:

const response = await fetch('http://127.0.0.1:42069/v1/messages', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    model: 'claude-sonnet-4-6',
    max_tokens: 1024,
    messages: [{ role: 'user', content: 'Hello!' }]
  })
});
const data = await response.json();

Python:

import anthropic

client = anthropic.Anthropic(
    base_url="http://127.0.0.1:42069",
    api_key="not-needed"
)

message = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Hello!"}]
)

curl:

curl -X POST http://127.0.0.1:42069/v1/messages \
  -H "Content-Type: application/json" \
  -d '{"model":"claude-sonnet-4-6","max_tokens":256,"messages":[{"role":"user","content":"Hello"}]}'

Step 7: Verify

# Health check
curl -s http://127.0.0.1:42069/health
# → {"status":"ok","server":"claude-sub-proxy","timestamp":...}

# Auth check
curl -s http://127.0.0.1:42069/auth/status
# → {"authenticated":true,"source":"claude_credentials","expires_at":"..."}

Key Points

  • Localhost only — default CSP_HOST=127.0.0.1, no external exposure
  • Text-only modetools: [] by default, pure API proxy
  • No proxy_api_key needed — inter-process communication on localhost is trusted
  • Minimal footprint — 4 JS files + 1 config file + 1 npm dependency