UNPKG

lynkr

Version:

Self-hosted LLM gateway and tier-routing proxy for Claude Code, Cursor, and Codex. Routes across Ollama, AWS Bedrock, OpenRouter, Databricks, Azure OpenAI, llama.cpp, and LM Studio with prompt caching, MCP tools, and 60-80% cost savings.

106 lines (105 loc) 5.15 kB
{ "name": "lynkr", "version": "9.5.0", "description": "Self-hosted LLM gateway and tier-routing proxy for Claude Code, Cursor, and Codex. Routes across Ollama, AWS Bedrock, OpenRouter, Databricks, Azure OpenAI, llama.cpp, and LM Studio with prompt caching, MCP tools, and 60-80% cost savings.", "main": "index.js", "bin": { "lynkr": "bin/cli.js", "lynkr-setup": "scripts/setup.js" }, "scripts": { "postinstall": "node scripts/check-native.js", "rebuild-native": "node scripts/check-native.js", "prestart": "node -e \"if(process.env.HEADROOM_ENABLED==='true'&&process.env.HEADROOM_DOCKER_ENABLED!=='false'){process.exit(0)}else{process.exit(1)}\" && docker compose --profile headroom up -d --build headroom 2>/dev/null || echo 'Headroom skipped (disabled or Docker not running)'", "start": "node index.js 2>&1 | npx pino-pretty --sync", "stop": "node -e \"if(process.env.HEADROOM_ENABLED==='true'&&process.env.HEADROOM_DOCKER_ENABLED!=='false'){process.exit(0)}else{process.exit(1)}\" && docker compose --profile headroom down || echo 'Headroom skipped (disabled or Docker not running)'", "dev": "nodemon index.js", "lint": "eslint src index.js", "test": "npm run test:unit && npm run test:performance", "test:unit": "DATABRICKS_API_KEY=test-key DATABRICKS_API_BASE=http://test.com node --test test/routing.test.js test/hybrid-routing-integration.test.js test/web-tools.test.js test/passthrough-mode.test.js test/openrouter-error-resilience.test.js test/format-conversion.test.js test/azure-openai-config.test.js test/azure-openai-format-conversion.test.js test/azure-openai-routing.test.js test/azure-openai-streaming.test.js test/azure-openai-error-resilience.test.js test/azure-openai-integration.test.js test/openai-integration.test.js test/toon-compression.test.js test/llamacpp-integration.test.js test/resilience.test.js test/telemetry-routing.test.js test/memory/store.test.js test/memory/surprise.test.js test/memory/extractor.test.js test/memory/search.test.js test/memory/retriever.test.js test/distill.test.js test/large-payload.test.js test/code-mode.test.js test/prompt-cache-injection.test.js test/risk-analyzer.test.js test/interaction-block.test.js test/preflight.test.js test/token-reduction.test.js test/session-affinity.test.js test/model-registry-cost.test.js", "test:memory": "DATABRICKS_API_KEY=test-key DATABRICKS_API_BASE=http://test.com node --test test/memory/store.test.js test/memory/surprise.test.js test/memory/extractor.test.js test/memory/search.test.js test/memory/retriever.test.js", "test:new-features": "DATABRICKS_API_KEY=test-key DATABRICKS_API_BASE=http://test.com node --test test/passthrough-mode.test.js test/openrouter-error-resilience.test.js test/format-conversion.test.js", "test:performance": "DATABRICKS_API_KEY=test-key DATABRICKS_API_BASE=http://test.com node test/hybrid-routing-performance.test.js && DATABRICKS_API_KEY=test-key DATABRICKS_API_BASE=http://test.com node test/performance-tests.js", "test:benchmark": "DATABRICKS_API_KEY=test-key DATABRICKS_API_BASE=http://test.com node test/performance-benchmark.js", "test:quick": "DATABRICKS_API_KEY=test-key DATABRICKS_API_BASE=http://test.com node --test test/routing.test.js", "test:all": "npm run test:unit && npm run test:performance && npm run test:benchmark" }, "keywords": [ "llm", "llm-gateway", "llm-proxy", "llm-router", "ai-gateway", "tier-routing", "claude", "claude-code", "anthropic", "cursor", "codex", "openai", "openrouter", "ollama", "llamacpp", "lm-studio", "bedrock", "aws-bedrock", "azure-openai", "databricks", "gemini", "mcp", "model-context-protocol", "prompt-cache", "self-hosted", "litellm-alternative", "portkey-alternative", "copilot-alternative" ], "author": "Vishal Veera Reddy", "license": "Apache-2.0", "repository": { "type": "git", "url": "git+https://github.com/Fast-Editor/Lynkr.git" }, "bugs": { "url": "https://github.com/Fast-Editor/Lynkr/issues" }, "homepage": "https://fast-editor.github.io/Lynkr/", "engines": { "node": ">=20.0.0" }, "dependencies": { "@azure/openai": "^2.0.0", "@babel/parser": "^7.29.0", "@babel/traverse": "^7.29.0", "@toon-format/toon": "^2.1.0", "cockatiel": "^3.2.1", "compression": "^1.7.4", "diff": "^5.2.0", "dotenv": "^16.4.5", "express": "^5.1.0", "express-rate-limit": "^8.2.1", "fast-glob": "^3.3.2", "hnswlib-node": "^3.0.0", "js-tiktoken": "^1.0.20", "js-yaml": "^4.1.1", "openai": "^6.14.0", "pino": "^8.17.2", "pino-http": "^8.6.0", "pino-roll": "^4.0.0", "undici": "^6.22.0" }, "optionalDependencies": { "better-sqlite3": "^12.6.2", "dockerode": "^4.0.2", "tree-sitter": "^0.21.1", "tree-sitter-javascript": "^0.21.0", "tree-sitter-python": "^0.21.0", "tree-sitter-typescript": "^0.21.0" }, "devDependencies": { "@napi-rs/cli": "^3.6.2", "eslint": "^8.57.0", "nodemon": "^3.1.0", "pino-pretty": "^10.2.0" } }