{
  "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"
  }
}
