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

lynkr

v7.2.3

Published

Self-hosted Claude Code & Cursor proxy with Databricks,AWS BedRock,Azure adapters, openrouter, Ollama,llamacpp,LM Studio, workspace tooling, and MCP integration.

Readme

Lynkr - Run Cursor, Cline, Continue, OpenAi Compatible Tools and Claude Code on any model.

One universal LLM proxy for AI coding tools.

npm version Homebrew Tap License: Apache 2.0 Ask DeepWiki Databricks Supported AWS Bedrock OpenAI Compatible Ollama Compatible llama.cpp Compatible

Use Case

        Cursor / Cline / Continue / Claude Code / Clawdbot / Codex/ KiloCode
                        ↓
                       Lynkr
                        ↓
        Local LLMs | OpenRouter | Azure | Databricks | AWS BedRock | Ollama | LMStudio | Gemini

Overview

Lynkr is a self-hosted proxy server that unlocks Claude Code CLI , Cursor IDE and Codex Cli by enabling:

  • 🚀 Any LLM Provider - Databricks, AWS Bedrock (100+ models), OpenRouter (100+ models), Ollama (local), llama.cpp, Azure OpenAI, Azure Anthropic, OpenAI, LM Studio
  • 💰 60-80% Cost Reduction - Built-in token optimization with smart tool selection, prompt caching, and memory deduplication
  • 🔒 100% Local/Private - Run completely offline with Ollama or llama.cpp
  • 🌐 Remote or Local - Connect to providers on any IP/hostname (not limited to localhost)
  • 🎯 Zero Code Changes - Drop-in replacement for Anthropic's backend
  • 🏢 Enterprise-Ready - Circuit breakers, load shedding, Prometheus metrics, health checks

Perfect for:

  • Developers who want provider flexibility and cost control
  • Enterprises needing self-hosted AI with observability
  • Privacy-focused teams requiring local model execution
  • Teams seeking 60-80% cost reduction through optimization

Quick Start

Installation

Option 1: NPM Package (Recommended)

# Install globally
npm install -g pino-pretty 
npm install -g lynkr

lynk start

Option 2: Git Clone

# Clone repository
git clone https://github.com/vishalveerareddy123/Lynkr.git
cd Lynkr

# Install dependencies
npm install

# Create .env from example
cp .env.example .env

# Edit .env with your provider credentials
nano .env

# Start server
npm start

Node.js Compatibility:

  • Node 20-24: Full support with all features
  • Node 25+: Full support (native modules auto-rebuild, babel fallback for code parsing)

Option 3: Docker

docker-compose up -d

Supported Providers

Lynkr supports 10+ LLM providers:

| Provider | Type | Models | Cost | Privacy | |----------|------|--------|------|---------| | AWS Bedrock | Cloud | 100+ (Claude, Titan, Llama, Mistral, etc.) | $$-$$$ | Cloud | | Databricks | Cloud | Claude Sonnet 4.5, Opus 4.5 | $$$ | Cloud | | OpenRouter | Cloud | 100+ (GPT, Claude, Llama, Gemini, etc.) | $-$$ | Cloud | | Ollama | Local | Unlimited (free, offline) | FREE | 🔒 100% Local | | llama.cpp | Local | GGUF models | FREE | 🔒 100% Local | | Azure OpenAI | Cloud | GPT-4o, GPT-5, o1, o3 | $$$ | Cloud | | Azure Anthropic | Cloud | Claude models | $$$ | Cloud | | OpenAI | Cloud | GPT-4o, o1, o3 | $$$ | Cloud | | LM Studio | Local | Local models with GUI | FREE | 🔒 100% Local | | MLX OpenAI Server | Local | Apple Silicon (M1/M2/M3/M4) | FREE | 🔒 100% Local |

📖 Full Provider Configuration Guide


Claude Code Integration

Configure Claude Code CLI to use Lynkr:

# Set Lynkr as backend
export ANTHROPIC_BASE_URL=http://localhost:8081
export ANTHROPIC_API_KEY=dummy

# Run Claude Code
claude "Your prompt here"

That's it! Claude Code now uses your configured provider.

📖 Detailed Claude Code Setup


Cursor Integration

