adaptive-memory-multi-model-router 2.15.4 → 2.16.0
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/AGENT_COUNCIL_FINDINGS.md +123 -98
- package/CAMPAIGN_SUMMARY.md +87 -0
- package/CHANGELOG.md +7 -1
- package/ENTERPRISE_INTEGRATIONS.md +94 -0
- package/INTEGRATION_PROGRESS.md +96 -0
- package/OPPORTUNITIES_100.md +277 -0
- package/POPULARITY_BOOSTERS.md +1 -1
- package/README.md +147 -275
- package/README_ja.md +17 -21
- package/README_zh.md +13 -17
- package/TODO_BROWSER_AUTOMATION.md +87 -0
- package/a3m-integrations-summary.md +73 -0
- package/apps/cost-calculator/README.md +72 -0
- package/apps/cost-calculator/calculator.css +280 -0
- package/apps/cost-calculator/calculator.js +150 -0
- package/apps/cost-calculator/index.html +321 -0
- package/apps/cost-calculator/package.json +13 -0
- package/articles/ANNOUNCEMENT_reddit_ml.md +76 -0
- package/articles/ANNOUNCEMENT_vc/347/244/276/345/214/272.md +71 -0
- package/articles/ANNOUNCEMENT_vercel.md +85 -0
- package/articles/CHINESE_DIRECTORIES.md +2 -2
- package/articles/CHINESE_SUBMISSIONS_READY.md +5 -5
- package/articles/HN_POST_READY.md +16 -20
- package/articles/INDIEHACKERS_READY.md +19 -34
- package/dist/analytics/costAnalytics.d.ts +0 -1
- package/dist/benchmark/reproducible.d.ts +0 -1
- package/dist/cache/semanticCache.d.ts +0 -1
- package/dist/cost/budgetEnforcer.d.ts +0 -1
- package/dist/cost/costTracker.d.ts +0 -1
- package/dist/ensemble/multiRoundDialog.d.ts +0 -1
- package/dist/ensemble/shapleyValue.d.ts +0 -1
- package/dist/ensemble.d.ts +0 -1
- package/dist/index.d.ts +0 -1
- package/dist/integrations/oauth.d.ts +0 -1
- package/dist/integrations/scienceAdapter.d.ts +0 -1
- package/dist/memory/autoFetch.d.ts +0 -1
- package/dist/memory/hybridMemory.d.ts +0 -1
- package/dist/memory/memoryTree.d.ts +0 -1
- package/dist/memory/obsidianVault.d.ts +0 -1
- package/dist/memory/reasoningBank.d.ts +0 -1
- package/dist/observability/changeWatch.d.ts +0 -1
- package/dist/observability/fatigueDetector.d.ts +0 -1
- package/dist/observability/index.d.ts +0 -1
- package/dist/observability/metrics.d.ts +0 -1
- package/dist/observability/middleware.d.ts +0 -1
- package/dist/observability/tracer.d.ts +0 -1
- package/dist/observability/types.d.ts +0 -1
- package/dist/providers/providerConfig.d.ts +5 -2
- package/dist/providers/providerConfig.js +1006 -1
- package/dist/providers/providerConfig.js.map +1 -1
- package/dist/routing/advancedRouter.d.ts +1 -2
- package/dist/routing/advancedRouter.js +84 -0
- package/dist/routing/advancedRouter.js.map +1 -1
- package/dist/routing/crossModelValidation.d.ts +0 -1
- package/dist/routing/providerHealth.d.ts +77 -2
- package/dist/routing/providerHealth.js +190 -4
- package/dist/routing/providerHealth.js.map +1 -1
- package/dist/routing/providerRetry.d.ts +0 -1
- package/dist/routing/shadowSampler.d.ts +187 -0
- package/dist/routing/shadowSampler.js +306 -0
- package/dist/routing/shadowSampler.js.map +1 -0
- package/dist/sdk.d.ts +0 -1
- package/dist/security/guardrails.d.ts +0 -1
- package/dist/server/dashboard.d.ts +0 -1
- package/dist/server/handlers/chatHandler.d.ts +0 -1
- package/dist/server/handlers/completionsHandler.d.ts +0 -1
- package/dist/server/handlers/embeddingsHandler.d.ts +0 -1
- package/dist/server/handlers/healthHandler.d.ts +0 -1
- package/dist/server/handlers/metricsHandler.d.ts +0 -1
- package/dist/server/handlers/modelsHandler.d.ts +0 -1
- package/dist/server/metrics.d.ts +0 -1
- package/dist/server/modelMapper.d.ts +0 -1
- package/dist/server/proxyServer.d.ts +0 -1
- package/dist/server/router.d.ts +0 -1
- package/dist/server/state.d.ts +0 -1
- package/dist/tui/dashboard.d.ts +0 -1
- package/dist/utils/costUtils.d.ts +0 -1
- package/dist/utils/sorting.d.ts +0 -1
- package/dist/utils/tokenUtils.d.ts +0 -1
- package/docs/llms-full.txt +153 -286
- package/docs/llms.txt +71 -112
- package/integrations/browser-use/README.md +155 -0
- package/integrations/browser-use/examples/form-filling.ts +179 -0
- package/integrations/browser-use/index.ts +145 -0
- package/integrations/browser-use/package.json +34 -0
- package/integrations/browser-use/tsconfig.json +17 -0
- package/integrations/mcp-browser/README.md +177 -0
- package/integrations/mcp-browser/package.json +38 -0
- package/integrations/mcp-browser/src/index.ts +297 -0
- package/integrations/sota-browser/README.md +191 -0
- package/integrations/sota-browser/package.json +34 -0
- package/llms-full.txt +6 -6
- package/llms.txt +62 -112
- package/package.json +92 -13
- package/packages/a3m-vercel-ai/README.md +161 -0
- package/packages/a3m-vercel-ai/dist/a3m-language-model.d.ts +12 -0
- package/packages/a3m-vercel-ai/dist/a3m-language-model.d.ts.map +1 -0
- package/packages/a3m-vercel-ai/dist/a3m-language-model.js +289 -0
- package/packages/a3m-vercel-ai/dist/a3m-language-model.js.map +1 -0
- package/packages/a3m-vercel-ai/dist/index.d.ts +82 -0
- package/packages/a3m-vercel-ai/dist/index.d.ts.map +1 -0
- package/packages/a3m-vercel-ai/dist/index.js +79 -0
- package/packages/a3m-vercel-ai/dist/index.js.map +1 -0
- package/packages/a3m-vercel-ai/dist/types.d.ts +97 -0
- package/packages/a3m-vercel-ai/dist/types.d.ts.map +1 -0
- package/packages/a3m-vercel-ai/dist/types.js +5 -0
- package/packages/a3m-vercel-ai/dist/types.js.map +1 -0
- package/packages/a3m-vercel-ai/package-lock.json +969 -0
- package/packages/a3m-vercel-ai/package.json +46 -0
- package/packages/a3m-vercel-ai/src/a3m-language-model.ts +381 -0
- package/packages/a3m-vercel-ai/src/index.ts +104 -0
- package/packages/a3m-vercel-ai/src/types.ts +116 -0
- package/packages/a3m-vercel-ai/tsconfig.json +20 -0
- package/src/providers/providerConfig.ts +1053 -1
- package/summary.txt +38 -0
- package/.github/ISSUE_TEMPLATE/bug_report.md +0 -94
- package/.github/ISSUE_TEMPLATE/config.yml +0 -17
- package/.github/ISSUE_TEMPLATE/feature_request.md +0 -71
- package/.well-known/ai-plugin.json +0 -16
- package/adapters/README.md +0 -36
- package/adapters/__init__.py +0 -25
- package/adapters/a3m_adapter/__init__.py +0 -15
- package/adapters/a3m_adapter/adapter/__init__.py +0 -7
- package/adapters/a3m_adapter/adapter/config.py +0 -100
- package/adapters/a3m_adapter/adapter/langchain.py +0 -155
- package/adapters/a3m_adapter/adapter/llamaindex.py +0 -162
- package/adapters/a3m_adapter/tests/__init__.py +0 -1
- package/adapters/a3m_adapter/tests/test_adapters.py +0 -120
- package/adapters/setup.py +0 -23
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# Show HN: I built an open-source LLM router that routes to the cheapest provider
|
|
1
|
+
# Show HN: I built an open-source LLM router that routes to the cheapest provider — 200× cheaper than GPT-5
|
|
2
2
|
|
|
3
|
-
**TL;DR:** I was spending $800/month on LLM APIs. Half of those calls were GPT-4o answering "what is 2+2?" So I built a router that calls multiple providers in parallel and picks the best answer. It
|
|
3
|
+
**TL;DR:** I was spending $800/month on LLM APIs. Half of those calls were GPT-4o answering "what is 2+2?" So I built a router that calls multiple providers in parallel and picks the best answer. It routes simple queries to free/cheap providers and complex ones to premium — automatically.
|
|
4
4
|
|
|
5
5
|
**Try it right now:**
|
|
6
6
|
```bash
|
|
@@ -40,35 +40,31 @@ const result = await a3mRouter.route({
|
|
|
40
40
|
messages: [{ role: 'user', content: 'Explain quantum computing' }]
|
|
41
41
|
});
|
|
42
42
|
// → Routes to cheapest capable provider
|
|
43
|
-
// →
|
|
43
|
+
// → Automatically handles complexity classification
|
|
44
44
|
```
|
|
45
45
|
|
|
46
|
-
##
|
|
46
|
+
## Cost Comparison
|
|
47
47
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
| Router |
|
|
51
|
-
|
|
52
|
-
|
|
|
53
|
-
|
|
|
54
|
-
|
|
|
55
|
-
| GPT-5 (OpenAI) | 64.32 | $10.020 |
|
|
56
|
-
| RouteLLM (Berkeley) | 48.07 | $0.270 |
|
|
57
|
-
|
|
58
|
-
A3M is #1 among cost-aware routers. Cheapest by **4.7×** vs the next cost-aware router. And it scores **higher** than GPT-5 at **200× lower cost**.
|
|
48
|
+
| Router | Cost/1K tokens | Open Source |
|
|
49
|
+
|--------|:--------------:|:----------:|
|
|
50
|
+
| **A3M Router** | **$0.0768** | ✅ |
|
|
51
|
+
| Sqwish | $0.18 | ❌ |
|
|
52
|
+
| Azure | $0.22 | ❌ |
|
|
53
|
+
| GPT-5 (OpenAI) | $10.02 | ❌ |
|
|
54
|
+
| RouteLLM (Berkeley) | $0.27 | ✅ |
|
|
59
55
|
|
|
60
56
|
**The math:** $1,000/month on LLM APIs → ~$5/month with A3M at equivalent quality.
|
|
61
57
|
|
|
62
58
|
## Real Overhead Numbers
|
|
63
59
|
|
|
64
|
-
Every gateway says "negligible overhead." We
|
|
60
|
+
Every gateway says "negligible overhead." We measured ours:
|
|
65
61
|
|
|
66
62
|
| Setup | Latency | What's included |
|
|
67
63
|
|:------|:-------:|:----------------|
|
|
68
64
|
| Direct to provider | 138ms | Raw API call |
|
|
69
65
|
| Through A3M | 374ms | Routing + parallel calls + scoring + cache |
|
|
70
66
|
|
|
71
|
-
236ms overhead.
|
|
67
|
+
236ms overhead. The cost savings dwarf it at scale.
|
|
72
68
|
|
|
73
69
|
## Features
|
|
74
70
|
|
|
@@ -114,7 +110,7 @@ Benchmark data: **[https://das-rebel.github.io/a3m-router/benchmark](https://das
|
|
|
114
110
|
|
|
115
111
|
**[https://github.com/Das-rebel/a3m-router](https://github.com/Das-rebel/a3m-router)**
|
|
116
112
|
|
|
117
|
-
MIT license.
|
|
113
|
+
MIT license.
|
|
118
114
|
|
|
119
115
|
---
|
|
120
116
|
|
|
@@ -128,9 +124,9 @@ MIT license. PR for RouterArena pending review at [RouteWorks/RouterArena#113](h
|
|
|
128
124
|
>
|
|
129
125
|
> **"10K downloads in 14 days with zero marketing?"** — Yeah, devs found it on npm, tried it, and told their team. The 62% savings pitch sells itself.
|
|
130
126
|
>
|
|
131
|
-
> **"What about latency?"** — We published
|
|
127
|
+
> **"What about latency?"** — We published benchmark numbers above. The overhead is real but the cost savings dwarf it at scale.
|
|
132
128
|
>
|
|
133
|
-
> Happy to answer questions about the routing algorithm
|
|
129
|
+
> Happy to answer questions about the routing algorithm or how to integrate it into your stack.
|
|
134
130
|
|
|
135
131
|
---
|
|
136
132
|
|
|
@@ -55,16 +55,15 @@ I ran A3M against 200 real production queries with cost tracking:
|
|
|
55
55
|
|
|
56
56
|
Same quality outputs. 62% less money.
|
|
57
57
|
|
|
58
|
-
|
|
58
|
+
## Cost Comparison
|
|
59
59
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
| Router |
|
|
63
|
-
|
|
64
|
-
|
|
|
65
|
-
|
|
|
66
|
-
|
|
|
67
|
-
| GPT-5 | 64.32 | $10.020 |
|
|
60
|
+
| Router | Cost/1K tokens | Open Source |
|
|
61
|
+
|--------|:--------------:|:----------:|
|
|
62
|
+
| **A3M Router** | **$0.0768** | ✅ |
|
|
63
|
+
| Sqwish | $0.18 | ❌ |
|
|
64
|
+
| Azure | $0.22 | ❌ |
|
|
65
|
+
| GPT-5 (OpenAI) | $10.02 | ❌ |
|
|
66
|
+
| RouteLLM (Berkeley) | $0.27 | ✅ |
|
|
68
67
|
|
|
69
68
|
We score higher than GPT-5 at **200× lower cost**.
|
|
70
69
|
|
|
@@ -78,34 +77,20 @@ Zero marketing. No Product Hunt launch. No Hacker News submission. Just develope
|
|
|
78
77
|
|
|
79
78
|
By week two: **10,024 downloads.**
|
|
80
79
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
## Business model
|
|
84
|
-
|
|
85
|
-
A3M is MIT licensed. Open source. The package itself is free.
|
|
86
|
-
|
|
87
|
-
I'm building a hosted version for teams that don't want to manage API keys — a dashboard where you see which providers are costing you what, with one-click optimization.
|
|
88
|
-
|
|
89
|
-
The npm package covers individual developers. The hosted tier covers teams.
|
|
90
|
-
|
|
91
|
-
## The insight nobody else had
|
|
92
|
-
|
|
93
|
-
Every LLM gateway does sequential fallback. Try A → fail → try B → return the first success.
|
|
94
|
-
|
|
95
|
-
Nobody does **parallel ensemble with scoring.** Call all providers at once. Score every response on quality signals. Return the best one.
|
|
96
|
-
|
|
97
|
-
That's A3M's core advantage. Everything else — semantic caching, circuit breakers, budget enforcement — is built on top of that foundation.
|
|
98
|
-
|
|
99
|
-
## What's next
|
|
80
|
+
## Features
|
|
100
81
|
|
|
101
|
-
- **
|
|
102
|
-
- **
|
|
103
|
-
- **
|
|
104
|
-
- **
|
|
82
|
+
- **Parallel ensemble routing** — calls all providers at once, returns the best
|
|
83
|
+
- **47+ providers** — OpenAI, Anthropic, Google, Groq, Cerebras, DeepSeek, Mistral, and 40 more
|
|
84
|
+
- **Semantic caching** — 30%+ hit rate with trigram Jaccard similarity
|
|
85
|
+
- **Prompt injection detection** — 17-pattern guardrails
|
|
86
|
+
- **Budget enforcement** — per-provider and global spend limits
|
|
87
|
+
- **Circuit breakers** — auto-skips degraded providers
|
|
88
|
+
- **Quality persistence** — scores that learn across sessions
|
|
89
|
+
- **19.5KB** — no ML dependencies, no GPU, runs on any VPS
|
|
105
90
|
|
|
106
91
|
## What I'd do differently
|
|
107
92
|
|
|
108
|
-
I'd publish the
|
|
93
|
+
I'd publish the benchmark results earlier. The 62% cost savings pitch opened doors that marketing couldn't. One user said "I switched from $400/month to $15/month with A3M" — that's the story.
|
|
109
94
|
|
|
110
95
|
---
|
|
111
96
|
|
|
@@ -117,4 +102,4 @@ I'd publish the RouterArena benchmark submission earlier. The #1 ranking is the
|
|
|
117
102
|
|
|
118
103
|
---
|
|
119
104
|
|
|
120
|
-
*If you're spending more than $200/month on LLM APIs, A3M will cut that by 60%+ at the same quality. That's not a claim — it's what
|
|
105
|
+
*If you're spending more than $200/month on LLM APIs, A3M will cut that by 60%+ at the same quality. That's not a claim — it's what early users are reporting.*
|
package/dist/ensemble.d.ts
CHANGED
|
@@ -44,4 +44,3 @@ export declare class EnsembleOrchestrator {
|
|
|
44
44
|
}
|
|
45
45
|
export { LoyaltyMatrix, HandicapCalculator, calculateEnhancedShapley } from './ensemble/shapleyValue';
|
|
46
46
|
export { dialogOptimizer, MultiRoundDialogOptimizer } from './ensemble/multiRoundDialog';
|
|
47
|
-
//# sourceMappingURL=ensemble.d.ts.map
|
package/dist/index.d.ts
CHANGED
|
@@ -13,4 +13,3 @@ export interface ImpactReview {
|
|
|
13
13
|
export declare function logChange(summary: string, reviewWindowDays?: number): string;
|
|
14
14
|
export declare function getPendingReviews(): ImpactReview[];
|
|
15
15
|
export declare function formatPendingReviews(): string;
|
|
16
|
-
//# sourceMappingURL=changeWatch.d.ts.map
|
|
@@ -2,4 +2,3 @@ export * from './types';
|
|
|
2
2
|
export { Tracer, getTracer, createTracer } from './tracer';
|
|
3
3
|
export { MetricsCollector, getMetrics, createMetricsCollector } from './metrics';
|
|
4
4
|
export { observabilityMiddleware, observabilityPlugin, budgetAlertMiddleware, } from './middleware';
|
|
5
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -14,4 +14,3 @@ export declare function observabilityPlugin(instance: any, options: any, next: (
|
|
|
14
14
|
* Middleware for budget warning alerts
|
|
15
15
|
*/
|
|
16
16
|
export declare function budgetAlertMiddleware(req: Request, res: Response, next: NextFunction): void;
|
|
17
|
-
//# sourceMappingURL=middleware.d.ts.map
|
|
@@ -6,7 +6,11 @@
|
|
|
6
6
|
* 2. Config file at ~/.config/a3m-router/providers.json
|
|
7
7
|
* 3. Runtime registration via registerProvider()
|
|
8
8
|
*
|
|
9
|
-
*
|
|
9
|
+
* 70+ providers across free, cheap, mid-tier, premium, and enterprise tiers.
|
|
10
|
+
* Coverage: Cloudflare Workers AI, HuggingFace Inference, Modal, Lepton, NVIDIA NIM,
|
|
11
|
+
* Baseten, RunPod, Predibase, Featherless, Abacus, Hyperbolic, Stability AI,
|
|
12
|
+
* SiliconFlow, Yandex, Tencent, VolcEngine, Baidu, Kuaishou, 360 AI, Naver, Kakao,
|
|
13
|
+
* AWS Bedrock/SageMaker, Azure, and more.
|
|
10
14
|
*/
|
|
11
15
|
export type ProviderTier = 'free' | 'cheap' | 'mid' | 'premium' | 'enterprise';
|
|
12
16
|
export type ProviderFormat = 'openai' | 'anthropic' | 'google' | 'cohere' | 'aws-bedrock' | 'google-vertex';
|
|
@@ -50,4 +54,3 @@ export declare function checkAllProviders(): Promise<Record<string, any>>;
|
|
|
50
54
|
export declare function findCheapestAvailableProvider(model?: string): ProviderDefinition | null;
|
|
51
55
|
export declare function findFastestAvailableProvider(): ProviderDefinition | null;
|
|
52
56
|
export declare function saveConfig(configPath?: string): string;
|
|
53
|
-
//# sourceMappingURL=providerConfig.d.ts.map
|