Embed claude-sub-proxy as Internal Service

VerifiedSafe

Embed claude-sub-proxy as an internal service within another project with minimal footprint (4 JS files + config, no external exposure). It adds Claude API access to an existing app without a separate server, running on localhost. Useful for integrating Claude into a larger application securely.

Sby Skills Guide Bot
DevelopmentIntermediate
6/2/2026
Claude Code
#embedded-proxy#claude-integration#internal-service#localhost

Recommended for

Automated summary

This skill embeds claude-sub-proxy as an internal service within an existing project, running on localhost with no external exposure.

Strengths

  • Minimal footprint: only 4 JS files plus configuration
  • Secure by default: listens only on localhost
  • Multiple integration options (copy, submodule, programmatic start)
  • No extra proxy API key needed for internal communication

Limitations

  • Text-only mode by default (no image or tool support)
  • Requires Claude Code CLI to be authenticated
  • Manual background process management
When to use it

When you need to add Claude API access inside a larger application without deploying a separate server or exposing an external endpoint.

When not to use it

If you need multimodal features (images), a public-facing proxy with API key, or prefer a standalone server solution.

Security analysis

Safe
Quality score90/100

The skill provides a setup guide for embedding a local proxy. It only instructs reading local credentials, copying files, installing npm packages, and starting a local server. No destructive commands, external exfiltration, or obfuscated payloads.

No concerns found

How this analysis is made

Examples

Embed proxy in existing project
Embed claude-sub-proxy as an internal service in my project so I can call Claude API without a separate server.
Integrate claude-sub-proxy
Integrate claude-sub-proxy into my existing app as a library/internal service running on localhost.
Add Claude API without external server
I want to add Claude API access to my Node.js application without setting up a separate proxy server. Can you embed claude-sub-proxy into my project?

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:

| Variable | Recommended Value | Description | |----------|------------------|-------------| | CSP_PORT | 42069 (or any free port) | Proxy listening port | | CSP_HOST | 127.0.0.1 | Localhost only — no external exposure | | CSP_LOG_LEVEL | WARN | Quiet 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 mode — tools: [] 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

From the file to a first result

The download contains exactly the content displayed on this page. This copy may differ from the latest version in the source repository.

View the source and supporting files

This download contains SKILL.md only. Any scripts, references, templates and dependencies are not included. Get the required files from the source, preserving their directory structure, before continuing.

1. Download the file

Download SKILL.md

From the root of a test project, save the file as .skill-downloads/embed-claude-sub-proxy-as-internal-service-mma3jr3x/SKILL.md, or use the command below. This folder is for inspecting the skill before installation.

Command for macOS/Linux or WSL: requires a POSIX shell and curl. On Windows without WSL, use the download button and create the folder manually.

mkdir -p '.skill-downloads/embed-claude-sub-proxy-as-internal-service-mma3jr3x' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/embed-claude-sub-proxy-as-internal-service-mma3jr3x/download' --output '.skill-downloads/embed-claude-sub-proxy-as-internal-service-mma3jr3x/SKILL.md.part' && mv '.skill-downloads/embed-claude-sub-proxy-as-internal-service-mma3jr3x/SKILL.md.part' '.skill-downloads/embed-claude-sub-proxy-as-internal-service-mma3jr3x/SKILL.md'

2. Check prerequisites

Read SKILL.md before using it. If it references scripts or external services, inspect them and prepare the required access in your test environment.

No recognized prerequisites section in this file. This does not mean it is self-contained: libraries, tools and access requirements may be mentioned elsewhere in the content or source repository.

The platforms on this page are catalog indications. The paths below follow tool documentation; they do not prove this skill has been run in those tools. No minimum tool version is confirmed for this listing.

3. Load the skill

This file does not provide a usable name/description header for this native procedure. It remains available to download and inspect; use the manual method below.

Manual method or another tool: attach SKILL.md to a conversation, or open it in an agent that can read files. Include any required supporting resources. No universal folder is recognized by every tool.

4. Try a first task

Use a short, synthetic input: an API endpoint, a small document or an interface brief. In a new conversation, attach the file or give the agent its path, then adapt this request:

Read .skill-downloads/embed-claude-sub-proxy-as-internal-service-mma3jr3x/SKILL.md and apply its instructions to this example: [describe a test input]. Identify any missing files, dependencies or access. Produce the result requested by the skill without inventing data or running unreviewed scripts.

Expected result: output matching the skill instructions, or a precise list of missing prerequisites. A read confirmation alone does not validate a first use. If an external resource is unavailable, that path remains untested.

Related skills