Skip to content

Commit ba37251

Browse files
committed
feat: cross-link all platforms (npm, PyPI, GitHub)
1 parent fca08cf commit ba37251

3 files changed

Lines changed: 41 additions & 124 deletions

File tree

‎README.md‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,11 @@
99
[![Tests](https://img.shields.io/badge/Tests-28%2F28%20passing-brightgreen)](https://github.com/Das-rebel/a3m-router/actions)
1010
[![GitHub stars](https://img.shields.io/github/stars/Das-rebel/a3m-router)](https://github.com/Das-rebel/a3m-router/stargazers)
1111

12+
**📦 Available on:**
13+
[![npm](https://img.shields.io/badge/npm-6%2C000%2B%2Fmonth-CB3837?style=flat-square&logo=npm)](https://www.npmjs.com/package/adaptive-memory-multi-model-router)
14+
[![PyPI](https://img.shields.io/badge/PyPI-700%2Fmonth-3776AB?style=flat-square&logo=pypi)](https://pypi.org/project/a3m-router/)
15+
[![GitHub](https://img.shields.io/badge/GitHub-14%20%E2%98%85-100000?style=flat-square&logo=github)](https://github.com/Das-rebel/a3m-router/stargazers)
16+
1217
A3M Router automatically picks the cheapest capable model for each request. No code changes needed. Just swap your API endpoint.
1318

1419
---

‎package.json‎

Lines changed: 31 additions & 122 deletions
Original file line numberDiff line numberDiff line change
@@ -10,140 +10,38 @@
1010
"scripts": {
1111
"start": "node dist/cli.js serve",
1212
"test": "node --test",
13-
"lint": "eslint src/"
13+
"lint": "eslint src/",
14+
"build": "tsc"
1415
},
1516
"keywords": [
16-
"a3m",
17-
"a3m-router",
18-
"adaptive-memory-multi-model-router",
19-
"llm-router",
20-
"llm-routing",
21-
"model-routing",
22-
"ai-router",
23-
"ai-gateway",
24-
"ai-routing",
25-
"routing",
17+
"llm",
2618
"router",
2719
"gateway",
28-
"multi-llm",
2920
"openai",
3021
"anthropic",
31-
"gemini",
32-
"claude",
33-
"gpt",
34-
"gpt-4",
35-
"llama",
36-
"llama-3",
37-
"deepseek",
38-
"mistral",
39-
"groq",
40-
"qwen",
41-
"kimi",
42-
"xai",
43-
"cohere",
22+
"multi-provider",
23+
"cost-optimization",
4424
"langchain",
45-
"vercel-ai",
4625
"llamaindex",
47-
"llamaindex-gateway",
48-
"cost-savings",
49-
"cost-reduction",
50-
"caching",
51-
"semantic-cache",
52-
"context-cache",
53-
"prompt-cache",
54-
"fallback",
55-
"failover",
56-
"smart-fallback",
57-
"smart-failover",
58-
"guardrails",
59-
"ai-guardrails",
60-
"circuit-breaker",
61-
"streaming",
62-
"streaming-llm",
63-
"retry",
64-
"ai-agent",
65-
"multi-agent",
66-
"autonomous-agents",
67-
"rag",
68-
"chatbot",
69-
"ai-coding",
70-
"code-generation",
71-
"text-generation",
72-
"extraction",
73-
"summarization",
74-
"smart-routing",
75-
"semantic-routing",
76-
"tier-routing",
77-
"intent-routing",
78-
"content-routing",
79-
"dynamic-routing",
80-
"adaptive-routing",
81-
"load-balancer",
82-
"load-balancing",
83-
"parallel-execution",
84-
"multi-model",
85-
"multi-provider",
86-
"openai-compatible",
87-
"openai-gateway",
88-
"openai-proxy",
26+
"agentkit",
27+
"a3m",
8928
"openrouter",
90-
"monitoring",
91-
"metrics",
92-
"observability",
93-
"health-check",
94-
"open-source",
95-
"self-hosted",
96-
"local-llm",
97-
"serverless",
98-
"cost-optimization",
99-
"token-optimization",
100-
"llm-cost",
101-
"token-saving",
102-
"cost-analytics",
103-
"cost-tracking",
104-
"budget-alerts",
105-
"cache",
106-
"chatgpt",
107-
"agent",
108-
"low-cost-llm",
109-
"cheaper-llm",
110-
"provider-failover",
111-
"response-cache",
112-
"llm-failover",
113-
"api-cost-reduction",
114-
"multi-llm-router",
115-
"multi-model-router",
116-
"llm-proxy",
29+
"litellm",
30+
"proxy",
11731
"api-gateway",
118-
"reverse-proxy",
119-
"kubernetes",
120-
"docker",
121-
"browser-automation",
122-
"playwright",
123-
"puppeteer",
124-
"web-scraping",
125-
"anti-detection",
126-
"stealth-browser",
127-
"crawling",
128-
"text-extraction",
129-
"data-extraction",
130-
"form-filling",
131-
"content-generation",
132-
"model-selection",
133-
"provider-aggregation",
134-
"langchain-adapter",
135-
"llamaindex-adapter",
136-
"vector-search",
32+
"artificial-intelligence",
33+
"machine-learning",
34+
"nlp",
35+
"transformers",
13736
"embeddings",
138-
"nvidia-nim",
139-
"ollama",
140-
"vllm"
37+
"rag",
38+
"vector-search"
14139
],
14240
"repository": {
14341
"type": "git",
14442
"url": "https://github.com/Das-rebel/a3m-router"
14543
},
146-
"homepage": "https://das-rebel.github.io/a3m-router/",
44+
"homepage": "https://github.com/Das-rebel/a3m-router#readme",
14745
"dependencies": {
14846
"blessed": "^0.1.81",
14947
"nanoid": "^6.0.0"
@@ -152,7 +50,18 @@
15250
"node": ">=18.0.0"
15351
},
15452
"devDependencies": {
155-
"@types/node": "^26.1.2",
156-
"typescript": "^7.0.2"
157-
}
158-
}
53+
"@types/express": "^5.0.6",
54+
"@types/jest": "^30.0.0",
55+
"@types/node": "^26.2.0",
56+
"typescript": "^7.0.2",
57+
"vitest": "^4.1.10"
58+
},
59+
"funding": {
60+
"type": "github",
61+
"url": "https://github.com/sponsors/Das-rebel"
62+
},
63+
"bugs": {
64+
"url": "https://github.com/Das-rebel/a3m-router/issues"
65+
},
66+
"py\u6fee": "https://pypi.org/project/a3m-router/"
67+
}

‎python/pyproject.toml‎

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,10 +61,13 @@ adapters = [
6161
dev = ["pytest>=7.4.0", "pytest-asyncio>=0.21.0", "black>=23.0.0"]
6262

6363
[project.urls]
64-
Homepage = "https://github.com/Das-rebel/a3m-router"
65-
Documentation = "https://das-rebel.github.io/a3m-router"
64+
Homepage = "https://github.com/Das-rebel/a3m-router#a3m-router"
65+
Documentation = "https://github.com/Das-rebel/a3m-router#readme"
6666
Repository = "https://github.com/Das-rebel/a3m-router"
6767
Changelog = "https://github.com/Das-rebel/a3m-router/releases"
68+
"NPM Package" = "https://www.npmjs.com/package/adaptive-memory-multi-model-router"
69+
"PyPI Package" = "https://pypi.org/project/a3m-router/"
70+
"GitHub Stars" = "https://github.com/Das-rebel/a3m-router/stargazers"
6871

6972
[tool.setuptools.packages.find]
7073
where = ["."]

0 commit comments

Comments
 (0)