惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

云风的 BLOG
云风的 BLOG
The GitHub Blog
The GitHub Blog
Y
Y Combinator Blog
博客园 - 三生石上(FineUI控件)
T
The Blog of Author Tim Ferriss
宝玉的分享
宝玉的分享
Hugging Face - Blog
Hugging Face - Blog
WordPress大学
WordPress大学
V
Visual Studio Blog
小众软件
小众软件
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
MongoDB | Blog
MongoDB | Blog
V
V2EX
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 【当耐特】
Microsoft Azure Blog
Microsoft Azure Blog
The Cloudflare Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Engineering at Meta
Engineering at Meta
L
LangChain Blog
Martin Fowler
Martin Fowler
GbyAI
GbyAI
博客园 - 司徒正美

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant
Free Claude Code with Lynkr + Kilo Gateway
KALPESH · 2026-04-26 · via DEV Community

KALPESH

Route Claude Code through Lynkr proxy → Kilo Gateway free models.

Zero Anthropic billing. Zero OpenRouter billing.


How it works

Claude Code / Cursor / Codex / Cline / Continue                                         ← Your Prompt
        ↓
Lynkr (localhost:8081)                                                                  ← intercepts Anthropic-format request
        ↓
Ollama | Bedrock | Databricks | OpenRouter | Azure | OpenAI | llama.cpp | Kilo Gateway  ← routes to free model
        ↓
LLM response                                                                            ← streamed back to Claude Code

Enter fullscreen mode Exit fullscreen mode

ANTHROPIC_API_KEY is just a dummy value — Lynkr ignores it and uses your Kilo key internally.


Prerequisites

  • Node.js 20+ → check with node --version, install from nodejs.org
  • Linux / macOS / WSL (Windows works via WSL)

Step 1 — Get a Kilo Gateway API Key (Free)

  1. Go to app.kilo.ai and sign up (Google login works)
  2. Navigate to API Keys in the dashboard
  3. Click Generate API Key → copy it (a long JWT token)

Free models available on Kilo (no credit card needed):

Model ID Best for
kilo-auto/free Auto-picks best free model
nvidia/nemotron-3-super-120b-a12b:free Large, capable (120B)
arcee-ai/trinity-large-thinking:free Reasoning tasks
x-ai/grok-code-fast-1:optimized:free Coding tasks
openrouter/free OpenRouter's best free model

Step 2 — Install Claude Code CLI

npm install -g @anthropic-ai/claude-code
claude --version   # verify

Enter fullscreen mode Exit fullscreen mode


Step 3 — Install Lynkr

npm install -g pino-pretty
npm install -g lynkr
lynkr --version    # verify

Enter fullscreen mode Exit fullscreen mode


Step 4 — Create Lynkr config folder and .env

mkdir ~/Desktop/lynkr && cd ~/Desktop/lynkr
nano .env

Enter fullscreen mode Exit fullscreen mode

Paste this into .env (replace YOUR_KILO_KEY with your actual key):

# ── Provider ──────────────────────────────────────────────────
MODEL_PROVIDER=openai

# ── Kilo Gateway (OpenAI-compatible) ──────────────────────────
OPENAI_API_KEY=YOUR_KILO_KEY_HERE
OPENAI_ENDPOINT=https://api.kilo.ai/api/gateway/chat/completions
OPENAI_MODEL=kilo-auto/free

# ── REQUIRED: All 4 tiers must be set (format = provider:model)
TIER_SIMPLE=openai:kilo-auto/free
TIER_MEDIUM=openai:kilo-auto/free
TIER_COMPLEX=openai:kilo-auto/free
TIER_REASONING=openai:kilo-auto/free

# ── Server ────────────────────────────────────────────────────
PORT=8081
NODE_ENV=development
LOG_LEVEL=info

# ── Disable features that need extra setup ────────────────────
SEMANTIC_CACHE_ENABLED=false # Caches similar prompts, needs an embeddings model configured
FALLBACK_ENABLED=false       # If Kilo fails, automatically retries with a backup provider
MEMORY_ENABLED=false         # Gives the AI persistent memory across sessions, needs extra DB/vector setup
HEADROOM_ENABLED=true        # Reserves token budget to avoid hitting context limits mid-conversation
AGENTS_ENABLED=true          # Enables Lynkr's built-in agent system (web search, code exec, etc.)

Enter fullscreen mode Exit fullscreen mode

