-
-
Notifications
You must be signed in to change notification settings - Fork 59
Expand file tree
/
Copy pathpackage.json
More file actions
121 lines (121 loc) · 7.04 KB
/
Copy pathpackage.json
File metadata and controls
121 lines (121 loc) · 7.04 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
{
"name": "lynkr",
"version": "9.14.2",
"files": [
"index.js",
"install.sh",
"bin",
"config",
"public",
"skills",
"lynkr-skill.tar.gz",
"src",
"!src/db/database.sqlite",
"!src/**/*.db",
"!src/**/*.backup",
"native/index.js",
"native/lynkr-native.node",
"native/src/lib.rs",
"native/Cargo.toml",
"models/router/README.md",
"scripts",
"!scripts/export-routellm-bert.py"
],
"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",
"lynkr-statusline": "bin/statusline.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",
"start:supervised": "while true; do node index.js 2>&1 | npx pino-pretty --sync; code=$?; echo \"[supervisor] lynkr exited ($code) — restarting in 3s\"; sleep 3; done",
"lint": "eslint src index.js",
"test": "npm run test:unit && npm run test:performance",
"test:unit": "LYNKR_KNN_DIR=/tmp/lynkr-test-knn DATABRICKS_API_KEY=test-key DATABRICKS_API_BASE=http://test.com LOG_FILE_ENABLED=false node --test test/routing.test.js test/hybrid-routing-integration.test.js test/retry-logic.test.js test/sse-transformer.test.js test/passthrough-stream.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/atlas-integration.test.js test/toon-compression.test.js test/gcf-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/memory/distiller.test.js test/memory/distiller-freeze.test.js test/memory/wiki.test.js test/memory/skills-cache.test.js test/memory/tencentdb-launcher.test.js test/distill.test.js test/large-payload.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/cache-state.test.js test/cache-switch-cost.test.js test/lens-recommendations.test.js test/model-registry-cost.test.js test/output-format-guard.test.js test/tier-fallback.test.js test/wrap.test.js test/init.test.js test/tool-call-response-metadata.test.js test/degradation.test.js test/routing-telemetry-columns.test.js test/sticky-routing.test.js test/knn-ambiguous-escalate.test.js test/deescalator.test.js test/client-profiles.test.js test/strip-internal-fields.test.js test/complexity-tool-subtraction.test.js test/bandit.test.js test/routing-propensity.test.js test/reward-pipeline.test.js test/knn-cold-start.test.js test/calibration.test.js test/feedback-loop.test.js test/session-fingerprint.test.js test/side-request-guards.test.js test/verifier.test.js test/intent-score.test.js test/difficulty-classifier.test.js test/classifier-setup.test.js test/usage-stats.test.js test/loop-guard.test.js test/moonshot-model-mapping.test.js test/baidu-model-mapping.test.js",
"test:memory": "LYNKR_KNN_DIR=/tmp/lynkr-test-knn 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/memory/distiller.test.js test/memory/distiller-freeze.test.js test/memory/wiki.test.js test/memory/skills-cache.test.js test/memory/tencentdb-launcher.test.js",
"test:new-features": "LYNKR_KNN_DIR=/tmp/lynkr-test-knn 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": "LYNKR_KNN_DIR=/tmp/lynkr-test-knn 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": "LYNKR_KNN_DIR=/tmp/lynkr-test-knn DATABRICKS_API_KEY=test-key DATABRICKS_API_BASE=http://test.com node test/performance-benchmark.js",
"test:quick": "LYNKR_KNN_DIR=/tmp/lynkr-test-knn 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": {
"@blackwell-systems/gcf": "2.4.0",
"@toon-format/toon": "^2.1.0",
"cockatiel": "^3.2.1",
"diff": "^5.2.0",
"dotenv": "^16.4.5",
"express": "^5.1.0",
"express-rate-limit": "^8.2.1",
"hnswlib-node": "^3.0.0",
"js-tiktoken": "^1.0.20",
"pino": "^8.17.2",
"pino-http": "^8.6.0",
"pino-roll": "^4.0.0"
},
"optionalDependencies": {
"better-sqlite3": "^12.11.1",
"dockerode": "^5.0.1",
"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"
},
"allowScripts": {}
}