adaptive-memory-multi-model-router 2.13.4 → 2.13.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/ISSUE_TEMPLATE/config.yml +2 -2
- package/.well-known/ai-plugin.json +1 -1
- package/CONTRIBUTING.md +1 -1
- package/LAUNCH-PAIN-DRIVEN.md +3 -3
- package/LAUNCH.md +7 -7
- package/POPULARITY_BOOSTERS.md +6 -6
- package/README.md +34 -34
- package/README_ja.md +1 -1
- package/README_zh.md +1 -1
- package/SUBMISSIONS.md +2 -2
- package/articles/DEVTO_COST_GUIDE.md +2 -2
- package/articles/DEVTO_FINAL.md +6 -6
- package/articles/DEVTO_MULTI_PROVIDER.md +4 -4
- package/articles/DEVTO_V2_ANNOUNCEMENT.md +2 -2
- package/articles/DEVTO_VIRAL_GROWTH.md +5 -5
- package/articles/FRESH_devto.md +1 -1
- package/articles/FRESH_hackernews.md +1 -1
- package/articles/FRESH_reddit_ml.md +1 -1
- package/articles/FRESH_reddit_node.md +2 -2
- package/articles/FRESH_reddit_sideproject.md +2 -2
- package/articles/FRESH_reddit_webdev.md +2 -2
- package/articles/HN_10X_BETTER.md +2 -2
- package/articles/HN_CHINESE_STYLE.md +5 -5
- package/articles/HN_FINAL.md +1 -1
- package/articles/HN_POSTED_VERSION.md +1 -1
- package/articles/PAIN-DRIVEN-devto-v2.md +2 -2
- package/articles/PAIN-DRIVEN-devto-v3.md +2 -2
- package/articles/PAIN-DRIVEN-devto.md +2 -2
- package/articles/PAIN-DRIVEN-hackernews-v2.md +2 -2
- package/articles/PAIN-DRIVEN-hackernews-v3.md +3 -3
- package/articles/PAIN-DRIVEN-hackernews.md +2 -2
- package/articles/PAIN-DRIVEN-reddit-v2.md +2 -2
- package/articles/PAIN-DRIVEN-reddit-v3.md +2 -2
- package/articles/PAIN-DRIVEN-reddit.md +2 -2
- package/articles/PAIN-DRIVEN-twitter-v2.md +2 -2
- package/articles/PAIN-DRIVEN-twitter-v3.md +2 -2
- package/articles/PAIN-DRIVEN-twitter.md +2 -2
- package/articles/REDDIT_FINAL.md +2 -2
- package/articles/TWITTER_FINAL.md +1 -1
- package/articles/ai-discoverability-llm-routing.md +1 -1
- package/articles/devto-llm-routing.md +2 -2
- package/articles/hackernews-show-hn.md +1 -1
- package/articles/hashnode-llm-cost-optimization.md +1 -1
- package/articles/medium-building-llm-router.md +1 -1
- package/articles/reddit-ml.md +1 -1
- package/articles/twitter-thread-cost-savings.md +1 -1
- package/articles/youtube-tutorial-script.md +1 -1
- package/demo.html +1 -1
- package/dist/cli/setupWizard.js +1 -1
- package/dist/cli.js +1 -1
- package/dist/geo/generativeEngineOptimization.js +1 -1
- package/docs/HN_CHECKLIST.md +2 -2
- package/docs/HN_SUBMISSION_FINAL.md +2 -2
- package/docs/HN_SUBMISSION_V3.md +3 -3
- package/docs/SEO_AUDIT.md +1 -1
- package/docs/UPDATE_TOPICS.md +1 -1
- package/docs/demo-auto.html +1 -1
- package/docs/demo.html +1 -1
- package/docs/index.html +1 -1
- package/docs/openapi.json +1 -1
- package/docs-site/index.html +7 -7
- package/index.html +4 -4
- package/llms-full.txt +1 -1
- package/llms.txt +1 -1
- package/package.json +4 -4
- package/playground/README.md +4 -4
- package/public/robots.txt +1 -1
- package/python/pyproject.toml +1 -1
- package/src/cli/setupWizard.ts +1 -1
- package/tmlpd-pi-extension/README.md +1 -1
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
blank_issues_enabled: false
|
|
2
2
|
contact_links:
|
|
3
3
|
- name: 📖 Documentation
|
|
4
|
-
url: https://github.com/Das-rebel/
|
|
4
|
+
url: https://github.com/Das-rebel/a3m-router#readme
|
|
5
5
|
about: Check the README for usage examples and API documentation
|
|
6
6
|
- name: 💬 Discussions
|
|
7
|
-
url: https://github.com/Das-rebel/
|
|
7
|
+
url: https://github.com/Das-rebel/a3m-router/discussions
|
|
8
8
|
about: Ask questions and share ideas in our community forum
|
|
9
9
|
- name: 🚀 NPM Package
|
|
10
10
|
url: https://www.npmjs.com/package/adaptive-memory-multi-model-router
|
package/CONTRIBUTING.md
CHANGED
|
@@ -21,7 +21,7 @@ Thank you for your interest in contributing!
|
|
|
21
21
|
## Development Setup
|
|
22
22
|
|
|
23
23
|
```bash
|
|
24
|
-
git clone https://github.com/Das-rebel/
|
|
24
|
+
git clone https://github.com/Das-rebel/a3m-router.git
|
|
25
25
|
cd adaptive-memory-multi-model-router
|
|
26
26
|
npm install
|
|
27
27
|
npm test
|
package/LAUNCH-PAIN-DRIVEN.md
CHANGED
|
@@ -145,7 +145,7 @@ npm install adaptive-memory-multi-model-router
|
|
|
145
145
|
npx a3m-router route "Your query"
|
|
146
146
|
```
|
|
147
147
|
|
|
148
|
-
GitHub: https://github.com/Das-rebel/
|
|
148
|
+
GitHub: https://github.com/Das-rebel/a3m-router
|
|
149
149
|
|
|
150
150
|
What's your current LLM spend?
|
|
151
151
|
```
|
|
@@ -277,7 +277,7 @@ What's your current LLM spend?
|
|
|
277
277
|
- Twitter: https://analytics.twitter.com/
|
|
278
278
|
- Reddit: Post notifications
|
|
279
279
|
- NPM: https://npm-stat.com/
|
|
280
|
-
- GitHub: https://github.com/Das-rebel/
|
|
280
|
+
- GitHub: https://github.com/Das-rebel/a3m-router/graphs/traffic
|
|
281
281
|
|
|
282
282
|
---
|
|
283
283
|
|
|
@@ -298,7 +298,7 @@ We were paying $2,400/month. Cut it to $720 with intelligent routing.
|
|
|
298
298
|
|
|
299
299
|
npm install adaptive-memory-multi-model-router
|
|
300
300
|
|
|
301
|
-
GitHub: github.com/Das-rebel/
|
|
301
|
+
GitHub: github.com/Das-rebel/a3m-router
|
|
302
302
|
|
|
303
303
|
Try the playground: [link]
|
|
304
304
|
|
package/LAUNCH.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
- **Name**: `adaptive-memory-multi-model-router`
|
|
5
5
|
- **Version**: 2.0.7
|
|
6
6
|
- **NPM**: https://www.npmjs.com/package/adaptive-memory-multi-model-router
|
|
7
|
-
- **GitHub**: https://github.com/Das-rebel/
|
|
7
|
+
- **GitHub**: https://github.com/Das-rebel/a3m-router
|
|
8
8
|
- **Core Claim**: 99.5% routing accuracy, zero ML. Matches RouteLLM's BERT within 2.5%.
|
|
9
9
|
|
|
10
10
|
---
|
|
@@ -57,7 +57,7 @@ Point any OpenAI SDK at localhost:8787. Zero code changes.
|
|
|
57
57
|
|
|
58
58
|
The question: if keyword matching gets you 97% of BERT accuracy, is the GPU worth it?
|
|
59
59
|
|
|
60
|
-
Repo: https://github.com/Das-rebel/
|
|
60
|
+
Repo: https://github.com/Das-rebel/a3m-router
|
|
61
61
|
```
|
|
62
62
|
|
|
63
63
|
**Best Time to Post**: Tuesday-Thursday, 8:30 AM EST
|
|
@@ -153,7 +153,7 @@ await router.route("Analyze legal contract"); // -> premium ($0.03)
|
|
|
153
153
|
```
|
|
154
154
|
npm install adaptive-memory-multi-model-router
|
|
155
155
|
|
|
156
|
-
GitHub: github.com/Das-rebel/
|
|
156
|
+
GitHub: github.com/Das-rebel/a3m-router
|
|
157
157
|
|
|
158
158
|
99.5% accuracy. Zero ML. Zero GPU.
|
|
159
159
|
Matches BERT within 2.5%. 61.6% cost savings. 40 providers.
|
|
@@ -221,7 +221,7 @@ Growth: 552 -> 320 -> 1,903 downloads in 3 days. 245% growth. Zero marketing.
|
|
|
221
221
|
|
|
222
222
|
npm install adaptive-memory-multi-model-router
|
|
223
223
|
|
|
224
|
-
GitHub: https://github.com/Das-rebel/
|
|
224
|
+
GitHub: https://github.com/Das-rebel/a3m-router
|
|
225
225
|
```
|
|
226
226
|
|
|
227
227
|
---
|
|
@@ -246,7 +246,7 @@ Growth: Day 1: 552, Day 2: 320, Day 3: 1,903 downloads. Zero marketing.
|
|
|
246
246
|
|
|
247
247
|
npm install adaptive-memory-multi-model-router
|
|
248
248
|
|
|
249
|
-
GitHub: https://github.com/Das-rebel/
|
|
249
|
+
GitHub: https://github.com/Das-rebel/a3m-router
|
|
250
250
|
```
|
|
251
251
|
|
|
252
252
|
---
|
|
@@ -276,7 +276,7 @@ Try it:
|
|
|
276
276
|
npm install adaptive-memory-multi-model-router
|
|
277
277
|
npx a3m-router serve
|
|
278
278
|
|
|
279
|
-
GitHub: https://github.com/Das-rebel/
|
|
279
|
+
GitHub: https://github.com/Das-rebel/a3m-router
|
|
280
280
|
```
|
|
281
281
|
|
|
282
282
|
**Topics**: Developer Tools, AI, API, Open Source, JavaScript
|
|
@@ -329,7 +329,7 @@ GitHub: https://github.com/Das-rebel/adaptive-memory-multi-model-router
|
|
|
329
329
|
|
|
330
330
|
## SUPPORT
|
|
331
331
|
|
|
332
|
-
- GitHub Issues: https://github.com/Das-rebel/
|
|
332
|
+
- GitHub Issues: https://github.com/Das-rebel/a3m-router/issues
|
|
333
333
|
- Email: Sdas22@gmail.com
|
|
334
334
|
|
|
335
335
|
---
|
package/POPULARITY_BOOSTERS.md
CHANGED
|
@@ -56,8 +56,8 @@
|
|
|
56
56
|
|
|
57
57
|
**Try it now:**
|
|
58
58
|
|
|
59
|
-
[](https://codesandbox.io/p/sandbox/github/Das-rebel/
|
|
60
|
-
[](https://stackblitz.com/github/Das-rebel/
|
|
59
|
+
[](https://codesandbox.io/p/sandbox/github/Das-rebel/a3m-router/tree/main/playground)
|
|
60
|
+
[](https://stackblitz.com/github/Das-rebel/a3m-router/tree/main/playground)
|
|
61
61
|
|
|
62
62
|
**What users can try:**
|
|
63
63
|
- See all 9 configured providers
|
|
@@ -196,7 +196,7 @@
|
|
|
196
196
|
|
|
197
197
|
3. **Post to Hacker News**
|
|
198
198
|
- Use "Show HN" format
|
|
199
|
-
- Link: `https://github.com/Das-rebel/
|
|
199
|
+
- Link: `https://github.com/Das-rebel/a3m-router`
|
|
200
200
|
- Text from `articles/hackernews-show-hn.md`
|
|
201
201
|
|
|
202
202
|
### This Week
|
|
@@ -259,11 +259,11 @@
|
|
|
259
259
|
|
|
260
260
|
| Resource | URL |
|
|
261
261
|
|----------|-----|
|
|
262
|
-
| **GitHub Repo** | https://github.com/Das-rebel/
|
|
262
|
+
| **GitHub Repo** | https://github.com/Das-rebel/a3m-router |
|
|
263
263
|
| **NPM Package** | https://www.npmjs.com/package/adaptive-memory-multi-model-router |
|
|
264
264
|
| **GitHub Pages** | https://das-rebel.github.io/adaptive-memory-multi-model-router/ (after activation) |
|
|
265
|
-
| **CodeSandbox** | https://codesandbox.io/p/sandbox/github/Das-rebel/
|
|
266
|
-
| **StackBlitz** | https://stackblitz.com/github/Das-rebel/
|
|
265
|
+
| **CodeSandbox** | https://codesandbox.io/p/sandbox/github/Das-rebel/a3m-router/tree/main/playground |
|
|
266
|
+
| **StackBlitz** | https://stackblitz.com/github/Das-rebel/a3m-router/tree/main/playground |
|
|
267
267
|
|
|
268
268
|
---
|
|
269
269
|
|
package/README.md
CHANGED
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
|
|
5
5
|
[](https://www.npmjs.com/package/adaptive-memory-multi-model-router)
|
|
6
6
|
[](https://www.npmjs.com/package/adaptive-memory-multi-model-router)
|
|
7
|
-
[](https://github.com/Das-rebel/a3m-router)
|
|
8
|
+
[](https://github.com/Das-rebel/a3m-router/actions)
|
|
9
9
|
[](./LICENSE)
|
|
10
10
|
|
|
11
11
|
> **The only open-source LLM router with parallel multi-LLM execution and independent benchmarks.** 47+ providers. 99.5% routing accuracy. 62% cost savings. Third-party latency data included. Zero ML, 19.5KB.
|
|
@@ -63,7 +63,7 @@ npx a3m-router serve # OpenAI proxy at localhost:87
|
|
|
63
63
|
|
|
64
64
|
[](https://www.npmjs.com/package/adaptive-memory-multi-model-router)
|
|
65
65
|
[](https://www.npmjs.com/package/adaptive-memory-multi-model-router)
|
|
66
|
-
[](https://github.com/Das-rebel/a3m-router/blob/main/LICENSE)
|
|
67
67
|
|
|
68
68
|
---
|
|
69
69
|
> ⚡️ **A3M Router** — Intelligent LLM gateway with semantic routing, load balancing, circuit breakers, and cost-based routing. 99.5% routing accuracy. Save 62% on API costs. Zero ML, starts in <100ms.
|
|
@@ -74,9 +74,9 @@ npx a3m-router serve # OpenAI proxy at localhost:87
|
|
|
74
74
|
### Used By
|
|
75
75
|
|
|
76
76
|

|
|
77
|
-
[](https://github.com/Das-rebel/a3m-router)
|
|
78
78
|
|
|
79
|
-
*We track usage but don't collect personal data. If you're using A3M Router, [let us know](https://github.com/Das-rebel/
|
|
79
|
+
*We track usage but don't collect personal data. If you're using A3M Router, [let us know](https://github.com/Das-rebel/a3m-router/discussions)!*
|
|
80
80
|
|
|
81
81
|
|
|
82
82
|
|
|
@@ -234,7 +234,7 @@ For **generative engine optimization** — synthesizing multiple AI models into
|
|
|
234
234
|
### TypeScript SDK
|
|
235
235
|
|
|
236
236
|
```typescript
|
|
237
|
-
|
|
237
|
+
adaptive-memory-multi-model-router/sdk';
|
|
238
238
|
|
|
239
239
|
const router = new A3MRouter();
|
|
240
240
|
|
|
@@ -441,7 +441,7 @@ Route: pick cheapest available model in the assigned tier, with +2 fallback mode
|
|
|
441
441
|
| `"Design oncology trial"` | medical +0.35, design +0.20, steps +0.15 | 1.00 | premium | gpt-4o ($2.50/M) |
|
|
442
442
|
|
|
443
443
|
```typescript
|
|
444
|
-
|
|
444
|
+
adaptive-memory-multi-model-router';
|
|
445
445
|
|
|
446
446
|
// See exactly what signals a query triggers
|
|
447
447
|
const features = extractQueryFeatures("Review this contract for liability clauses");
|
|
@@ -573,7 +573,7 @@ Where `C = √2 ≈ 1.414` is the exploration constant.
|
|
|
573
573
|
After N iterations, the node with the highest average reward is the best strategy.
|
|
574
574
|
|
|
575
575
|
```typescript
|
|
576
|
-
|
|
576
|
+
adaptive-memory-multi-model-router/orchestration';
|
|
577
577
|
|
|
578
578
|
const optimizer = new MCTSWorkflowOptimizer({
|
|
579
579
|
maxIterations: 50, // tree search depth
|
|
@@ -704,7 +704,7 @@ Router assigns each sub-task to optimal agent, tracks outcomes, learns preferenc
|
|
|
704
704
|
**Per-User/Team Budgets with Hard Caps + Real-Time Dashboard**
|
|
705
705
|
|
|
706
706
|
```typescript
|
|
707
|
-
|
|
707
|
+
adaptive-memory-multi-model-router/billing';
|
|
708
708
|
|
|
709
709
|
const budgets = new BudgetManager({
|
|
710
710
|
monthlyLimit: 500, // $500/month hard cap
|
|
@@ -732,8 +732,8 @@ budgets.getSpendBreakdown();
|
|
|
732
732
|
**Provider Health Scoring + Circuit Breaker + Chinese Provider Handling**
|
|
733
733
|
|
|
734
734
|
```typescript
|
|
735
|
-
|
|
736
|
-
|
|
735
|
+
adaptive-memory-multi-model-router/failover';
|
|
736
|
+
adaptive-memory-multi-model-router/failover';
|
|
737
737
|
|
|
738
738
|
// Provider health scoring
|
|
739
739
|
const health = new HealthScoreManager({
|
|
@@ -769,7 +769,7 @@ const chineseHandler = new ChineseProviderHandler({
|
|
|
769
769
|
**Embedding-Based Cache Lookup + Per-Route TTL + Configurable Similarity**
|
|
770
770
|
|
|
771
771
|
```typescript
|
|
772
|
-
|
|
772
|
+
adaptive-memory-multi-model-router/cache';
|
|
773
773
|
|
|
774
774
|
const cache = new SemanticCache({
|
|
775
775
|
maxSize: 1000, // max entries
|
|
@@ -795,7 +795,7 @@ cache.getStats(); // { hits: 1, misses: 1, hitRate: 0.5, size: 1 }
|
|
|
795
795
|
**Custom Timeout + Exponential Backoff + Rate Limit Detection**
|
|
796
796
|
|
|
797
797
|
```typescript
|
|
798
|
-
|
|
798
|
+
adaptive-memory-multi-model-router/retry';
|
|
799
799
|
|
|
800
800
|
const retry = new RetryManager({
|
|
801
801
|
providers: {
|
|
@@ -820,7 +820,7 @@ retry.execute('groq', () => callGroq());
|
|
|
820
820
|
Run every query against multiple providers simultaneously. Score each result on specificity, structure, and relevance. Return the best answer with transparent reasoning about why it was chosen.
|
|
821
821
|
|
|
822
822
|
```typescript
|
|
823
|
-
|
|
823
|
+
adaptive-memory-multi-model-router/ensemble';
|
|
824
824
|
|
|
825
825
|
const result = await executeEnsemble(
|
|
826
826
|
"Explain how vector databases work",
|
|
@@ -844,7 +844,7 @@ console.log(result.allResults.groq); // → groq's answer (available if needed)
|
|
|
844
844
|
|
|
845
845
|
```typescript
|
|
846
846
|
// Track historical accuracy per provider
|
|
847
|
-
|
|
847
|
+
adaptive-memory-multi-model-router/ensemble';
|
|
848
848
|
|
|
849
849
|
let history = {};
|
|
850
850
|
history = recordFeedback('nvidia', true, history); // good answer
|
|
@@ -867,7 +867,7 @@ Route queries to the optimal provider and temperature based on task type — no
|
|
|
867
867
|
| 📖 Factual | Groq | 0.2 | ❌ | Definitions, facts |
|
|
868
868
|
|
|
869
869
|
```typescript
|
|
870
|
-
|
|
870
|
+
adaptive-memory-multi-model-router/presets';
|
|
871
871
|
|
|
872
872
|
const router = createPresetRouter();
|
|
873
873
|
|
|
@@ -882,7 +882,7 @@ preset.maxTokens; // → 3000
|
|
|
882
882
|
preset.timeoutMs; // → 45000
|
|
883
883
|
|
|
884
884
|
// Customize presets for your workload
|
|
885
|
-
|
|
885
|
+
adaptive-memory-multi-model-router/presets';
|
|
886
886
|
|
|
887
887
|
const customRouter = createPresetRouter({
|
|
888
888
|
...DEFAULT_PRESETS,
|
|
@@ -897,7 +897,7 @@ const customRouter = createPresetRouter({
|
|
|
897
897
|
Agent execution memories persist across CLI or API sessions via a local JSON file. Auto-saves after every 3 entries. Full keyword index rebuilt on load.
|
|
898
898
|
|
|
899
899
|
```typescript
|
|
900
|
-
|
|
900
|
+
adaptive-memory-multi-model-router/memory';
|
|
901
901
|
|
|
902
902
|
// Pass a file path to enable persistence
|
|
903
903
|
const memory = new EpisodicMemoryStore(1000, './.a3m-memory.json');
|
|
@@ -997,29 +997,29 @@ Full API docs: [`docs/API.md`](docs/API.md)
|
|
|
997
997
|
|
|
998
998
|
```typescript
|
|
999
999
|
// Main — everything
|
|
1000
|
-
|
|
1000
|
+
adaptive-memory-multi-model-router';
|
|
1001
1001
|
|
|
1002
1002
|
// SDK — clean high-level API
|
|
1003
|
-
|
|
1003
|
+
adaptive-memory-multi-model-router/sdk';
|
|
1004
1004
|
|
|
1005
1005
|
// Individual modules
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1006
|
+
adaptive-memory-multi-model-router/cache';
|
|
1007
|
+
adaptive-memory-multi-model-router/guardrails';
|
|
1008
|
+
adaptive-memory-multi-model-router/cost';
|
|
1009
|
+
adaptive-memory-multi-model-router/analytics';
|
|
1010
|
+
adaptive-memory-multi-model-router/memory';
|
|
1011
|
+
adaptive-memory-multi-model-router/langchain';
|
|
1012
|
+
adaptive-memory-multi-model-router/providers';
|
|
1013
|
+
adaptive-memory-multi-model-router/server';
|
|
1014
1014
|
|
|
1015
1015
|
// Ensemble (P0) — core differentiator
|
|
1016
|
-
|
|
1016
|
+
adaptive-memory-multi-model-router/ensemble';
|
|
1017
1017
|
|
|
1018
1018
|
// Query-type presets (P1)
|
|
1019
|
-
|
|
1019
|
+
adaptive-memory-multi-model-router/presets';
|
|
1020
1020
|
|
|
1021
1021
|
// Persistent memory (P3)
|
|
1022
|
-
|
|
1022
|
+
adaptive-memory-multi-model-router/memory';
|
|
1023
1023
|
```
|
|
1024
1024
|
|
|
1025
1025
|
---
|
|
@@ -1055,11 +1055,11 @@ These features are on our roadmap based on user feedback:
|
|
|
1055
1055
|
## Links
|
|
1056
1056
|
|
|
1057
1057
|
- [npm package](https://www.npmjs.com/package/adaptive-memory-multi-model-router)
|
|
1058
|
-
- [GitHub repo](https://github.com/Das-rebel/
|
|
1058
|
+
- [GitHub repo](https://github.com/Das-rebel/a3m-router)
|
|
1059
1059
|
- [API Reference](docs/API.md)
|
|
1060
1060
|
- [Architecture](docs/ARCHITECTURAL-IMPROVEMENTS-2025.md)
|
|
1061
|
-
- [Discussions](https://github.com/Das-rebel/
|
|
1062
|
-
- [Contributing](CONTRIBUTING.md) · [Good first issues](https://github.com/Das-rebel/
|
|
1061
|
+
- [Discussions](https://github.com/Das-rebel/a3m-router/discussions)
|
|
1062
|
+
- [Contributing](CONTRIBUTING.md) · [Good first issues](https://github.com/Das-rebel/a3m-router/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22)
|
|
1063
1063
|
|
|
1064
1064
|
MIT License. No vendor lock-in. No account required. `npm install` and go.
|
|
1065
1065
|
|
package/README_ja.md
CHANGED
|
@@ -26,7 +26,7 @@ OpenAI SDKを`http://localhost:8787/v1`に向けるだけで、コード変更
|
|
|
26
26
|
|
|
27
27
|
## オープンソース
|
|
28
28
|
|
|
29
|
-
- **GitHub**: https://github.com/Das-rebel/
|
|
29
|
+
- **GitHub**: https://github.com/Das-rebel/a3m-router
|
|
30
30
|
- **npm**: https://www.npmjs.com/package/adaptive-memory-multi-model-router
|
|
31
31
|
|
|
32
32
|
MITライセンス。
|
package/README_zh.md
CHANGED
|
@@ -48,7 +48,7 @@ npx a3m-router serve # 启动代理
|
|
|
48
48
|
|
|
49
49
|
## 开源地址
|
|
50
50
|
|
|
51
|
-
- **GitHub**: https://github.com/Das-rebel/
|
|
51
|
+
- **GitHub**: https://github.com/Das-rebel/a3m-router
|
|
52
52
|
- **npm**: https://www.npmjs.com/package/adaptive-memory-multi-model-router
|
|
53
53
|
- **文档**: https://das-rebel.github.io/adaptive-memory-multi-model-router/
|
|
54
54
|
|
package/SUBMISSIONS.md
CHANGED
|
@@ -7,7 +7,7 @@ PR: https://github.com/12britz/awesome-ai-gateways/edit/main/README.md
|
|
|
7
7
|
|
|
8
8
|
Add after "Ferro Labs AI Gateway" line:
|
|
9
9
|
```
|
|
10
|
-
- [A3M Router](https://github.com/Das-rebel/
|
|
10
|
+
- [A3M Router](https://github.com/Das-rebel/a3m-router) - Open-source LLM gateway with 100% routing accuracy, 47+ providers, zero ML, and Chinese provider support. MIT license.
|
|
11
11
|
```
|
|
12
12
|
|
|
13
13
|
---
|
|
@@ -20,7 +20,7 @@ PR: https://github.com/awesome-selfhosted/awesome-selfhosted/edit/master/README.
|
|
|
20
20
|
Section: Generative Artificial Intelligence (GenAI)
|
|
21
21
|
Add after existing LLM entries:
|
|
22
22
|
```
|
|
23
|
-
- [A3M Router](https://github.com/Das-rebel/
|
|
23
|
+
- [A3M Router](https://github.com/Das-rebel/a3m-router) - OpenAI-compatible LLM gateway with zero ML, 100% routing accuracy, and 47+ providers. ([Source Code](https://github.com/Das-rebel/a3m-router)) `MIT` `Nodejs`
|
|
24
24
|
```
|
|
25
25
|
|
|
26
26
|
---
|
|
@@ -4,7 +4,7 @@ published: true
|
|
|
4
4
|
description: "Step-by-step guide to reducing LLM API costs by 70% with intelligent routing"
|
|
5
5
|
tags: node, javascript, ai, webdev
|
|
6
6
|
cover_image:
|
|
7
|
-
canonical_url: https://github.com/Das-rebel/
|
|
7
|
+
canonical_url: https://github.com/Das-rebel/a3m-router
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# Stop Overpaying for LLM APIs: A Practical Cost Optimization Guide
|
|
@@ -450,7 +450,7 @@ tracker.onAlert(alert => console.warn('Budget alert:', alert));
|
|
|
450
450
|
```
|
|
451
451
|
|
|
452
452
|
**Links:**
|
|
453
|
-
- GitHub: [Das-rebel/
|
|
453
|
+
- GitHub: [Das-rebel/a3m-router](https://github.com/Das-rebel/a3m-router)
|
|
454
454
|
- NPM: [adaptive-memory-multi-model-router](https://www.npmjs.com/package/adaptive-memory-multi-model-router)
|
|
455
455
|
- License: MIT
|
|
456
456
|
|
package/articles/DEVTO_FINAL.md
CHANGED
|
@@ -3,7 +3,7 @@ title: "I Benchmarked 47 LLM Providers Against Real Queries - Here's What I Foun
|
|
|
3
3
|
published: true
|
|
4
4
|
description: "After testing 47 providers across 12,847 real queries, I built an open-source router that cuts LLM costs by 70%. Full data, code examples, and step-by-step setup inside."
|
|
5
5
|
tags: node, javascript, ai, llm, webdev
|
|
6
|
-
canonical_url: https://github.com/Das-rebel/
|
|
6
|
+
canonical_url: https://github.com/Das-rebel/a3m-router
|
|
7
7
|
cover_image: https://dev-to-uploads.s3.amazonaws.com/uploads/articles/placeholder.png
|
|
8
8
|
---
|
|
9
9
|
|
|
@@ -123,7 +123,7 @@ Multilingual → GLM-4 ($2.80/1M) -- beats GPT-4 at 1/10th cost
|
|
|
123
123
|
|
|
124
124
|
## Building a Smart Router
|
|
125
125
|
|
|
126
|
-
Manually switching providers per query is not sustainable. I needed automation. So I built [A3M Router](https://github.com/Das-rebel/
|
|
126
|
+
Manually switching providers per query is not sustainable. I needed automation. So I built [A3M Router](https://github.com/Das-rebel/a3m-router) -- an open-source routing layer with all the benchmark data baked in.
|
|
127
127
|
|
|
128
128
|
### How It Works
|
|
129
129
|
|
|
@@ -359,7 +359,7 @@ This was the biggest takeaway. No single provider wins across all categories. GP
|
|
|
359
359
|
|
|
360
360
|
No installation needed. Test routing decisions right in your browser:
|
|
361
361
|
|
|
362
|
-
[CodeSandbox Playground](https://codesandbox.io/p/sandbox/github/Das-rebel/
|
|
362
|
+
[CodeSandbox Playground](https://codesandbox.io/p/sandbox/github/Das-rebel/a3m-router/tree/main/playground)
|
|
363
363
|
|
|
364
364
|
### Quick Start
|
|
365
365
|
|
|
@@ -379,9 +379,9 @@ npx a3m-router compare "Write a binary search in Python"
|
|
|
379
379
|
|
|
380
380
|
### Links
|
|
381
381
|
|
|
382
|
-
- **GitHub:** [Das-rebel/
|
|
382
|
+
- **GitHub:** [Das-rebel/a3m-router](https://github.com/Das-rebel/a3m-router)
|
|
383
383
|
- **NPM:** [adaptive-memory-multi-model-router](https://www.npmjs.com/package/adaptive-memory-multi-model-router)
|
|
384
|
-
- **Full Benchmark Data:** [docs/BENCHMARK_DATA.md](https://github.com/Das-rebel/
|
|
384
|
+
- **Full Benchmark Data:** [docs/BENCHMARK_DATA.md](https://github.com/Das-rebel/a3m-router/blob/main/docs/BENCHMARK_DATA.md)
|
|
385
385
|
- **License:** MIT (code and data)
|
|
386
386
|
|
|
387
387
|
### Stats
|
|
@@ -397,7 +397,7 @@ npx a3m-router compare "Write a binary search in Python"
|
|
|
397
397
|
|
|
398
398
|
I'm sharing the full benchmark dataset because keeping it proprietary defeats the purpose of doing the research. Use it to build your own router, validate my findings, or find providers I missed.
|
|
399
399
|
|
|
400
|
-
**Full dataset:** [BENCHMARK_DATA.md](https://github.com/Das-rebel/
|
|
400
|
+
**Full dataset:** [BENCHMARK_DATA.md](https://github.com/Das-rebel/a3m-router/blob/main/docs/BENCHMARK_DATA.md)
|
|
401
401
|
|
|
402
402
|
Includes all 47 providers, 12,847 query results, cost/latency/quality breakdowns, and query-type-specific recommendations.
|
|
403
403
|
|
|
@@ -4,7 +4,7 @@ published: true
|
|
|
4
4
|
description: "Learn to build an LLM routing system from scratch, then upgrade to A3M Router for production"
|
|
5
5
|
tags: node, javascript, tutorial, beginners
|
|
6
6
|
cover_image:
|
|
7
|
-
canonical_url: https://github.com/Das-rebel/
|
|
7
|
+
canonical_url: https://github.com/Das-rebel/a3m-router
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# How to Build a Multi-Provider LLM Router in 50 Lines of Code
|
|
@@ -263,7 +263,7 @@ Production routers learn from outcomes. They track quality scores per provider p
|
|
|
263
263
|
|
|
264
264
|
## The Production Upgrade: A3M Router
|
|
265
265
|
|
|
266
|
-
This is exactly why I built [A3M Router](https://github.com/Das-rebel/
|
|
266
|
+
This is exactly why I built [A3M Router](https://github.com/Das-rebel/a3m-router). It handles the problems above so you don't have to.
|
|
267
267
|
|
|
268
268
|
### The 3-Line Equivalent
|
|
269
269
|
|
|
@@ -330,7 +330,7 @@ No maintenance. The provider registry stays current:
|
|
|
330
330
|
| Ollama | llama3, mistral (local) | **Free** | varies |
|
|
331
331
|
| xAI | grok-2 | $2.00 - $10.00 | 1.2s |
|
|
332
332
|
|
|
333
|
-
Plus Together, vLLM, LM Studio, and DeepSeek. [Full list in the docs](https://github.com/Das-rebel/
|
|
333
|
+
Plus Together, vLLM, LM Studio, and DeepSeek. [Full list in the docs](https://github.com/Das-rebel/a3m-router).
|
|
334
334
|
|
|
335
335
|
---
|
|
336
336
|
|
|
@@ -533,7 +533,7 @@ console.log(result.output, result.provider, result.cost);
|
|
|
533
533
|
That's it. 872+ weekly downloads, MIT licensed, 12 providers, zero config to start.
|
|
534
534
|
|
|
535
535
|
**Links:**
|
|
536
|
-
- GitHub: [github.com/Das-rebel/
|
|
536
|
+
- GitHub: [github.com/Das-rebel/a3m-router](https://github.com/Das-rebel/a3m-router)
|
|
537
537
|
- NPM: [npmjs.com/package/adaptive-memory-multi-model-router](https://www.npmjs.com/package/adaptive-memory-multi-model-router)
|
|
538
538
|
- Research: Based on [RouteLLM](https://arxiv.org/abs/2404.06035), [RadixAttention](https://arxiv.org/abs/2312.07104), [Medusa](https://arxiv.org/abs/2401.10774)
|
|
539
539
|
|
|
@@ -3,7 +3,7 @@ title: "A3M Router v2.0: Now an OpenAI-Compatible AI Gateway with 39 Providers
|
|
|
3
3
|
published: true
|
|
4
4
|
description: "Drop-in OpenAI proxy, LangChain adapter, guardrails, semantic cache, cost analytics, and 39 LLM providers — all in one npm package"
|
|
5
5
|
tags: node, javascript, ai, webdev
|
|
6
|
-
canonical_url: https://github.com/Das-rebel/
|
|
6
|
+
canonical_url: https://github.com/Das-rebel/a3m-router
|
|
7
7
|
---
|
|
8
8
|
|
|
9
9
|
We just shipped A3M Router v2.0.0 — the biggest update since launch.
|
|
@@ -149,7 +149,7 @@ node -e "const { createA3MRouter } = require('adaptive-memory-multi-model-router
|
|
|
149
149
|
|
|
150
150
|
## Links
|
|
151
151
|
|
|
152
|
-
- **GitHub**: https://github.com/Das-rebel/
|
|
152
|
+
- **GitHub**: https://github.com/Das-rebel/a3m-router
|
|
153
153
|
- **NPM**: https://www.npmjs.com/package/adaptive-memory-multi-model-router
|
|
154
154
|
- **872+ weekly downloads**
|
|
155
155
|
|
|
@@ -3,7 +3,7 @@ title: "2,775 Downloads in 3 Days With Zero Marketing Budget — Here's What Hap
|
|
|
3
3
|
published: true
|
|
4
4
|
description: "The honest growth story of an open-source LLM router: what worked, what failed, and why 1,903 people downloaded it yesterday"
|
|
5
5
|
tags: discuss, opensource, ai, webdev
|
|
6
|
-
canonical_url: https://github.com/Das-rebel/
|
|
6
|
+
canonical_url: https://github.com/Das-rebel/a3m-router
|
|
7
7
|
---
|
|
8
8
|
|
|
9
9
|
# 2,775 Downloads in 3 Days With Zero Marketing Budget — Here's What Happened
|
|
@@ -27,7 +27,7 @@ This is the story of what we did, what actually worked, what completely failed,
|
|
|
27
27
|
|
|
28
28
|
## What We Built
|
|
29
29
|
|
|
30
|
-
First, context. We built an open-source LLM router called [adaptive-memory-multi-model-router](https://github.com/Das-rebel/
|
|
30
|
+
First, context. We built an open-source LLM router called [adaptive-memory-multi-model-router](https://github.com/Das-rebel/a3m-router) (the name is terrible, I know — we're working on it). It does three things:
|
|
31
31
|
|
|
32
32
|
1. **Routes requests across 39 LLM providers** — OpenAI, Anthropic, Gemini, Groq, Cerebras, Mistral, DeepSeek, Ollama, and 30+ more
|
|
33
33
|
2. **Adaptive memory** — tracks which models work best for your use case and routes accordingly
|
|
@@ -247,7 +247,7 @@ const response = await client.chat.completions.create({
|
|
|
247
247
|
|
|
248
248
|
Same SDK. Same API. Different backend. That's the point.
|
|
249
249
|
|
|
250
|
-
**GitHub:** [github.com/Das-rebel/
|
|
250
|
+
**GitHub:** [github.com/Das-rebel/a3m-router](https://github.com/Das-rebel/a3m-router)
|
|
251
251
|
|
|
252
252
|
**NPM:** [npmjs.com/package/adaptive-memory-multi-model-router](https://www.npmjs.com/package/adaptive-memory-multi-model-router)
|
|
253
253
|
|
|
@@ -255,7 +255,7 @@ Same SDK. Same API. Different backend. That's the point.
|
|
|
255
255
|
|
|
256
256
|
The downloads are great, but downloads without community is just a number on a badge. Here's what we need:
|
|
257
257
|
|
|
258
|
-
1. **GitHub stars help discoverability.** If you tried A3M Router and it saved you money, a star on [GitHub](https://github.com/Das-rebel/
|
|
258
|
+
1. **GitHub stars help discoverability.** If you tried A3M Router and it saved you money, a star on [GitHub](https://github.com/Das-rebel/a3m-router) helps other developers find it.
|
|
259
259
|
|
|
260
260
|
2. **What providers do you need?** We have 39. But if your provider isn't listed, tell us. We'll add it.
|
|
261
261
|
|
|
@@ -277,4 +277,4 @@ The 2,775 downloads proved npm search is a viable growth channel. Now we're buil
|
|
|
277
277
|
|
|
278
278
|
---
|
|
279
279
|
|
|
280
|
-
*If this story was useful, follow along at [github.com/Das-rebel/
|
|
280
|
+
*If this story was useful, follow along at [github.com/Das-rebel/a3m-router](https://github.com/Das-rebel/a3m-router). Stars appreciated. Issues celebrated. PRs worshipped.*
|
package/articles/FRESH_devto.md
CHANGED
|
@@ -450,7 +450,7 @@ console.log(`Tier: ${result.tier}`);
|
|
|
450
450
|
console.log(`Cost: $${result.cost}`);
|
|
451
451
|
```
|
|
452
452
|
|
|
453
|
-
**GitHub:** https://github.com/Das-rebel/
|
|
453
|
+
**GitHub:** https://github.com/Das-rebel/a3m-router
|
|
454
454
|
**npm:** https://www.npmjs.com/package/adaptive-memory-multi-model-router
|
|
455
455
|
|
|
456
456
|
MIT license. Self-hosted. No account. 19.5 KB. TypeScript + Python SDKs, CLI, REST API, OpenAI proxy, LangChain adapter.
|
|
@@ -8,7 +8,7 @@ Supports 36 providers (OpenAI, Anthropic, Google, Groq, Cerebras, Mistral, DeepS
|
|
|
8
8
|
|
|
9
9
|
The core insight is that keyword-based routing is within ±1 tier of BERT-based routing for nearly all queries, at zero infrastructure cost. The routing signals are composable and adjustable — if a particular domain routes poorly, you add domain-specific patterns without retraining anything.
|
|
10
10
|
|
|
11
|
-
Repo: https://github.com/Das-rebel/
|
|
11
|
+
Repo: https://github.com/Das-rebel/a3m-router
|
|
12
12
|
npm: https://www.npmjs.com/package/adaptive-memory-multi-model-router
|
|
13
13
|
|
|
14
14
|
Caveat: the 99.5% figure is self-benchmarked. We'd welcome independent evaluation, especially on non-English or creative writing query distributions where the keyword signals may be weaker.
|
|
@@ -84,7 +84,7 @@ On the same query workload:
|
|
|
84
84
|
|
|
85
85
|
## Links
|
|
86
86
|
|
|
87
|
-
- **Repo:** https://github.com/Das-rebel/
|
|
87
|
+
- **Repo:** https://github.com/Das-rebel/a3m-router
|
|
88
88
|
- **npm:** https://www.npmjs.com/package/adaptive-memory-multi-model-router
|
|
89
89
|
|
|
90
90
|
The classifier is ~200 lines of TypeScript. No dependencies beyond a standard Node.js runtime. If you want to reproduce the benchmark or contribute a more rigorous evaluation, PRs welcome.
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
r/node — I want to show you the architecture behind a routing system that classifies LLM query complexity in 0.3ms, with zero ML runtime.
|
|
4
4
|
|
|
5
|
-
**GitHub:** https://github.com/Das-rebel/
|
|
5
|
+
**GitHub:** https://github.com/Das-rebel/a3m-router
|
|
6
6
|
**npm:** https://www.npmjs.com/package/adaptive-memory-multi-model-router
|
|
7
7
|
|
|
8
8
|
## The problem
|
|
@@ -190,7 +190,7 @@ function scoreToTier(score: number): Tier {
|
|
|
190
190
|
|
|
191
191
|
## Links
|
|
192
192
|
|
|
193
|
-
- **Source:** https://github.com/Das-rebel/
|
|
193
|
+
- **Source:** https://github.com/Das-rebel/a3m-router
|
|
194
194
|
- **npm:** https://www.npmjs.com/package/adaptive-memory-multi-model-router
|
|
195
195
|
|
|
196
196
|
MIT license. Self-hosted. No account. `npm install adaptive-memory-multi-model-router` and you're routing.
|
|
@@ -6,7 +6,7 @@ Hey r/SideProject — wanted to share something unexpected that happened with my
|
|
|
6
6
|
|
|
7
7
|
I built **A3M Router** — a TypeScript package that routes LLM queries to the cheapest provider that can handle them. 36 providers, 5 complexity tiers, semantic caching, injection guardrails. The whole package is 19.5 KB gzipped. MIT license, no account needed, self-hosted.
|
|
8
8
|
|
|
9
|
-
Repo: https://github.com/Das-rebel/
|
|
9
|
+
Repo: https://github.com/Das-rebel/a3m-router
|
|
10
10
|
npm: https://www.npmjs.com/package/adaptive-memory-multi-model-router
|
|
11
11
|
|
|
12
12
|
## The surprising part: the downloads
|
|
@@ -68,5 +68,5 @@ If you're building a dev tool, **take npm keyword search seriously**. It's an or
|
|
|
68
68
|
|
|
69
69
|
Happy to answer questions about the routing algorithm, the npm discovery, or the architecture.
|
|
70
70
|
|
|
71
|
-
GitHub: https://github.com/Das-rebel/
|
|
71
|
+
GitHub: https://github.com/Das-rebel/a3m-router
|
|
72
72
|
npm: https://www.npmjs.com/package/adaptive-memory-multi-model-router
|