adaptive-memory-multi-model-router 2.0.6 → 2.0.8
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/LAUNCH.md +160 -412
- package/README.md +144 -112
- package/articles/HN_FINAL.md +87 -139
- package/articles/devto-llm-routing.md +93 -80
- package/articles/hackernews-show-hn.md +35 -63
- package/articles/reddit-ml.md +59 -76
- package/articles/twitter-thread-cost-savings.md +54 -72
- package/assets/social-preview.svg +178 -48
- package/benchmark-results.json +54 -0
- package/dist/routing/advancedRouter.js +1 -1
- package/docs/GEO.md +124 -0
- package/docs/HN_SUBMISSION_FINAL.md +83 -49
- package/docs/SEO_AUDIT.md +112 -167
- package/docs/assets/cost-comparison.svg +134 -0
- package/docs/assets/growth-chart-animated.svg +76 -0
- package/docs/assets/og-banner.svg +194 -0
- package/docs/assets/social-preview.svg +194 -0
- package/docs/index.html +632 -0
- package/docs-site/assets/og-banner.svg +180 -95
- package/docs-site/index.html +10 -10
- package/llms.txt +31 -11
- package/package.json +26 -163
- package/public/robots.txt +12 -2
- package/public/sitemap.xml +37 -1
- package/scripts/routing-benchmark-v2.js +373 -0
- package/scripts/routing-benchmark.js +462 -0
|
@@ -1,109 +1,194 @@
|
|
|
1
1
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1200 630" width="1200" height="630">
|
|
2
2
|
<defs>
|
|
3
|
-
<linearGradient id="
|
|
4
|
-
<stop offset="0%" style="stop-color:#
|
|
5
|
-
<stop offset="
|
|
6
|
-
<stop offset="100%" style="stop-color:#
|
|
3
|
+
<linearGradient id="bgGrad" x1="0%" y1="0%" x2="100%" y2="100%">
|
|
4
|
+
<stop offset="0%" style="stop-color:#0d1117"/>
|
|
5
|
+
<stop offset="40%" style="stop-color:#101822"/>
|
|
6
|
+
<stop offset="100%" style="stop-color:#0d1117"/>
|
|
7
7
|
</linearGradient>
|
|
8
|
-
<linearGradient id="
|
|
9
|
-
<stop offset="0%" style="stop-color:#
|
|
10
|
-
<stop offset="50%" style="stop-color:#
|
|
11
|
-
<stop offset="100%" style="stop-color:#
|
|
8
|
+
<linearGradient id="accentGrad" x1="0%" y1="0%" x2="100%" y2="0%">
|
|
9
|
+
<stop offset="0%" style="stop-color:#58a6ff"/>
|
|
10
|
+
<stop offset="50%" style="stop-color:#a78bfa"/>
|
|
11
|
+
<stop offset="100%" style="stop-color:#2ea043"/>
|
|
12
12
|
</linearGradient>
|
|
13
|
-
<
|
|
14
|
-
<
|
|
13
|
+
<linearGradient id="greenPill" x1="0%" y1="0%" x2="100%" y2="0%">
|
|
14
|
+
<stop offset="0%" style="stop-color:#238636"/>
|
|
15
|
+
<stop offset="100%" style="stop-color:#2ea043"/>
|
|
16
|
+
</linearGradient>
|
|
17
|
+
<linearGradient id="bluePill" x1="0%" y1="0%" x2="100%" y2="0%">
|
|
18
|
+
<stop offset="0%" style="stop-color:#1f6feb"/>
|
|
19
|
+
<stop offset="100%" style="stop-color:#58a6ff"/>
|
|
20
|
+
</linearGradient>
|
|
21
|
+
<linearGradient id="purplePill" x1="0%" y1="0%" x2="100%" y2="0%">
|
|
22
|
+
<stop offset="0%" style="stop-color:#7c3aed"/>
|
|
23
|
+
<stop offset="100%" style="stop-color:#a78bfa"/>
|
|
24
|
+
</linearGradient>
|
|
25
|
+
<linearGradient id="growthArrow" x1="0%" y1="100%" x2="100%" y2="0%">
|
|
26
|
+
<stop offset="0%" style="stop-color:#238636"/>
|
|
27
|
+
<stop offset="100%" style="stop-color:#2ea043"/>
|
|
28
|
+
</linearGradient>
|
|
29
|
+
<filter id="glow">
|
|
30
|
+
<feGaussianBlur stdDeviation="4" result="blur"/>
|
|
15
31
|
<feMerge>
|
|
16
|
-
<feMergeNode in="
|
|
32
|
+
<feMergeNode in="blur"/>
|
|
17
33
|
<feMergeNode in="SourceGraphic"/>
|
|
18
34
|
</feMerge>
|
|
19
35
|
</filter>
|
|
20
|
-
<
|
|
21
|
-
<
|
|
22
|
-
</
|
|
36
|
+
<filter id="cardShadow" x="-5%" y="-5%" width="110%" height="115%">
|
|
37
|
+
<feDropShadow dx="0" dy="3" stdDeviation="6" flood-color="#000000" flood-opacity="0.4"/>
|
|
38
|
+
</filter>
|
|
23
39
|
</defs>
|
|
24
|
-
|
|
40
|
+
|
|
25
41
|
<!-- Background -->
|
|
26
|
-
<rect width="1200" height="
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
<
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
</circle>
|
|
35
|
-
<circle cx="300" cy="300" r="3" fill="#8b5cf6">
|
|
36
|
-
<animate attributeName="cy" values="300;280;300" dur="5s" repeatCount="indefinite"/>
|
|
37
|
-
<animate attributeName="opacity" values="0.3;0.7;0.3" dur="5s" repeatCount="indefinite"/>
|
|
38
|
-
</circle>
|
|
39
|
-
<circle cx="900" cy="150" r="2" fill="#06b6d4">
|
|
40
|
-
<animate attributeName="cy" values="150;170;150" dur="3s" repeatCount="indefinite"/>
|
|
41
|
-
<animate attributeName="opacity" values="0.3;0.5;0.3" dur="3s" repeatCount="indefinite"/>
|
|
42
|
-
</circle>
|
|
43
|
-
<circle cx="1100" cy="350" r="3" fill="#10b981">
|
|
44
|
-
<animate attributeName="cy" values="350;330;350" dur="6s" repeatCount="indefinite"/>
|
|
45
|
-
<animate attributeName="opacity" values="0.3;0.6;0.3" dur="6s" repeatCount="indefinite"/>
|
|
46
|
-
</circle>
|
|
42
|
+
<rect width="1200" height="630" fill="url(#bgGrad)"/>
|
|
43
|
+
|
|
44
|
+
<!-- Decorative grid -->
|
|
45
|
+
<g opacity="0.025">
|
|
46
|
+
<line x1="0" y1="0" x2="1200" y2="630" stroke="#58a6ff" stroke-width="1"/>
|
|
47
|
+
<line x1="1200" y1="0" x2="0" y2="630" stroke="#58a6ff" stroke-width="1"/>
|
|
48
|
+
<circle cx="600" cy="315" r="180" fill="none" stroke="#58a6ff" stroke-width="0.5"/>
|
|
49
|
+
<circle cx="600" cy="315" r="300" fill="none" stroke="#58a6ff" stroke-width="0.5"/>
|
|
47
50
|
</g>
|
|
48
|
-
|
|
49
|
-
<!--
|
|
50
|
-
<
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
<circle cx="-30" cy="18" r="6" fill="#f59e0b" opacity="0.9">
|
|
63
|
-
<animateTransform attributeName="transform" type="rotate" from="240 0 0" to="600 0 0" dur="12s" repeatCount="indefinite"/>
|
|
64
|
-
</circle>
|
|
65
|
-
<text x="0" y="8" font-family="system-ui, -apple-system, sans-serif" font-size="24" font-weight="bold" fill="white" text-anchor="middle">A3M</text>
|
|
66
|
-
</g>
|
|
67
|
-
|
|
68
|
-
<!-- Title -->
|
|
69
|
-
<text x="600" y="160" font-family="system-ui, -apple-system, sans-serif" font-size="72" font-weight="bold" fill="white" text-anchor="middle" filter="url(#glowBanner)">A3M Router</text>
|
|
70
|
-
|
|
71
|
-
<!-- Subtitle -->
|
|
72
|
-
<text x="600" y="210" font-family="system-ui, -apple-system, sans-serif" font-size="28" fill="url(#accentGradient)" text-anchor="middle">Adaptive Memory Multi-Model Router</text>
|
|
73
|
-
|
|
51
|
+
|
|
52
|
+
<!-- Top accent line -->
|
|
53
|
+
<rect x="0" y="0" width="1200" height="4" fill="url(#accentGrad)"/>
|
|
54
|
+
<!-- Left accent line -->
|
|
55
|
+
<rect x="0" y="0" width="4" height="630" fill="url(#accentGrad)" opacity="0.6"/>
|
|
56
|
+
|
|
57
|
+
<!-- Shuffle emoji -->
|
|
58
|
+
<text x="90" y="108" font-size="56" opacity="0.85">🔀</text>
|
|
59
|
+
|
|
60
|
+
<!-- Main title -->
|
|
61
|
+
<text x="160" y="100" font-family="'SF Pro Display', -apple-system, 'Segoe UI', Helvetica, Arial, sans-serif" font-size="64" font-weight="800" fill="url(#accentGrad)" filter="url(#glow)">
|
|
62
|
+
A3M Router
|
|
63
|
+
</text>
|
|
64
|
+
|
|
74
65
|
<!-- Tagline -->
|
|
75
|
-
<text x="
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
<!--
|
|
82
|
-
<text x="
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
<
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
66
|
+
<text x="90" y="145" font-family="'SF Pro Text', -apple-system, 'Segoe UI', Helvetica, Arial, sans-serif" font-size="22" fill="#8b949e" font-weight="400">
|
|
67
|
+
Intelligent LLM routing · Drop-in OpenAI-compatible proxy
|
|
68
|
+
</text>
|
|
69
|
+
|
|
70
|
+
<!-- Day-by-day breakdown section -->
|
|
71
|
+
<g transform="translate(90, 185)">
|
|
72
|
+
<!-- Section label -->
|
|
73
|
+
<text x="0" y="12" font-family="'SF Pro Text', -apple-system, 'Segoe UI', Helvetica, Arial, sans-serif" font-size="12" fill="#484f58" font-weight="600" letter-spacing="2">
|
|
74
|
+
LAUNCH TRAJECTORY
|
|
75
|
+
</text>
|
|
76
|
+
|
|
77
|
+
<!-- Day cards -->
|
|
78
|
+
<!-- Day 1 -->
|
|
79
|
+
<g filter="url(#cardShadow)">
|
|
80
|
+
<rect x="0" y="30" width="300" height="100" rx="12" fill="#161b22" stroke="#30363d" stroke-width="1.5"/>
|
|
81
|
+
<rect x="0" y="30" width="300" height="3" rx="1.5" fill="url(#greenPill)"/>
|
|
82
|
+
<text x="24" y="68" font-family="'SF Pro Text', -apple-system, 'Segoe UI', Helvetica, Arial, sans-serif" font-size="13" fill="#484f58" font-weight="600">DAY 1</text>
|
|
83
|
+
<text x="24" y="110" font-family="'SF Mono', 'Fira Code', 'Consolas', monospace" font-size="40" font-weight="800" fill="#2ea043">552</text>
|
|
84
|
+
<text x="160" y="110" font-family="'SF Pro Text', -apple-system, 'Segoe UI', Helvetica, Arial, sans-serif" font-size="13" fill="#484f58">downloads</text>
|
|
85
|
+
</g>
|
|
86
|
+
|
|
87
|
+
<!-- Arrow between Day 1 and Day 2 -->
|
|
88
|
+
<g transform="translate(316, 60)">
|
|
89
|
+
<polygon points="0,20 16,35 0,50" fill="#30363d"/>
|
|
90
|
+
</g>
|
|
91
|
+
|
|
92
|
+
<!-- Day 2 -->
|
|
93
|
+
<g filter="url(#cardShadow)">
|
|
94
|
+
<rect x="345" y="30" width="300" height="100" rx="12" fill="#161b22" stroke="#30363d" stroke-width="1.5"/>
|
|
95
|
+
<rect x="345" y="30" width="300" height="3" rx="1.5" fill="url(#bluePill)"/>
|
|
96
|
+
<text x="369" y="68" font-family="'SF Pro Text', -apple-system, 'Segoe UI', Helvetica, Arial, sans-serif" font-size="13" fill="#484f58" font-weight="600">DAY 2</text>
|
|
97
|
+
<text x="369" y="110" font-family="'SF Mono', 'Fira Code', 'Consolas', monospace" font-size="40" font-weight="800" fill="#58a6ff">320</text>
|
|
98
|
+
<text x="505" y="110" font-family="'SF Pro Text', -apple-system, 'Segoe UI', Helvetica, Arial, sans-serif" font-size="13" fill="#484f58">downloads</text>
|
|
99
|
+
</g>
|
|
100
|
+
|
|
101
|
+
<!-- Arrow between Day 2 and Day 3 -->
|
|
102
|
+
<g transform="translate(661, 55)">
|
|
103
|
+
<polygon points="0,15 18,35 0,55" fill="#2ea043"/>
|
|
104
|
+
</g>
|
|
105
|
+
|
|
106
|
+
<!-- Day 3 (highlighted) -->
|
|
107
|
+
<g filter="url(#cardShadow)">
|
|
108
|
+
<rect x="690" y="30" width="320" height="100" rx="12" fill="#161b22" stroke="#2ea043" stroke-width="2"/>
|
|
109
|
+
<rect x="690" y="30" width="320" height="3" rx="1.5" fill="url(#greenPill)"/>
|
|
110
|
+
<!-- Glow badge -->
|
|
111
|
+
<rect x="910" y="42" width="84" height="22" rx="11" fill="#238636" opacity="0.2"/>
|
|
112
|
+
<text x="952" y="57" font-family="'SF Pro Text', -apple-system, 'Segoe UI', Helvetica, Arial, sans-serif" font-size="11" fill="#2ea043" text-anchor="middle" font-weight="700">+494%</text>
|
|
113
|
+
<text x="714" y="68" font-family="'SF Pro Text', -apple-system, 'Segoe UI', Helvetica, Arial, sans-serif" font-size="13" fill="#484f58" font-weight="600">DAY 3</text>
|
|
114
|
+
<text x="714" y="110" font-family="'SF Mono', 'Fira Code', 'Consolas', monospace" font-size="40" font-weight="800" fill="#2ea043">1,903</text>
|
|
115
|
+
<text x="878" y="110" font-family="'SF Pro Text', -apple-system, 'Segoe UI', Helvetica, Arial, sans-serif" font-size="13" fill="#484f58">downloads</text>
|
|
116
|
+
</g>
|
|
117
|
+
</g>
|
|
118
|
+
|
|
119
|
+
<!-- Growth highlight banner -->
|
|
120
|
+
<g transform="translate(90, 355)">
|
|
121
|
+
<rect x="0" y="0" width="1020" height="60" rx="12" fill="#161b22" stroke="#30363d" stroke-width="1"/>
|
|
122
|
+
<rect x="0" y="0" width="6" height="60" rx="3" fill="url(#accentGrad)"/>
|
|
123
|
+
<text x="510" y="28" font-family="'SF Pro Display', -apple-system, 'Segoe UI', Helvetica, Arial, sans-serif" font-size="22" fill="#c9d1d9" text-anchor="middle" font-weight="700">
|
|
124
|
+
245% growth. Zero budget.
|
|
125
|
+
</text>
|
|
126
|
+
<text x="510" y="48" font-family="'SF Pro Text', -apple-system, 'Segoe UI', Helvetica, Arial, sans-serif" font-size="13" fill="#484f58" text-anchor="middle">
|
|
127
|
+
2,775 total downloads · 39 providers · 100% organic
|
|
128
|
+
</text>
|
|
129
|
+
</g>
|
|
130
|
+
|
|
131
|
+
<!-- Bottom section -->
|
|
132
|
+
<g transform="translate(90, 445)">
|
|
133
|
+
<!-- npm install box -->
|
|
134
|
+
<rect x="0" y="0" width="520" height="52" rx="10" fill="#161b22" stroke="#30363d" stroke-width="1.5"/>
|
|
135
|
+
<circle cx="26" cy="26" r="6" fill="#238636"/>
|
|
136
|
+
<circle cx="26" cy="26" r="3" fill="#0d1117"/>
|
|
137
|
+
<text x="46" y="32" font-family="'SF Mono', 'Fira Code', 'Consolas', monospace" font-size="16" fill="#c9d1d9" font-weight="500">
|
|
138
|
+
$ npm install adaptive-memory-router
|
|
139
|
+
</text>
|
|
140
|
+
|
|
141
|
+
<!-- GitHub link -->
|
|
142
|
+
<rect x="560" y="0" width="460" height="52" rx="10" fill="#161b22" stroke="#30363d" stroke-width="1.5"/>
|
|
143
|
+
<text x="580" y="22" font-family="'SF Pro Text', -apple-system, 'Segoe UI', Helvetica, Arial, sans-serif" font-size="11" fill="#484f58" font-weight="600" letter-spacing="1">
|
|
144
|
+
GITHUB
|
|
145
|
+
</text>
|
|
146
|
+
<text x="580" y="42" font-family="'SF Mono', 'Fira Code', 'Consolas', monospace" font-size="15" fill="#58a6ff" font-weight="500">
|
|
147
|
+
github.com/Das-rebel/adaptive-memory-router
|
|
148
|
+
</text>
|
|
149
|
+
</g>
|
|
150
|
+
|
|
151
|
+
<!-- Provider strip at very bottom -->
|
|
152
|
+
<g transform="translate(0, 530)">
|
|
153
|
+
<rect x="0" y="0" width="1200" height="100" fill="#080b10"/>
|
|
154
|
+
<rect x="0" y="0" width="1200" height="1" fill="#21262d"/>
|
|
155
|
+
|
|
156
|
+
<!-- Mini provider badges -->
|
|
157
|
+
<g transform="translate(90, 24)">
|
|
158
|
+
<rect x="0" y="0" width="80" height="28" rx="14" fill="#1a1f27" stroke="#30363d" stroke-width="0.5"/>
|
|
159
|
+
<text x="40" y="19" font-family="'SF Pro Text', -apple-system, 'Segoe UI', Helvetica, Arial, sans-serif" font-size="11" fill="#8b949e" text-anchor="middle" font-weight="600">OpenAI</text>
|
|
160
|
+
|
|
161
|
+
<rect x="96" y="0" width="95" height="28" rx="14" fill="#1a1f27" stroke="#30363d" stroke-width="0.5"/>
|
|
162
|
+
<text x="143" y="19" font-family="'SF Pro Text', -apple-system, 'Segoe UI', Helvetica, Arial, sans-serif" font-size="11" fill="#8b949e" text-anchor="middle" font-weight="600">Anthropic</text>
|
|
163
|
+
|
|
164
|
+
<rect x="207" y="0" width="68" height="28" rx="14" fill="#1a1f27" stroke="#30363d" stroke-width="0.5"/>
|
|
165
|
+
<text x="241" y="19" font-family="'SF Pro Text', -apple-system, 'Segoe UI', Helvetica, Arial, sans-serif" font-size="11" fill="#8b949e" text-anchor="middle" font-weight="600">Groq</text>
|
|
166
|
+
|
|
167
|
+
<rect x="289" y="0" width="88" height="28" rx="14" fill="#1a1f27" stroke="#30363d" stroke-width="0.5"/>
|
|
168
|
+
<text x="333" y="19" font-family="'SF Pro Text', -apple-system, 'Segoe UI', Helvetica, Arial, sans-serif" font-size="11" fill="#8b949e" text-anchor="middle" font-weight="600">Cerebras</text>
|
|
169
|
+
|
|
170
|
+
<rect x="391" y="0" width="78" height="28" rx="14" fill="#1a1f27" stroke="#30363d" stroke-width="0.5"/>
|
|
171
|
+
<text x="430" y="19" font-family="'SF Pro Text', -apple-system, 'Segoe UI', Helvetica, Arial, sans-serif" font-size="11" fill="#8b949e" text-anchor="middle" font-weight="600">Mistral</text>
|
|
172
|
+
|
|
173
|
+
<rect x="483" y="0" width="92" height="28" rx="14" fill="#1a1f27" stroke="#30363d" stroke-width="0.5"/>
|
|
174
|
+
<text x="529" y="19" font-family="'SF Pro Text', -apple-system, 'Segoe UI', Helvetica, Arial, sans-serif" font-size="11" fill="#8b949e" text-anchor="middle" font-weight="600">DeepSeek</text>
|
|
175
|
+
|
|
176
|
+
<rect x="589" y="0" width="76" height="28" rx="14" fill="#1a1f27" stroke="#30363d" stroke-width="0.5"/>
|
|
177
|
+
<text x="627" y="19" font-family="'SF Pro Text', -apple-system, 'Segoe UI', Helvetica, Arial, sans-serif" font-size="11" fill="#8b949e" text-anchor="middle" font-weight="600">Ollama</text>
|
|
178
|
+
|
|
179
|
+
<rect x="680" y="0" width="76" height="28" rx="14" fill="#1a1f27" stroke="#30363d" stroke-width="0.5"/>
|
|
180
|
+
<text x="718" y="19" font-family="'SF Pro Text', -apple-system, 'Segoe UI', Helvetica, Arial, sans-serif" font-size="11" fill="#8b949e" text-anchor="middle" font-weight="600">Gemini</text>
|
|
181
|
+
|
|
182
|
+
<rect x="770" y="0" width="62" height="28" rx="14" fill="#1a1f27" stroke="#30363d" stroke-width="0.5"/>
|
|
183
|
+
<text x="801" y="19" font-family="'SF Pro Text', -apple-system, 'Segoe UI', Helvetica, Arial, sans-serif" font-size="11" fill="#8b949e" text-anchor="middle" font-weight="600">SGLang</text>
|
|
184
|
+
|
|
185
|
+
<rect x="846" y="0" width="86" height="28" rx="14" fill="none" stroke="#30363d" stroke-width="0.5" stroke-dasharray="3 2"/>
|
|
186
|
+
<text x="889" y="19" font-family="'SF Pro Text', -apple-system, 'Segoe UI', Helvetica, Arial, sans-serif" font-size="11" fill="#484f58" text-anchor="middle" font-weight="500">+30 more</text>
|
|
187
|
+
</g>
|
|
188
|
+
|
|
189
|
+
<!-- Bottom tagline -->
|
|
190
|
+
<text x="600" y="75" font-family="'SF Pro Text', -apple-system, 'Segoe UI', Helvetica, Arial, sans-serif" font-size="11" fill="#30363d" text-anchor="middle" letter-spacing="3" font-weight="500">
|
|
191
|
+
ONE API KEY · EVERY PROVIDER · ZERO LOCK-IN
|
|
192
|
+
</text>
|
|
105
193
|
</g>
|
|
106
|
-
|
|
107
|
-
<!-- Bottom Gradient Line -->
|
|
108
|
-
<rect x="0" y="395" width="1200" height="5" fill="url(#accentGradient)"/>
|
|
109
194
|
</svg>
|
package/docs-site/index.html
CHANGED
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
6
|
|
|
7
7
|
<!-- Primary SEO Meta Tags -->
|
|
8
|
-
<title>A3M Router
|
|
9
|
-
<meta name="description" content="
|
|
10
|
-
<meta name="keywords" content="llm router,
|
|
8
|
+
<title>A3M Router — 82.5% Routing Accuracy Without ML | Matches RouteLLM</title>
|
|
9
|
+
<meta name="description" content="A3M Router achieves 82.5% LLM routing accuracy without GPU — matching RouteLLM BERT within 2.5%. 30x more efficient than GPU-based routing. Drop-in OpenAI proxy with 39 providers. 50-80% cost savings.">
|
|
10
|
+
<meta name="keywords" content="llm router benchmark, llm routing accuracy, routellm alternative, litellm alternative, llm cost optimization, openai proxy free, llm gateway open source, lightweight llm router, keyword-based llm routing, drop-in openai proxy, llm routing without gpu, how to reduce openai api costs">
|
|
11
11
|
<meta name="author" content="A3M Router Team">
|
|
12
12
|
<meta name="robots" content="index, follow, max-snippet:-1, max-image-preview:large">
|
|
13
13
|
<link rel="canonical" href="https://das-rebel.github.io/adaptive-memory-multi-model-router/">
|
|
@@ -15,9 +15,9 @@
|
|
|
15
15
|
<!-- Open Graph / Social Sharing -->
|
|
16
16
|
<meta property="og:type" content="website">
|
|
17
17
|
<meta property="og:url" content="https://das-rebel.github.io/adaptive-memory-multi-model-router/">
|
|
18
|
-
<meta property="og:title" content="A3M Router
|
|
19
|
-
<meta property="og:description" content="
|
|
20
|
-
<meta property="og:image" content="https://das-rebel.github.io/adaptive-memory-multi-model-router/assets/og-banner.
|
|
18
|
+
<meta property="og:title" content="A3M Router — 82.5% Routing Accuracy Without ML | Matches RouteLLM">
|
|
19
|
+
<meta property="og:description" content="LLM router that matches RouteLLM BERT within 2.5% — without GPU. 30x more efficient. 82.5% routing accuracy. Drop-in OpenAI proxy with 39 providers.">
|
|
20
|
+
<meta property="og:image" content="https://das-rebel.github.io/adaptive-memory-multi-model-router/assets/og-banner.svg">
|
|
21
21
|
<meta property="og:image:width" content="1200">
|
|
22
22
|
<meta property="og:image:height" content="630">
|
|
23
23
|
<meta property="og:site_name" content="A3M Router">
|
|
@@ -25,9 +25,9 @@
|
|
|
25
25
|
|
|
26
26
|
<!-- Twitter Card -->
|
|
27
27
|
<meta name="twitter:card" content="summary_large_image">
|
|
28
|
-
<meta name="twitter:title" content="A3M Router
|
|
29
|
-
<meta name="twitter:description" content="
|
|
30
|
-
<meta name="twitter:image" content="https://das-rebel.github.io/adaptive-memory-multi-model-router/assets/og-banner.
|
|
28
|
+
<meta name="twitter:title" content="A3M Router — 82.5% Routing Accuracy Without ML | Matches RouteLLM">
|
|
29
|
+
<meta name="twitter:description" content="LLM router that matches RouteLLM BERT within 2.5% — without GPU. 30x more efficient. 82.5% accuracy. Drop-in OpenAI proxy. 39 providers.">
|
|
30
|
+
<meta name="twitter:image" content="https://das-rebel.github.io/adaptive-memory-multi-model-router/assets/og-banner.svg">
|
|
31
31
|
|
|
32
32
|
<!-- JSON-LD Structured Data: SoftwareApplication -->
|
|
33
33
|
<script type="application/ld+json">
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"@context": "https://schema.org",
|
|
36
36
|
"@type": "SoftwareApplication",
|
|
37
37
|
"name": "A3M Router",
|
|
38
|
-
"description": "
|
|
38
|
+
"description": "OpenAI-compatible LLM router with 82.5% routing accuracy without ML. Matches RouteLLM BERT within 2.5%. 30x more efficient than GPU-based routing. 39 providers, semantic cache, guardrails, cost analytics.",
|
|
39
39
|
"url": "https://github.com/Das-rebel/adaptive-memory-multi-model-router",
|
|
40
40
|
"applicationCategory": "DeveloperApplication",
|
|
41
41
|
"operatingSystem": "Linux, macOS, Windows",
|
package/llms.txt
CHANGED
|
@@ -1,16 +1,20 @@
|
|
|
1
1
|
# A3M Router
|
|
2
|
-
>
|
|
2
|
+
> LLM router with 82.5% routing accuracy without ML — matches RouteLLM BERT within 2.5%. 30x more efficient than GPU-based routing. Drop-in OpenAI proxy, 39 providers.
|
|
3
3
|
|
|
4
|
-
##
|
|
5
|
-
|
|
4
|
+
## Benchmark Results
|
|
5
|
+
- **82.5% adjacent routing accuracy** without ML or GPU
|
|
6
|
+
- Matches RouteLLM BERT within **2.5 percentage points** (85% vs 82.5%)
|
|
7
|
+
- **30x more efficient** than GPU-based routing (no model weights, no training, no GPU)
|
|
8
|
+
- Only router besides RouteLLM with **published benchmarks**
|
|
9
|
+
- 200-query MMLU-based benchmark with 4-tier routing (free/cheap/mid/premium)
|
|
6
10
|
|
|
7
|
-
##
|
|
8
|
-
- 2,775 downloads in 3 days
|
|
9
|
-
- 245% growth
|
|
11
|
+
## Growth & Adoption
|
|
12
|
+
- **2,775 downloads in 3 days**
|
|
13
|
+
- **245% growth**, zero marketing budget
|
|
10
14
|
- 39 providers (OpenAI, Anthropic, Groq, Cerebras, DeepSeek, Mistral, Ollama, etc.)
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
-
|
|
15
|
+
|
|
16
|
+
## What
|
|
17
|
+
A3M Router is an OpenAI-compatible proxy that analyzes each query and routes it to the cheapest capable LLM provider. Keyword-based routing achieves near-ML accuracy at a fraction of the cost. Zero config. Zero GPU.
|
|
14
18
|
|
|
15
19
|
## Install
|
|
16
20
|
```bash
|
|
@@ -18,9 +22,19 @@ npm install adaptive-memory-multi-model-router
|
|
|
18
22
|
npx a3m-router serve
|
|
19
23
|
```
|
|
20
24
|
|
|
25
|
+
## Key Metrics
|
|
26
|
+
| Metric | Value |
|
|
27
|
+
|--------|-------|
|
|
28
|
+
| Routing accuracy (adjacent) | 82.5% |
|
|
29
|
+
| Gap to RouteLLM BERT | 2.5% |
|
|
30
|
+
| Efficiency vs GPU routing | 30x |
|
|
31
|
+
| Cost savings vs premium-only | 50-80% |
|
|
32
|
+
| Providers | 39 |
|
|
33
|
+
| Downloads (3 days) | 2,775 |
|
|
34
|
+
|
|
21
35
|
## Features
|
|
22
36
|
- OpenAI-compatible proxy (drop-in for any SDK)
|
|
23
|
-
-
|
|
37
|
+
- Keyword-based routing with near-ML accuracy
|
|
24
38
|
- Semantic cache (trigram Jaccard similarity)
|
|
25
39
|
- Security guardrails (PII, prompt injection, content filter)
|
|
26
40
|
- Real-time cost analytics dashboard
|
|
@@ -54,11 +68,17 @@ npx a3m-router status # Show router status
|
|
|
54
68
|
|
|
55
69
|
## Use Cases
|
|
56
70
|
- Reduce OpenAI API costs by 50-80%
|
|
57
|
-
-
|
|
71
|
+
- LLM routing without GPU
|
|
72
|
+
- Drop-in OpenAI proxy with cost optimization
|
|
58
73
|
- Route between local (Ollama) and cloud models
|
|
59
74
|
- Build multi-provider AI applications
|
|
60
75
|
- Add guardrails and caching to existing LLM setups
|
|
61
76
|
|
|
77
|
+
## Competitive Positioning
|
|
78
|
+
- vs RouteLLM: Matches accuracy within 2.5%, no GPU needed, includes proxy+cache+guardrails
|
|
79
|
+
- vs LiteLLM: Published benchmarks, zero-config, built-in semantic cache
|
|
80
|
+
- vs OpenRouter: Self-hosted, no middleman fees, open source
|
|
81
|
+
|
|
62
82
|
## Links
|
|
63
83
|
- GitHub: https://github.com/Das-rebel/adaptive-memory-multi-model-router
|
|
64
84
|
- NPM: https://www.npmjs.com/package/adaptive-memory-multi-model-router
|
package/package.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "adaptive-memory-multi-model-router",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.8",
|
|
4
4
|
"shortName": "A3M Router",
|
|
5
5
|
"displayName": "A3M Router - Adaptive Memory Multi-Model Router",
|
|
6
|
-
"description": "
|
|
6
|
+
"description": "81% cost savings. 78.5% routing accuracy, zero ML. Drop-in OpenAI proxy, 40 providers. 245% growth in 3 days.",
|
|
7
7
|
"main": "dist/index.js",
|
|
8
8
|
"bin": {
|
|
9
9
|
"a3m-router": "dist/cli.js",
|
|
@@ -49,172 +49,35 @@
|
|
|
49
49
|
}
|
|
50
50
|
},
|
|
51
51
|
"keywords": [
|
|
52
|
-
"llm",
|
|
53
|
-
"router",
|
|
54
|
-
"ai",
|
|
55
|
-
"language-model",
|
|
56
|
-
"openai",
|
|
57
|
-
"anthropic",
|
|
58
|
-
"gpt",
|
|
59
|
-
"gpt-4",
|
|
60
|
-
"claude",
|
|
61
|
-
"gemini",
|
|
62
|
-
"ai-routing",
|
|
63
|
-
"llm-routing",
|
|
64
|
-
"multi-model",
|
|
65
|
-
"model-router",
|
|
66
52
|
"llm-router",
|
|
67
|
-
"
|
|
68
|
-
"
|
|
69
|
-
"
|
|
70
|
-
"
|
|
53
|
+
"llm-routing",
|
|
54
|
+
"llm-gateway",
|
|
55
|
+
"openai-proxy",
|
|
56
|
+
"cost-optimization",
|
|
57
|
+
"ai-gateway",
|
|
58
|
+
"routellm-alternative",
|
|
59
|
+
"litellm-alternative",
|
|
60
|
+
"portkey-alternative",
|
|
61
|
+
"semantic-cache",
|
|
62
|
+
"guardrails",
|
|
63
|
+
"multi-provider",
|
|
64
|
+
"openai-compatible",
|
|
65
|
+
"llm-proxy",
|
|
66
|
+
"llm-orchestration",
|
|
71
67
|
"groq",
|
|
72
68
|
"cerebras",
|
|
73
|
-
"deepseek",
|
|
74
|
-
"fireworks",
|
|
75
|
-
"perplexity",
|
|
76
|
-
"cohere",
|
|
77
69
|
"mistral",
|
|
78
|
-
"
|
|
79
|
-
"
|
|
80
|
-
"ollama",
|
|
81
|
-
"openrouter",
|
|
82
|
-
"cost-optimization",
|
|
83
|
-
"latency-optimization",
|
|
84
|
-
"token-compression",
|
|
85
|
-
"prefix-caching",
|
|
86
|
-
"speculative-decoding",
|
|
87
|
-
"circuit-breaker",
|
|
88
|
-
"memory-tree",
|
|
89
|
-
"route-quality",
|
|
90
|
-
"batch-processing",
|
|
91
|
-
"parallel-execution",
|
|
92
|
-
"fallback",
|
|
93
|
-
"retry",
|
|
94
|
-
"load-balancing",
|
|
95
|
-
"github",
|
|
96
|
-
"slack",
|
|
97
|
-
"telegram",
|
|
98
|
-
"notion",
|
|
99
|
-
"linear",
|
|
100
|
-
"jira",
|
|
101
|
-
"gmail",
|
|
102
|
-
"discord",
|
|
103
|
-
"airtable",
|
|
104
|
-
"google-calendar",
|
|
105
|
-
"asana",
|
|
106
|
-
"trello",
|
|
107
|
-
"stripe",
|
|
108
|
-
"shopify",
|
|
109
|
-
"hubspot",
|
|
110
|
-
"salesforce",
|
|
111
|
-
"zendesk",
|
|
112
|
-
"intercom",
|
|
113
|
-
"sendgrid",
|
|
114
|
-
"mailchimp",
|
|
115
|
-
"segment",
|
|
116
|
-
"mixpanel",
|
|
117
|
-
"amplitude",
|
|
118
|
-
"posthog",
|
|
119
|
-
"datadog",
|
|
120
|
-
"sentry",
|
|
121
|
-
"pinecone",
|
|
122
|
-
"s3",
|
|
123
|
-
"dropbox",
|
|
124
|
-
"vercel",
|
|
125
|
-
"netlify",
|
|
126
|
-
"gitlab",
|
|
127
|
-
"bitbucket",
|
|
128
|
-
"chatbot",
|
|
129
|
-
"agent",
|
|
130
|
-
"ai-agent",
|
|
131
|
-
"automation",
|
|
132
|
-
"orchestration",
|
|
133
|
-
"mcp",
|
|
134
|
-
"tools",
|
|
135
|
-
"api-gateway",
|
|
136
|
-
"proxy",
|
|
137
|
-
"middleware",
|
|
138
|
-
"sdk",
|
|
139
|
-
"cli",
|
|
140
|
-
"typescript",
|
|
141
|
-
"javascript",
|
|
142
|
-
"nodejs",
|
|
143
|
-
"npm",
|
|
144
|
-
"python",
|
|
145
|
-
"developer-tools",
|
|
146
|
-
"developer-experience",
|
|
147
|
-
"dx",
|
|
148
|
-
"open-source",
|
|
149
|
-
"routellm",
|
|
150
|
-
"radix-attention",
|
|
151
|
-
"medusa",
|
|
152
|
-
"llmlingua",
|
|
153
|
-
"ai-agent-tools",
|
|
154
|
-
"llm-tools",
|
|
155
|
-
"agent-framework",
|
|
156
|
-
"autonomous-agents",
|
|
157
|
-
"machine-learning",
|
|
158
|
-
"nlp",
|
|
159
|
-
"natural-language-processing",
|
|
160
|
-
"transformer",
|
|
161
|
-
"huggingface",
|
|
162
|
-
"langchain",
|
|
163
|
-
"llamaindex",
|
|
164
|
-
"prompt-engineering",
|
|
165
|
-
"rag",
|
|
166
|
-
"retrieval-augmented-generation",
|
|
167
|
-
"vector-database",
|
|
168
|
-
"embedding",
|
|
169
|
-
"fine-tuning",
|
|
170
|
-
"inference",
|
|
171
|
-
"streaming",
|
|
172
|
-
"websocket",
|
|
173
|
-
"rest-api",
|
|
174
|
-
"graphql",
|
|
175
|
-
"serverless",
|
|
176
|
-
"edge-computing",
|
|
177
|
-
"cloud",
|
|
178
|
-
"devops",
|
|
179
|
-
"monitoring",
|
|
180
|
-
"observability",
|
|
181
|
-
"tracing",
|
|
182
|
-
"logging",
|
|
183
|
-
"testing",
|
|
70
|
+
"deepseek",
|
|
71
|
+
"anthropic",
|
|
184
72
|
"benchmark",
|
|
185
|
-
"
|
|
186
|
-
"
|
|
187
|
-
"
|
|
188
|
-
"
|
|
189
|
-
"
|
|
190
|
-
"
|
|
191
|
-
"
|
|
192
|
-
"
|
|
193
|
-
"prompt-injection",
|
|
194
|
-
"pii-detection",
|
|
195
|
-
"content-filtering",
|
|
196
|
-
"rate-limiting",
|
|
197
|
-
"sanitization",
|
|
198
|
-
"geo",
|
|
199
|
-
"generative-engine-optimization",
|
|
200
|
-
"ai-discoverability",
|
|
201
|
-
"llm-intent",
|
|
202
|
-
"code-generation",
|
|
203
|
-
"copilot",
|
|
204
|
-
"chatgpt",
|
|
205
|
-
"claude-code",
|
|
206
|
-
"ai-assistant",
|
|
207
|
-
"intent-mapping",
|
|
208
|
-
"openai-compatible",
|
|
209
|
-
"proxy-server",
|
|
210
|
-
"guardrails",
|
|
211
|
-
"semantic-cache",
|
|
212
|
-
"cost-analytics",
|
|
213
|
-
"llm-proxy",
|
|
214
|
-
"ai-gateway",
|
|
215
|
-
"provider-registry",
|
|
216
|
-
"together-ai",
|
|
217
|
-
"deepinfra"
|
|
73
|
+
"routing-accuracy",
|
|
74
|
+
"lightweight",
|
|
75
|
+
"no-gpu",
|
|
76
|
+
"keyword-routing",
|
|
77
|
+
"ai",
|
|
78
|
+
"llm",
|
|
79
|
+
"nlp",
|
|
80
|
+
"language-model"
|
|
218
81
|
],
|
|
219
82
|
"author": "Das-rebel <subho@example.com>",
|
|
220
83
|
"license": "MIT",
|