Save and exit (Ctrl+O, Enter, Ctrl+X in nano).


Step 5 — Start Lynkr

cd ~/Desktop/lynkr
lynkr start

Enter fullscreen mode Exit fullscreen mode

You'll see logs ending with:

Claude→Databricks proxy listening on http://localhost:8081
Config watcher started ...

Enter fullscreen mode Exit fullscreen mode

The "Databricks" label is just a hardcoded display string in Lynkr's source — it doesn't mean it's routing to Databricks. Your .env controls the actual provider.

Leave this terminal running.


Step 6 — Verify it works (new terminal)

curl -X POST http://localhost:8081/v1/messages \
  -H "Content-Type: application/json" \
  -H "x-api-key: dummy" \
  -H "anthropic-version: 2023-06-01" \
  -d '{
    "model": "claude-3-5-sonnet-20241022",
    "max_tokens": 50,
    "messages": [{"role": "user", "content": "say hi"}]
  }'

Enter fullscreen mode Exit fullscreen mode

Expected response:

{
  "content": [{"type": "text", "text": "Hi there! How can I help you today?"}],
  "_routingMeta": {
    "provider": "openai",
    "model": "kilo-auto/free",
    "tier": "SIMPLE"
  }
}

Enter fullscreen mode Exit fullscreen mode

If you see _routingMeta with "model": "kilo-auto/free" — everything is working. ✅


Step 7 — Connect Claude Code to Lynkr

export ANTHROPIC_BASE_URL=http://localhost:8081
export ANTHROPIC_API_KEY=dummy

claude "say hello"

Enter fullscreen mode Exit fullscreen mode

ANTHROPIC_API_KEY=dummy works because Lynkr ignores whatever value Claude Code sends — it uses your Kilo key from .env for all actual API calls.


Step 8 — Make it permanent

Add to your ~/.zshrc or ~/.bashrc:

# Lynkr / Claude Code proxy
export ANTHROPIC_BASE_URL=http://localhost:8081
export ANTHROPIC_API_KEY=dummy

# Quick start alias
alias lynkr-start="cd ~/Desktop/lynkr && lynkr start"

Enter fullscreen mode Exit fullscreen mode

Reload:

source ~/.bashrc   # or source ~/.zshrc

Enter fullscreen mode Exit fullscreen mode

Now every session:

  • Terminal 1: lynkr-start
  • Terminal 2: claude "anything" — free, forever

Troubleshooting

Problem Fix
[WARN] Missing tier configuration All 4 TIER_* vars must be set in .env
is not a valid model ID Remove kilo/ prefix — correct format is kilo-auto/free not kilo/kilo-auto/free
Connection refused Lynkr isn't running — start it first
Claude→Databricks in logs Normal — just a hardcoded label, doesn't affect routing
Model says "Claude Sonnet 4.6" Normal — Lynkr returns a fake model name to satisfy Claude Code; real model is in _routingMeta
Slow first response Free-tier cold start — second request is faster

Free model reference

All of these work as OPENAI_MODEL and in TIER_* settings:

kilo-auto/free
nvidia/nemotron-3-super-120b-a12b:free
arcee-ai/trinity-large-thinking:free
x-ai/grok-code-fast-1:optimized:free
bytedance-seed/dola-seed-2.0-pro:free
openrouter/free

Enter fullscreen mode Exit fullscreen mode

Note: Models with :free suffix containing colons may conflict with Lynkr's provider:model tier parser. If a tier fails, fall back to openai:kilo-auto/free for all 4 tiers.


Final .env (clean copy)

MODEL_PROVIDER=openai
OPENAI_API_KEY=YOUR_KILO_KEY_HERE
OPENAI_ENDPOINT=https://api.kilo.ai/api/gateway/chat/completions
OPENAI_MODEL=kilo-auto/free
TIER_SIMPLE=openai:kilo-auto/free
TIER_MEDIUM=openai:kilo-auto/free
TIER_COMPLEX=openai:kilo-auto/free
TIER_REASONING=openai:kilo-auto/free
PORT=8081
NODE_ENV=development
LOG_LEVEL=info
SEMANTIC_CACHE_ENABLED=false
FALLBACK_ENABLED=false
MEMORY_ENABLED=false
HEADROOM_ENABLED=true
AGENTS_ENABLED=true

Enter fullscreen mode Exit fullscreen mode


Reference: Lynkr GitHub