Configure Cursor IDE to use Lynkr:

  1. Open Cursor Settings

    • Mac: Cmd+, | Windows/Linux: Ctrl+,
    • Navigate to: FeaturesModels
  2. Configure OpenAI API Settings

    • API Key: sk-lynkr (any non-empty value)
    • Base URL: http://localhost:8081/v1
    • Model: claude-3.5-sonnet (or your provider's model)
  3. Test It

    • Chat: Cmd+L / Ctrl+L
    • Inline edits: Cmd+K / Ctrl+K
    • @Codebase search: Requires embeddings setup

📖 Full Cursor Setup Guide | Embeddings Configuration

Codex CLI Integration

Configure OpenAI Codex CLI to use Lynkr as its backend.

Option 1: Environment Variables (Quick Start)

export OPENAI_BASE_URL=http://localhost:8081/v1
export OPENAI_API_KEY=dummy

codex

Option 2: Config File (Recommended)

Edit ~/.codex/config.toml:

# Set Lynkr as the default provider
model_provider = "lynkr"
model = "gpt-4o"

# Define the Lynkr provider
[model_providers.lynkr]
name = "Lynkr Proxy"
base_url = "http://localhost:8081/v1"
wire_api = "responses"

# Optional: Trust your project directories
[projects."/path/to/your/project"]
trust_level = "trusted"

Configuration Options

| Option | Description | Example | |--------|-------------|---------| | model_provider | Active provider name | "lynkr" | | model | Model to request (mapped by Lynkr) | "gpt-4o", "claude-sonnet-4-5" | | base_url | Lynkr endpoint | "http://localhost:8081/v1" | | wire_api | API format (responses or chat) | "responses" | | trust_level | Project trust (trusted, sandboxed) | "trusted" |

Remote Lynkr Server

To connect Codex to a remote Lynkr instance:

[model_providers.lynkr-remote]
name = "Remote Lynkr"
base_url = "http://192.168.1.100:8081/v1"
wire_api = "responses"

Troubleshooting

| Issue | Solution | |-------|----------| | Same response for all queries | Disable semantic cache: SEMANTIC_CACHE_ENABLED=false | | Tool calls not executing | Increase threshold: POLICY_TOOL_LOOP_THRESHOLD=15 | | Slow first request | Keep Ollama loaded: OLLAMA_KEEP_ALIVE=24h | | Connection refused | Ensure Lynkr is running: npm start |

Note: Codex uses the OpenAI Responses API format. Lynkr automatically converts this to your configured provider's format.


ClawdBot Integration

Lynkr supports ClawdBot via its OpenAI-compatible API. ClawdBot users can route requests through Lynkr to access any supported provider.

Configuration in ClawdBot: | Setting | Value | |---------|-------| | Model/auth provider | Copilot | | Copilot auth method | Copilot Proxy (local) | | Copilot Proxy base URL | http://localhost:8081/v1 | | Model IDs | Any model your Lynkr provider supports |

Available models (depending on your Lynkr provider): gpt-5.2, gpt-5.1-codex, claude-opus-4.5, claude-sonnet-4.5, claude-haiku-4.5, gemini-3-pro, gemini-3-flash, and more.

🌐 Remote Support: ClawdBot can connect to Lynkr on any machine - use any IP/hostname in the Proxy base URL (e.g., http://192.168.1.100:8081/v1 or http://gpu-server:8081/v1).


Lynkr also supports Cline, Continue.dev and other OpenAI compatible tools.


Documentation

Getting Started

IDE & CLI Integration

Features & Capabilities

Deployment & Operations

Support


External Resources


Key Features Highlights

  • Multi-Provider Support - 9+ providers including local (Ollama, llama.cpp) and cloud (Bedrock, Databricks, OpenRouter)
  • 60-80% Cost Reduction - Token optimization with smart tool selection, prompt caching, memory deduplication
  • 100% Local Option - Run completely offline with Ollama/llama.cpp (zero cloud dependencies)
  • OpenAI Compatible - Works with Cursor IDE, Continue.dev, and any OpenAI-compatible client
  • Embeddings Support - 4 options for @Codebase search: Ollama (local), llama.cpp (local), OpenRouter, OpenAI
  • MCP Integration - Automatic Model Context Protocol server discovery and orchestration
  • Enterprise Features - Circuit breakers, load shedding, Prometheus metrics, K8s health checks
  • Streaming Support - Real-time token streaming for all providers
  • Memory System - Titans-inspired long-term memory with surprise-based filtering
  • Tool Calling - Full tool support with server and passthrough execution modes
  • Production Ready - Battle-tested with 400+ tests, observability, and error resilience
  • Node 20-25 Support - Works with latest Node.js versions including v25
  • Semantic Caching - Cache responses for similar prompts (requires embeddings)

Semantic Cache

Lynkr includes an optional semantic response cache that returns cached responses for semantically similar prompts, reducing latency and costs.

Enable Semantic Cache:

# Requires an embeddings provider (Ollama recommended)
ollama pull nomic-embed-text

# Add to .env
SEMANTIC_CACHE_ENABLED=true
SEMANTIC_CACHE_THRESHOLD=0.95
OLLAMA_EMBEDDINGS_MODEL=nomic-embed-text
OLLAMA_EMBEDDINGS_ENDPOINT=http://localhost:11434/api/embeddings

| Setting | Default | Description | |---------|---------|-------------| | SEMANTIC_CACHE_ENABLED | false | Enable/disable semantic caching | | SEMANTIC_CACHE_THRESHOLD | 0.95 | Similarity threshold (0.0-1.0) |

Note: Without a proper embeddings provider, the cache uses hash-based fallback which may cause false matches. Use Ollama with nomic-embed-text for best results.


Architecture

┌─────────────────┐
│    AI Tools     │  
└────────┬────────┘
         │ Anthropic/OpenAI Format
         ↓
┌─────────────────┐
│  Lynkr Proxy    │
│  Port: 8081     │
│                 │
│ • Format Conv.  │
│ • Token Optim.  │
│ • Provider Route│
│ • Tool Calling  │
│ • Caching       │
└────────┬────────┘
         │
         ├──→ Databricks (Claude 4.5)
         ├──→ AWS Bedrock (100+ models)
         ├──→ OpenRouter (100+ models)
         ├──→ Ollama (local, free)
         ├──→ llama.cpp (local, free)
         ├──→ Azure OpenAI (GPT-4o, o1)
         ├──→ OpenAI (GPT-4o, o3)
         └──→ Azure Anthropic (Claude)

📖 Detailed Architecture


Quick Configuration Examples

100% Local (FREE)

export MODEL_PROVIDER=ollama
export OLLAMA_MODEL=qwen2.5-coder:latest
export OLLAMA_EMBEDDINGS_MODEL=nomic-embed-text
npm start

💡 Tip: Prevent slow cold starts by keeping Ollama models loaded: launchctl setenv OLLAMA_KEEP_ALIVE "24h" (macOS) or set OLLAMA_KEEP_ALIVE=24h env var. See troubleshooting.

Remote Ollama (GPU Server)

export MODEL_PROVIDER=ollama
export OLLAMA_ENDPOINT=http://192.168.1.100:11434  # Any IP or hostname
export OLLAMA_MODEL=llama3.1:70b
npm start

🌐 Note: All provider endpoints support remote addresses - not limited to localhost. Use any IP, hostname, or domain.

MLX OpenAI Server (Apple Silicon)

# Terminal 1: Start MLX server
mlx-openai-server launch --model-path mlx-community/Qwen2.5-Coder-7B-Instruct-4bit --model-type lm

# Terminal 2: Start Lynkr
export MODEL_PROVIDER=openai
export OPENAI_ENDPOINT=http://localhost:8000/v1/chat/completions
export OPENAI_API_KEY=not-needed
npm start

🍎 Apple Silicon optimized - Native MLX performance on M1/M2/M3/M4 Macs. See MLX setup guide.

AWS Bedrock (100+ models)

export MODEL_PROVIDER=bedrock
export AWS_BEDROCK_API_KEY=your-key
export AWS_BEDROCK_MODEL_ID=anthropic.claude-3-5-sonnet-20241022-v2:0
npm start

OpenRouter (simplest cloud)

export MODEL_PROVIDER=openrouter
export OPENROUTER_API_KEY=sk-or-v1-your-key
npm start

** You can setup multiple models like local models 📖 More Examples


Contributing

We welcome contributions! Please see:


License

Apache 2.0 - See LICENSE file for details.


Community & Support


Made with ❤️ by developers, for developers.