npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

ccproxy-client

v0.1.0

Published

Zero-dependency client for a ccproxy server: an OpenAI/Anthropic-compatible API served by the Claude Code CLI

Readme

ccproxy-client (Node)

Zero-dependency client for a ccproxy server. ccproxy exposes an OpenAI- and Anthropic-compatible HTTP API that is answered by the Claude Code CLI. Project home: https://github.com/wubbyweb/ccproxy

What you need

This package is only an HTTP client. Installing it does not install or require Claude Code. You need two things:

  1. A running ccproxy server you can reach over HTTP. Claude Code must be installed and logged in on the machine running that server, not on the machine running this client.
  2. An API key for that server, created in its admin console (http://<server>:8787/admin).

Two common setups:

| Setup | Who needs Claude Code | Client config | |---|---|---| | Same machine: you run the server locally and your app talks to it | you, on this machine | baseURL default http://127.0.0.1:8787 | | Shared server: someone hosts ccproxy and hands out API keys | only the host machine | baseURL: "https://proxy.example.com" plus the key you were given |

To run a server yourself:

npm install -g ccproxy-server   # needs Node 18+ and a logged-in Claude Code CLI
ccproxy serve
ccproxy admin token             # sign in at http://127.0.0.1:8787/admin and create a key

Install

npm install ccproxy-client

Node 18+ (uses global fetch). Also works in browsers.

Use

import { CCProxy } from 'ccproxy-client';

// apiKey and baseURL also come from CCPROXY_API_KEY / CCPROXY_BASE_URL env vars
const client = new CCProxy({ apiKey: 'sk-ccp-...', baseURL: 'http://127.0.0.1:8787' });

// One-liner
console.log(await client.complete('Explain monads in one sentence.'));

// OpenAI-style
const res = await client.chat.completions.create({
  model: 'sonnet',
  messages: [{ role: 'user', content: 'Hello!' }],
});
console.log(res.choices[0].message.content);

// Streaming
const stream = await client.chat.completions.create({ messages: [{ role: 'user', content: 'Tell me a story' }], stream: true });
for await (const chunk of stream) process.stdout.write(chunk.choices[0]?.delta?.content ?? '');

// Anthropic-style
const msg = await client.messages.create({ max_tokens: 500, messages: [{ role: 'user', content: 'Hi' }] });
console.log(msg.content[0].text);

// Models and health
console.log((await client.models.list()).map((m) => m.id));
console.log(await client.health());

Errors throw CCProxyError with status (HTTP status, 401 for a bad key, 429 for rate limits, 0 for connection failures) and body.

Function calling (tools), response_format, stop sequences and reasoning_effort are passed through; see the project README for what the server supports.

Alternatives

The official openai and @anthropic-ai/sdk packages also work: set baseURL to the server (.../v1 for OpenAI) and use the ccproxy key as the API key.