adaptive-memory-multi-model-router 2.11.0 → 2.12.1
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/workflows/ci.yml +56 -0
- package/.github/workflows/pages.yml +37 -0
- package/Awesome-LLM/LICENSE.md +121 -0
- package/Awesome-LLM/README.md +625 -0
- package/Awesome-LLM/contributing.md +24 -0
- package/Awesome-LLM/paper_list/RLHF.md +1 -0
- package/Awesome-LLM/paper_list/Retrieval_Augmented_Generation.md +6 -0
- package/Awesome-LLM/paper_list/acceleration.md +10 -0
- package/Awesome-LLM/paper_list/alignment.md +20 -0
- package/Awesome-LLM/paper_list/application.md +19 -0
- package/Awesome-LLM/paper_list/augmentation.md +14 -0
- package/Awesome-LLM/paper_list/chain_of_thougt.md +16 -0
- package/Awesome-LLM/paper_list/code_pretraining.md +0 -0
- package/Awesome-LLM/paper_list/detection.md +11 -0
- package/Awesome-LLM/paper_list/evaluation.md +64 -0
- package/Awesome-LLM/paper_list/in_context_learning.md +4 -0
- package/Awesome-LLM/paper_list/instruction-tuning.md +35 -0
- package/Awesome-LLM/paper_list/moe.md +0 -0
- package/Awesome-LLM/paper_list/prompt_learning.md +15 -0
- package/Awesome-LLM/resources/DeepSpeed_light.svg +27 -0
- package/Awesome-LLM/resources/alpa-logo-cropped.png +0 -0
- package/Awesome-LLM/resources/colossal-ai_logo_vertical.png +0 -0
- package/Awesome-LLM/resources/creepy_llm.jpeg +0 -0
- package/Awesome-LLM/resources/image8.gif +0 -0
- package/Awesome-LLM/resources/jax_logo_250px.png +0 -0
- package/Awesome-LLM/resources/logo.png +0 -0
- package/Awesome-LLM/resources/nvidia.png +0 -0
- package/Awesome-LLM/resources/tensorflow.png +0 -0
- package/Awesome-LLM/resources//345/244/247/345/236/213/350/257/255/350/250/200/346/250/241/345/236/213/347/232/204/350/203/275/345/212/233/345/210/206/346/236/220/344/270/216/345/272/224/347/224/250 - 30min.pdf +0 -0
- package/LANDING.md +46 -0
- package/MANIFESTO.md +54 -0
- package/README.md +3 -3
- package/SUBMISSIONS.md +43 -0
- package/assets/chart-cost-v2.svg +91 -0
- package/assets/chart-cost-v3.svg +143 -0
- package/assets/chart-features-v2.svg +132 -0
- package/assets/chart-features-v3.svg +211 -0
- package/assets/chart-growth-v2.svg +122 -0
- package/assets/chart-growth-v3.svg +189 -0
- package/assets/cost-simple.svg +64 -0
- package/assets/growth-simple.svg +69 -0
- package/assets/hero-diagram.svg +81 -0
- package/assets/logo-new.svg +21 -0
- package/assets/social-preview-new.svg +100 -0
- package/assets/social-v2.svg +130 -0
- package/assets/social-v3.svg +212 -0
- package/awesome-ai-gateways/CONTRIBUTING.md +49 -0
- package/awesome-ai-gateways/LICENSE +3 -0
- package/awesome-ai-gateways/README.md +190 -0
- package/awesome-selfhosted/.github/ISSUE_TEMPLATE/config.yml +5 -0
- package/awesome-selfhosted/.github/PULL_REQUEST_TEMPLATE.md +1 -0
- package/awesome-selfhosted/LICENSE +376 -0
- package/awesome-selfhosted/README.md +2303 -0
- package/awesome-selfhosted/_static/awesome.png +0 -0
- package/awesome-selfhosted/non-free.md +377 -0
- package/demo-new.tape +71 -0
- package/demo-real.sh +198 -0
- package/demo-simple.tape +205 -0
- package/demo.html +520 -0
- package/demo.sh +85 -0
- package/demo.tape +259 -0
- package/dist/cli/setupWizard.js +194 -0
- package/dist/cli/tui.js +152 -0
- package/dist/cli.js +9 -2
- package/dist/routing/providerRetry.d.ts +5 -0
- package/dist/routing/providerRetry.js +37 -0
- package/dist/routing/providerRetry.js.map +1 -1
- package/docs/CHINESE_PROVIDER_RELIABILITY.md +37 -0
- package/docs/CLAIMS_AND_EVIDENCE.md +58 -0
- package/docs/ENGINEERING_SPEC.md +55 -0
- package/docs/RELEASE_CHECKLIST.md +32 -0
- package/docs/REPRODUCIBILITY.md +63 -0
- package/docs/demo-auto.html +264 -0
- package/docs/demo.html +416 -0
- package/docs/index.html +112 -599
- package/eval/README.md +46 -0
- package/eval/baselines/main.json +12 -0
- package/eval/benchmark_dataset.jsonl +16 -0
- package/eval/check_golden_routes.js +64 -0
- package/eval/datasets/catalog.json +33 -0
- package/eval/datasets/slices/cn_provider_reliability_v1.jsonl +3 -0
- package/eval/datasets/slices/cost_pressure_v1.jsonl +3 -0
- package/eval/datasets/slices/safety_guardrails_v1.jsonl +3 -0
- package/eval/fault_injection_thresholds.json +3 -0
- package/eval/generate_report.js +128 -0
- package/eval/golden_routes.json +114 -0
- package/eval/lib/experiment_registry.js +24 -0
- package/eval/run_eval.js +197 -0
- package/eval/run_fault_injection.js +201 -0
- package/eval/run_shadow_eval.js +85 -0
- package/eval/thresholds.json +9 -0
- package/index.html +667 -0
- package/package.json +29 -168
- package/pytest.ini +2 -0
- package/src/cli/setupWizard.ts +194 -0
- package/src/routing/providerRetry.ts +41 -1
- package/docs/assets/cost-comparison.svg +0 -134
- package/docs/assets/growth-chart-animated.svg +0 -76
- package/docs/assets/og-banner.svg +0 -194
- package/docs/assets/social-preview.svg +0 -194
- package/python/a3m/__pycache__/__init__.cpython-312.pyc +0 -0
- package/python/a3m/__pycache__/client.cpython-312.pyc +0 -0
- package/python/a3m/__pycache__/models.cpython-312.pyc +0 -0
- package/python/a3m/__pycache__/sync_client.cpython-312.pyc +0 -0
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 450" width="800" height="450">
|
|
2
|
+
<defs>
|
|
3
|
+
<!-- Background gradient -->
|
|
4
|
+
<linearGradient id="bg" x1="0%" y1="0%" x2="100%" y2="100%">
|
|
5
|
+
<stop offset="0%" stop-color="#0a0a0f"/>
|
|
6
|
+
<stop offset="50%" stop-color="#12121a"/>
|
|
7
|
+
<stop offset="100%" stop-color="#1a1a2e"/>
|
|
8
|
+
</linearGradient>
|
|
9
|
+
|
|
10
|
+
<!-- Line gradients -->
|
|
11
|
+
<linearGradient id="lineGrad" x1="0%" y1="0%" x2="100%" y2="0%">
|
|
12
|
+
<stop offset="0%" stop-color="#6366f1">
|
|
13
|
+
<animate attributeName="stop-color" values="#6366f1;#8b5cf6;#6366f1" dur="4s" repeatCount="indefinite"/>
|
|
14
|
+
</stop>
|
|
15
|
+
<stop offset="50%" stop-color="#8b5cf6"/>
|
|
16
|
+
<stop offset="100%" stop-color="#06b6d4">
|
|
17
|
+
<animate attributeName="stop-color" values="#06b6d4;#10b981;#06b6d4" dur="4s" repeatCount="indefinite"/>
|
|
18
|
+
</stop>
|
|
19
|
+
</linearGradient>
|
|
20
|
+
|
|
21
|
+
<!-- Area gradient with animation -->
|
|
22
|
+
<linearGradient id="areaGrad" x1="0%" y1="0%" x2="0%" y2="100%">
|
|
23
|
+
<stop offset="0%" stop-color="#6366f1" stop-opacity="0.4">
|
|
24
|
+
<animate attributeName="stop-opacity" values="0.4;0.6;0.4" dur="3s" repeatCount="indefinite"/>
|
|
25
|
+
</stop>
|
|
26
|
+
<stop offset="50%" stop-color="#8b5cf6" stop-opacity="0.2"/>
|
|
27
|
+
<stop offset="100%" stop-color="#06b6d4" stop-opacity="0"/>
|
|
28
|
+
</linearGradient>
|
|
29
|
+
|
|
30
|
+
<!-- Glow filter -->
|
|
31
|
+
<filter id="glow" x="-50%" y="-50%" width="200%" height="200%">
|
|
32
|
+
<feGaussianBlur stdDeviation="4" result="blur"/>
|
|
33
|
+
<feMerge><feMergeNode in="blur"/><feMergeNode in="SourceGraphic"/></feMerge>
|
|
34
|
+
</filter>
|
|
35
|
+
|
|
36
|
+
<!-- Intense glow for highlights -->
|
|
37
|
+
<filter id="glowIntense" x="-100%" y="-100%" width="300%" height="300%">
|
|
38
|
+
<feGaussianBlur stdDeviation="8" result="blur"/>
|
|
39
|
+
<feMerge><feMergeNode in="blur"/><feMergeNode in="SourceGraphic"/></feMerge>
|
|
40
|
+
</filter>
|
|
41
|
+
|
|
42
|
+
<!-- Grid pattern -->
|
|
43
|
+
<pattern id="grid" width="40" height="40" patternUnits="userSpaceOnUse">
|
|
44
|
+
<path d="M 40 0 L 0 0 0 40" fill="none" stroke="#ffffff" stroke-width="0.5" opacity="0.04"/>
|
|
45
|
+
</pattern>
|
|
46
|
+
|
|
47
|
+
<!-- Animated pulse for latest point -->
|
|
48
|
+
<radialGradient id="pulseGrad" cx="50%" cy="50%" r="50%">
|
|
49
|
+
<stop offset="0%" stop-color="#10b981" stop-opacity="0.8"/>
|
|
50
|
+
<stop offset="100%" stop-color="#10b981" stop-opacity="0"/>
|
|
51
|
+
</radialGradient>
|
|
52
|
+
</defs>
|
|
53
|
+
|
|
54
|
+
<!-- Styles -->
|
|
55
|
+
<style>
|
|
56
|
+
@keyframes fadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } }
|
|
57
|
+
@keyframes pulse { 0%, 100% { transform: scale(1); opacity: 0.8; } 50% { transform: scale(1.5); opacity: 0.4; } }
|
|
58
|
+
@keyframes shimmer { 0% { stroke-dashoffset: 1000; } 100% { stroke-dashoffset: 0; } }
|
|
59
|
+
.title { animation: fadeIn 0.8s ease-out; }
|
|
60
|
+
.metric { animation: fadeIn 0.6s ease-out; animation-fill-mode: both; }
|
|
61
|
+
.metric:nth-child(1) { animation-delay: 0.1s; }
|
|
62
|
+
.metric:nth-child(2) { animation-delay: 0.2s; }
|
|
63
|
+
.metric:nth-child(3) { animation-delay: 0.3s; }
|
|
64
|
+
.bar { transition: all 0.3s ease; }
|
|
65
|
+
.bar:hover { filter: url(#glowIntense); transform: scaleY(1.02); }
|
|
66
|
+
</style>
|
|
67
|
+
|
|
68
|
+
<!-- Background -->
|
|
69
|
+
<rect width="800" height="450" fill="url(#bg)"/>
|
|
70
|
+
<rect width="800" height="450" fill="url(#grid)"/>
|
|
71
|
+
|
|
72
|
+
<!-- Ambient glow effects -->
|
|
73
|
+
<ellipse cx="400" cy="225" rx="350" ry="180" fill="#6366f1" opacity="0.05" filter="url(#glow)">
|
|
74
|
+
<animate attributeName="opacity" values="0.05;0.08;0.05" dur="5s" repeatCount="indefinite"/>
|
|
75
|
+
</ellipse>
|
|
76
|
+
|
|
77
|
+
<!-- Header -->
|
|
78
|
+
<g class="title">
|
|
79
|
+
<text x="400" y="45" text-anchor="middle" fill="#ffffff" font-family="system-ui,-apple-system,sans-serif" font-size="26" font-weight="700" letter-spacing="-0.5">
|
|
80
|
+
Downloads Growth
|
|
81
|
+
</text>
|
|
82
|
+
<text x="400" y="68" text-anchor="middle" fill="#8888aa" font-family="system-ui,sans-serif" font-size="13">
|
|
83
|
+
Last 4 weeks trajectory • Live metrics
|
|
84
|
+
</text>
|
|
85
|
+
</g>
|
|
86
|
+
|
|
87
|
+
<!-- Chart area: x=70..750, y=100..350 -->
|
|
88
|
+
<g transform="translate(70, 100)">
|
|
89
|
+
<!-- Y-axis labels -->
|
|
90
|
+
<g fill="#666688" font-family="system-ui,sans-serif" font-size="12">
|
|
91
|
+
<text x="50" y="255" text-anchor="end">0</text>
|
|
92
|
+
<text x="50" y="200" text-anchor="end">500</text>
|
|
93
|
+
<text x="50" y="145" text-anchor="end">1K</text>
|
|
94
|
+
<text x="50" y="90" text-anchor="end">1.5K</text>
|
|
95
|
+
<text x="50" y="55" text-anchor="end">2K</text>
|
|
96
|
+
</g>
|
|
97
|
+
|
|
98
|
+
<!-- Y-axis grid with animation -->
|
|
99
|
+
<g stroke="#ffffff" stroke-opacity="0.06" stroke-dasharray="4,4">
|
|
100
|
+
<line x1="60" y1="250" x2="680" y2="250"/>
|
|
101
|
+
<line x1="60" y1="195" x2="680" y2="195"/>
|
|
102
|
+
<line x1="60" y1="140" x2="680" y2="140"/>
|
|
103
|
+
<line x1="60" y1="85" x2="680" y2="85"/>
|
|
104
|
+
<line x1="60" y1="50" x2="680" y2="50"/>
|
|
105
|
+
</g>
|
|
106
|
+
|
|
107
|
+
<!-- Axes -->
|
|
108
|
+
<line x1="60" y1="250" x2="680" y2="250" stroke="#444466" stroke-width="2"/>
|
|
109
|
+
<line x1="60" y1="50" x2="60" y2="250" stroke="#444466" stroke-width="2"/>
|
|
110
|
+
|
|
111
|
+
<!-- Animated area fill -->
|
|
112
|
+
<path d="M60,230 Q120,228 180,215 T280,175 T380,130 T480,95 T580,70 T680,55 T730,48 L730,250 L60,250 Z" fill="url(#areaGrad)">
|
|
113
|
+
<animate attributeName="opacity" values="0.8;1;0.8" dur="4s" repeatCount="indefinite"/>
|
|
114
|
+
</path>
|
|
115
|
+
|
|
116
|
+
<!-- Glowing line background -->
|
|
117
|
+
<path d="M60,230 Q120,228 180,215 T280,175 T380,130 T480,95 T580,70 T680,55 T730,48"
|
|
118
|
+
stroke="url(#lineGrad)" stroke-width="12" fill="none" stroke-linecap="round" opacity="0.3" filter="url(#glow)">
|
|
119
|
+
<animate attributeName="stroke-width" values="12;14;12" dur="3s" repeatCount="indefinite"/>
|
|
120
|
+
</path>
|
|
121
|
+
|
|
122
|
+
<!-- Main animated line -->
|
|
123
|
+
<path d="M60,230 Q120,228 180,215 T280,175 T380,130 T480,95 T580,70 T680,55 T730,48"
|
|
124
|
+
stroke="url(#lineGrad)" stroke-width="3" fill="none" stroke-linecap="round"/>
|
|
125
|
+
|
|
126
|
+
<!-- Animated data points with pulse -->
|
|
127
|
+
<g>
|
|
128
|
+
<!-- Pulse rings for latest point -->
|
|
129
|
+
<circle cx="730" cy="48" r="20" fill="url(#pulseGrad)">
|
|
130
|
+
<animate attributeName="r" values="15;30;15" dur="2s" repeatCount="indefinite"/>
|
|
131
|
+
<animate attributeName="opacity" values="0.6;0.2;0.6" dur="2s" repeatCount="indefinite"/>
|
|
132
|
+
</circle>
|
|
133
|
+
|
|
134
|
+
<!-- Data points -->
|
|
135
|
+
<circle cx="60" cy="230" r="5" fill="#6366f1" filter="url(#glow)"/>
|
|
136
|
+
<circle cx="180" cy="215" r="5" fill="#7c3aed" filter="url(#glow)"/>
|
|
137
|
+
<circle cx="280" cy="175" r="5" fill="#8b5cf6" filter="url(#glow)"/>
|
|
138
|
+
<circle cx="380" cy="130" r="5" fill="#06b6d4" filter="url(#glow)"/>
|
|
139
|
+
<circle cx="480" cy="95" r="5" fill="#10b981" filter="url(#glow)"/>
|
|
140
|
+
<circle cx="580" cy="70" r="5" fill="#10b981" filter="url(#glow)"/>
|
|
141
|
+
<circle cx="680" cy="55" r="5" fill="#34d399" filter="url(#glow)"/>
|
|
142
|
+
<circle cx="730" cy="48" r="7" fill="#10b981" filter="url(#glowIntense)"/>
|
|
143
|
+
|
|
144
|
+
<!-- Inner white dots -->
|
|
145
|
+
<circle cx="60" cy="230" r="2" fill="#fff"/>
|
|
146
|
+
<circle cx="180" cy="215" r="2" fill="#fff"/>
|
|
147
|
+
<circle cx="280" cy="175" r="2" fill="#fff"/>
|
|
148
|
+
<circle cx="380" cy="130" r="2" fill="#fff"/>
|
|
149
|
+
<circle cx="480" cy="95" r="2" fill="#fff"/>
|
|
150
|
+
<circle cx="580" cy="70" r="2" fill="#fff"/>
|
|
151
|
+
<circle cx="680" cy="55" r="2" fill="#fff"/>
|
|
152
|
+
<circle cx="730" cy="48" r="3" fill="#fff"/>
|
|
153
|
+
</g>
|
|
154
|
+
|
|
155
|
+
<!-- X-axis labels -->
|
|
156
|
+
<g fill="#666688" font-family="system-ui,sans-serif" font-size="12" text-anchor="middle">
|
|
157
|
+
<text x="60" y="270">Week 0</text>
|
|
158
|
+
<text x="280" y="270">Week 1</text>
|
|
159
|
+
<text x="480" y="270">Week 2</text>
|
|
160
|
+
<text x="680" y="270">Week 3</text>
|
|
161
|
+
<text x="730" y="270">Now</text>
|
|
162
|
+
</g>
|
|
163
|
+
</g>
|
|
164
|
+
|
|
165
|
+
<!-- Stats card with animation -->
|
|
166
|
+
<g transform="translate(560, 85)" class="metric">
|
|
167
|
+
<rect x="0" y="0" width="180" height="70" rx="12" fill="#10b981" fill-opacity="0.15" stroke="#10b981" stroke-width="1.5" filter="url(#glow)">
|
|
168
|
+
<animate attributeName="stroke-opacity" values="1;0.6;1" dur="2s" repeatCount="indefinite"/>
|
|
169
|
+
</rect>
|
|
170
|
+
<text x="90" y="30" text-anchor="middle" fill="#10b981" font-family="system-ui,sans-serif" font-size="28" font-weight="800">+149%</text>
|
|
171
|
+
<text x="90" y="52" text-anchor="middle" fill="#8888aa" font-family="system-ui,sans-serif" font-size="12">growth in 4 weeks</text>
|
|
172
|
+
</g>
|
|
173
|
+
|
|
174
|
+
<!-- Metric badges at bottom -->
|
|
175
|
+
<g transform="translate(80, 400)">
|
|
176
|
+
<g class="metric">
|
|
177
|
+
<rect x="0" y="0" width="120" height="35" rx="17" fill="#6366f1" fill-opacity="0.15" stroke="#6366f1" stroke-width="1"/>
|
|
178
|
+
<text x="60" y="23" text-anchor="middle" fill="#a5b4fc" font-family="system-ui,sans-serif" font-size="12" font-weight="500">2,775 downloads</text>
|
|
179
|
+
</g>
|
|
180
|
+
<g class="metric">
|
|
181
|
+
<rect x="140" y="0" width="100" height="35" rx="17" fill="#06b6d4" fill-opacity="0.15" stroke="#06b6d4" stroke-width="1"/>
|
|
182
|
+
<text x="190" y="23" text-anchor="middle" fill="#67e8f9" font-family="system-ui,sans-serif" font-size="12" font-weight="500">430/day avg</text>
|
|
183
|
+
</g>
|
|
184
|
+
<g class="metric">
|
|
185
|
+
<rect x="260" y="0" width="100" height="35" rx="17" fill="#8b5cf6" fill-opacity="0.15" stroke="#8b5cf6" stroke-width="1"/>
|
|
186
|
+
<text x="310" y="23" text-anchor="middle" fill="#c4b5fd" font-family="system-ui,sans-serif" font-size="12" font-weight="500">Target: 1.5K</text>
|
|
187
|
+
</g>
|
|
188
|
+
</g>
|
|
189
|
+
</svg>
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 320" width="600" height="320">
|
|
2
|
+
<defs>
|
|
3
|
+
<linearGradient id="bg" x1="0%" y1="0%" x2="0%" y2="100%">
|
|
4
|
+
<stop offset="0%" stop-color="#0f172a"/>
|
|
5
|
+
<stop offset="100%" stop-color="#1e293b"/>
|
|
6
|
+
</linearGradient>
|
|
7
|
+
<linearGradient id="openaiGrad" x1="0%" y1="0%" x2="0%" y2="100%">
|
|
8
|
+
<stop offset="0%" stop-color="#2472e8"/>
|
|
9
|
+
<stop offset="100%" stop-color="#1a5bc4"/>
|
|
10
|
+
</linearGradient>
|
|
11
|
+
<linearGradient id="a3mGrad" x1="0%" y1="0%" x2="0%" y2="100%">
|
|
12
|
+
<stop offset="0%" stop-color="#10b981"/>
|
|
13
|
+
<stop offset="100%" stop-color="#059669"/>
|
|
14
|
+
</linearGradient>
|
|
15
|
+
</defs>
|
|
16
|
+
|
|
17
|
+
<rect width="600" height="320" fill="url(#bg)"/>
|
|
18
|
+
|
|
19
|
+
<!-- Title -->
|
|
20
|
+
<text x="300" y="35" text-anchor="middle" fill="#e2e8f0" font-family="system-ui,-apple-system,sans-serif" font-size="20" font-weight="700">Cost Comparison — 100 Queries</text>
|
|
21
|
+
|
|
22
|
+
<!-- Chart area -->
|
|
23
|
+
<g transform="translate(80, 70)">
|
|
24
|
+
<!-- Y-axis -->
|
|
25
|
+
<line x1="0" y1="0" x2="0" y2="180" stroke="#334155" stroke-width="1.5"/>
|
|
26
|
+
<line x1="0" y1="180" x2="440" y2="180" stroke="#334155" stroke-width="1.5"/>
|
|
27
|
+
|
|
28
|
+
<!-- Y-axis labels -->
|
|
29
|
+
<g fill="#64748b" font-family="system-ui,sans-serif" font-size="11" text-anchor="end">
|
|
30
|
+
<text x="-10" y="5">$20</text>
|
|
31
|
+
<text x="-10" y="50">$15</text>
|
|
32
|
+
<text x="-10" y="95">$10</text>
|
|
33
|
+
<text x="-10" y="140">$5</text>
|
|
34
|
+
<text x="-10" y="185">$0</text>
|
|
35
|
+
</g>
|
|
36
|
+
|
|
37
|
+
<!-- Grid lines -->
|
|
38
|
+
<g stroke="rgba(255,255,255,0.05)" stroke-width="1">
|
|
39
|
+
<line x1="0" y1="45" x2="440" y2="45"/>
|
|
40
|
+
<line x1="0" y1="90" x2="440" y2="90"/>
|
|
41
|
+
<line x1="0" y1="135" x2="440" y2="135"/>
|
|
42
|
+
</g>
|
|
43
|
+
|
|
44
|
+
<!-- OpenAI Bar (GPT-4) -->
|
|
45
|
+
<rect x="60" y="22" width="120" height="158" rx="6" fill="url(#openaiGrad)"/>
|
|
46
|
+
<text x="120" y="50" text-anchor="middle" fill="#fff" font-family="system-ui,sans-serif" font-size="16" font-weight="700">$15.00</text>
|
|
47
|
+
<text x="120" y="200" text-anchor="middle" fill="#94a3b8" font-family="system-ui,sans-serif" font-size="12">GPT-4</text>
|
|
48
|
+
<text x="120" y="215" text-anchor="middle" fill="#64748b" font-family="system-ui,sans-serif" font-size="10">$0.15/1K</text>
|
|
49
|
+
|
|
50
|
+
<!-- A3M Bar (routed) -->
|
|
51
|
+
<rect x="280" y="157" width="120" height="23" rx="6" fill="url(#a3mGrad)"/>
|
|
52
|
+
<text x="340" y="185" text-anchor="middle" fill="#10b981" font-family="system-ui,sans-serif" font-size="16" font-weight="700">$5.75</text>
|
|
53
|
+
<text x="340" y="200" text-anchor="middle" fill="#94a3b8" font-family="system-ui,sans-serif" font-size="12">A3M Router</text>
|
|
54
|
+
<text x="340" y="215" text-anchor="middle" fill="#64748b" font-family="system-ui,sans-serif" font-size="10">62% savings</text>
|
|
55
|
+
|
|
56
|
+
<!-- Savings indicator -->
|
|
57
|
+
<path d="M200,100 L260,140" stroke="#10b981" stroke-width="2" stroke-dasharray="4,4"/>
|
|
58
|
+
<text x="230" y="115" text-anchor="middle" fill="#10b981" font-family="system-ui,sans-serif" font-size="12" font-weight="600">62%</text>
|
|
59
|
+
<text x="230" y="130" text-anchor="middle" fill="#10b981" font-family="system-ui,sans-serif" font-size="11">cheaper</text>
|
|
60
|
+
</g>
|
|
61
|
+
|
|
62
|
+
<!-- Bottom note -->
|
|
63
|
+
<text x="300" y="310" text-anchor="middle" fill="#64748b" font-family="system-ui,sans-serif" font-size="12">Based on actual benchmark: 100 mixed queries (code, math, creative)</text>
|
|
64
|
+
</svg>
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 300" width="600" height="300">
|
|
2
|
+
<defs>
|
|
3
|
+
<linearGradient id="bg" x1="0%" y1="0%" x2="0%" y2="100%">
|
|
4
|
+
<stop offset="0%" stop-color="#0f172a"/>
|
|
5
|
+
<stop offset="100%" stop-color="#1e293b"/>
|
|
6
|
+
</linearGradient>
|
|
7
|
+
<linearGradient id="lineGrad" x1="0%" y1="0%" x2="100%" y2="0%">
|
|
8
|
+
<stop offset="0%" stop-color="#6366f1"/>
|
|
9
|
+
<stop offset="50%" stop-color="#8b5cf6"/>
|
|
10
|
+
<stop offset="100%" stop-color="#06b6d4"/>
|
|
11
|
+
</linearGradient>
|
|
12
|
+
<linearGradient id="areaGrad" x1="0%" y1="0%" x2="0%" y2="100%">
|
|
13
|
+
<stop offset="0%" stop-color="#6366f1" stop-opacity="0.4"/>
|
|
14
|
+
<stop offset="100%" stop-color="#6366f1" stop-opacity="0"/>
|
|
15
|
+
</linearGradient>
|
|
16
|
+
</defs>
|
|
17
|
+
|
|
18
|
+
<rect width="600" height="300" fill="url(#bg)"/>
|
|
19
|
+
|
|
20
|
+
<!-- Title -->
|
|
21
|
+
<text x="300" y="35" text-anchor="middle" fill="#e2e8f0" font-family="system-ui,-apple-system,sans-serif" font-size="18" font-weight="600">A3M Router — Downloads Growth</text>
|
|
22
|
+
|
|
23
|
+
<!-- Y-axis labels -->
|
|
24
|
+
<g fill="#64748b" font-family="system-ui,sans-serif" font-size="11">
|
|
25
|
+
<text x="50" y="280">0</text>
|
|
26
|
+
<text x="50" y="220">500</text>
|
|
27
|
+
<text x="50" y="160">1K</text>
|
|
28
|
+
<text x="50" y="100">1.5K</text>
|
|
29
|
+
<text x="50" y="55">2K</text>
|
|
30
|
+
</g>
|
|
31
|
+
|
|
32
|
+
<!-- Grid lines -->
|
|
33
|
+
<g stroke="rgba(255,255,255,0.05)" stroke-width="1">
|
|
34
|
+
<line x1="80" y1="260" x2="560" y2="260"/>
|
|
35
|
+
<line x1="80" y1="200" x2="560" y2="200"/>
|
|
36
|
+
<line x1="80" y1="140" x2="560" y2="140"/>
|
|
37
|
+
<line x1="80" y1="80" x2="560" y2="80"/>
|
|
38
|
+
</g>
|
|
39
|
+
|
|
40
|
+
<!-- Axis -->
|
|
41
|
+
<line x1="80" y1="260" x2="560" y2="260" stroke="#334155" stroke-width="1.5"/>
|
|
42
|
+
<line x1="80" y1="80" x2="80" y2="260" stroke="#334155" stroke-width="1.5"/>
|
|
43
|
+
|
|
44
|
+
<!-- Area fill (simplified growth curve) -->
|
|
45
|
+
<path d="M80,240 Q150,235 200,220 T300,180 T400,120 T500,80 T560,65 L560,260 L80,260 Z" fill="url(#areaGrad)"/>
|
|
46
|
+
|
|
47
|
+
<!-- Growth line -->
|
|
48
|
+
<path d="M80,240 Q150,235 200,220 T300,180 T400,120 T500,80 T560,65" stroke="url(#lineGrad)" stroke-width="3" fill="none" stroke-linecap="round"/>
|
|
49
|
+
|
|
50
|
+
<!-- Data points -->
|
|
51
|
+
<circle cx="80" cy="240" r="5" fill="#6366f1"/>
|
|
52
|
+
<circle cx="200" cy="220" r="5" fill="#8b5cf6"/>
|
|
53
|
+
<circle cx="300" cy="180" r="5" fill="#8b5cf6"/>
|
|
54
|
+
<circle cx="400" cy="120" r="5" fill="#06b6d4"/>
|
|
55
|
+
<circle cx="500" cy="80" r="5" fill="#06b6d4"/>
|
|
56
|
+
<circle cx="560" cy="65" r="7" fill="#06b6d4"/>
|
|
57
|
+
|
|
58
|
+
<!-- X-axis labels -->
|
|
59
|
+
<g fill="#64748b" font-family="system-ui,sans-serif" font-size="11" text-anchor="middle">
|
|
60
|
+
<text x="80" y="280">Start</text>
|
|
61
|
+
<text x="280" y="280">Week 2</text>
|
|
62
|
+
<text x="480" y="280">Week 4</text>
|
|
63
|
+
</g>
|
|
64
|
+
|
|
65
|
+
<!-- Highlight box -->
|
|
66
|
+
<rect x="480" y="50" width="100" height="45" rx="6" fill="rgba(6,182,212,0.15)" stroke="#06b6d4" stroke-width="1"/>
|
|
67
|
+
<text x="530" y="72" text-anchor="middle" fill="#06b6d4" font-family="system-ui,sans-serif" font-size="20" font-weight="700">+149%</text>
|
|
68
|
+
<text x="530" y="87" text-anchor="middle" fill="#94a3b8" font-family="system-ui,sans-serif" font-size="10">4 weeks</text>
|
|
69
|
+
</svg>
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 300" width="800" height="300">
|
|
2
|
+
<defs>
|
|
3
|
+
<linearGradient id="bg" x1="0%" y1="0%" x2="100%" y2="100%">
|
|
4
|
+
<stop offset="0%" stop-color="#0f172a"/>
|
|
5
|
+
<stop offset="100%" stop-color="#1e1b4b"/>
|
|
6
|
+
</linearGradient>
|
|
7
|
+
<linearGradient id="accent" x1="0%" y1="0%" x2="100%" y2="0%">
|
|
8
|
+
<stop offset="0%" stop-color="#6366f1"/>
|
|
9
|
+
<stop offset="100%" stop-color="#06b6d4"/>
|
|
10
|
+
</linearGradient>
|
|
11
|
+
<linearGradient id="barGrad" x1="0" y1="1" x2="0" y2="0">
|
|
12
|
+
<stop offset="0%" stop-color="#6366f1"/>
|
|
13
|
+
<stop offset="100%" stop-color="#a78bfa"/>
|
|
14
|
+
</linearGradient>
|
|
15
|
+
</defs>
|
|
16
|
+
|
|
17
|
+
<rect width="800" height="300" fill="url(#bg)"/>
|
|
18
|
+
|
|
19
|
+
<!-- Grid lines -->
|
|
20
|
+
<g stroke="rgba(255,255,255,0.05)" stroke-width="1">
|
|
21
|
+
<line x1="0" y1="75" x2="800" y2="75"/>
|
|
22
|
+
<line x1="0" y1="150" x2="800" y2="150"/>
|
|
23
|
+
<line x1="0" y1="225" x2="800" y2="225"/>
|
|
24
|
+
</g>
|
|
25
|
+
|
|
26
|
+
<!-- Title -->
|
|
27
|
+
<text x="400" y="45" text-anchor="middle" fill="#e2e8f0" font-family="system-ui,-apple-system,sans-serif" font-size="24" font-weight="700">One Prompt In. The Right Model Out.</text>
|
|
28
|
+
|
|
29
|
+
<!-- Routing Flow -->
|
|
30
|
+
<g transform="translate(100, 100)">
|
|
31
|
+
<!-- Input box -->
|
|
32
|
+
<rect x="0" y="0" width="140" height="60" rx="8" fill="url(#accent)" opacity="0.2" stroke="url(#accent)" stroke-width="2"/>
|
|
33
|
+
<text x="70" y="28" text-anchor="middle" fill="#e2e8f0" font-family="system-ui,sans-serif" font-size="12" opacity="0.7">YOUR PROMPT</text>
|
|
34
|
+
<text x="70" y="45" text-anchor="middle" fill="#fff" font-family="system-ui,sans-serif" font-size="11">"Write Python sort"</text>
|
|
35
|
+
|
|
36
|
+
<!-- Arrow 1 -->
|
|
37
|
+
<path d="M150,30 L200,30" stroke="url(#accent)" stroke-width="2" fill="none"/>
|
|
38
|
+
<polygon points="200,25 210,30 200,35" fill="#06b6d4"/>
|
|
39
|
+
|
|
40
|
+
<!-- A3M Box -->
|
|
41
|
+
<rect x="220" y="0" width="100" height="60" rx="8" fill="#6366f1" opacity="0.3" stroke="#6366f1" stroke-width="2"/>
|
|
42
|
+
<text x="270" y="28" text-anchor="middle" fill="#fff" font-family="system-ui,sans-serif" font-size="14" font-weight="700">A3M</text>
|
|
43
|
+
<text x="270" y="45" text-anchor="middle" fill="#a78bfa" font-family="system-ui,sans-serif" font-size="10">Router</text>
|
|
44
|
+
|
|
45
|
+
<!-- Arrow 2 -->
|
|
46
|
+
<path d="M330,30 L380,30" stroke="url(#accent)" stroke-width="2" fill="none"/>
|
|
47
|
+
<polygon points="380,25 390,30 380,35" fill="#06b6d4"/>
|
|
48
|
+
|
|
49
|
+
<!-- Output box -->
|
|
50
|
+
<rect x="400" y="0" width="140" height="60" rx="8" fill="#10b981" opacity="0.2" stroke="#10b981" stroke-width="2"/>
|
|
51
|
+
<text x="470" y="28" text-anchor="middle" fill="#e2e8f0" font-family="system-ui,sans-serif" font-size="12" opacity="0.7">BEST MODEL</text>
|
|
52
|
+
<text x="470" y="45" text-anchor="middle" fill="#10b981" font-family="system-ui,sans-serif" font-size="11">Groq (free, fast)</text>
|
|
53
|
+
</g>
|
|
54
|
+
|
|
55
|
+
<!-- Metrics row -->
|
|
56
|
+
<g transform="translate(80, 200)">
|
|
57
|
+
<!-- Metric 1 -->
|
|
58
|
+
<g transform="translate(0, 0)">
|
|
59
|
+
<text x="80" y="20" text-anchor="middle" fill="#10b981" font-family="system-ui,sans-serif" font-size="32" font-weight="700">100%</text>
|
|
60
|
+
<text x="80" y="45" text-anchor="middle" fill="#94a3b8" font-family="system-ui,sans-serif" font-size="13">Routing Accuracy</text>
|
|
61
|
+
</g>
|
|
62
|
+
<!-- Metric 2 -->
|
|
63
|
+
<g transform="translate(240, 0)">
|
|
64
|
+
<text x="80" y="20" text-anchor="middle" fill="#06b6d4" font-family="system-ui,sans-serif" font-size="32" font-weight="700">$0.33</text>
|
|
65
|
+
<text x="80" y="45" text-anchor="middle" fill="#94a3b8" font-family="system-ui,sans-serif" font-size="13">Savings per Query</text>
|
|
66
|
+
</g>
|
|
67
|
+
<!-- Metric 3 -->
|
|
68
|
+
<g transform="translate(480, 0)">
|
|
69
|
+
<text x="80" y="20" text-anchor="middle" fill="#a78bfa" font-family="system-ui,sans-serif" font-size="32" font-weight="700">100%</text>
|
|
70
|
+
<text x="80" y="45" text-anchor="middle" fill="#94a3b8" font-family="system-ui,sans-serif" font-size="13">Fault Pass Rate</text>
|
|
71
|
+
</g>
|
|
72
|
+
<!-- Metric 4 -->
|
|
73
|
+
<g transform="translate(720, 0)">
|
|
74
|
+
<text x="80" y="20" text-anchor="middle" fill="#f472b6" font-family="system-ui,sans-serif" font-size="32" font-weight="700">47+</text>
|
|
75
|
+
<text x="80" y="45" text-anchor="middle" fill="#94a3b8" font-family="system-ui,sans-serif" font-size="13">Providers</text>
|
|
76
|
+
</g>
|
|
77
|
+
</g>
|
|
78
|
+
|
|
79
|
+
<!-- Bottom tagline -->
|
|
80
|
+
<text x="400" y="285" text-anchor="middle" fill="#64748b" font-family="system-ui,sans-serif" font-size="12">npm install adaptive-memory-multi-model-router • npx a3m-router serve</text>
|
|
81
|
+
</svg>
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100">
|
|
2
|
+
<defs>
|
|
3
|
+
<linearGradient id="bg" x1="0%" y1="0%" x2="100%" y2="100%">
|
|
4
|
+
<stop offset="0%" stop-color="#6366f1"/>
|
|
5
|
+
<stop offset="100%" stop-color="#06b6d4"/>
|
|
6
|
+
</linearGradient>
|
|
7
|
+
</defs>
|
|
8
|
+
|
|
9
|
+
<!-- Background circle -->
|
|
10
|
+
<circle cx="50" cy="50" r="48" fill="url(#bg)"/>
|
|
11
|
+
|
|
12
|
+
<!-- A3M text -->
|
|
13
|
+
<text x="50" y="58" text-anchor="middle" fill="#fff" font-family="system-ui,-apple-system,sans-serif" font-size="36" font-weight="800">A3</text>
|
|
14
|
+
|
|
15
|
+
<!-- Router indicator dots -->
|
|
16
|
+
<g transform="translate(50, 75)">
|
|
17
|
+
<circle cx="-12" cy="0" r="3" fill="rgba(255,255,255,0.6)"/>
|
|
18
|
+
<circle cx="0" cy="0" r="3" fill="rgba(255,255,255,0.8)"/>
|
|
19
|
+
<circle cx="12" cy="0" r="3" fill="#fff"/>
|
|
20
|
+
</g>
|
|
21
|
+
</svg>
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1200 630" width="1200" height="630">
|
|
2
|
+
<defs>
|
|
3
|
+
<linearGradient id="bg" x1="0%" y1="0%" x2="100%" y2="100%">
|
|
4
|
+
<stop offset="0%" stop-color="#0f172a"/>
|
|
5
|
+
<stop offset="50%" stop-color="#1e1b4b"/>
|
|
6
|
+
<stop offset="100%" stop-color="#312e81"/>
|
|
7
|
+
</linearGradient>
|
|
8
|
+
<linearGradient id="accent" x1="0%" y1="0%" x2="100%" y2="0%">
|
|
9
|
+
<stop offset="0%" stop-color="#6366f1"/>
|
|
10
|
+
<stop offset="100%" stop-color="#06b6d4"/>
|
|
11
|
+
</linearGradient>
|
|
12
|
+
<linearGradient id="barGrad" x1="0" y1="1" x2="0" y2="0">
|
|
13
|
+
<stop offset="0%" stop-color="#6366f1"/>
|
|
14
|
+
<stop offset="100%" stop-color="#a78bfa"/>
|
|
15
|
+
</linearGradient>
|
|
16
|
+
<filter id="glow">
|
|
17
|
+
<feGaussianBlur stdDeviation="8" result="blur"/>
|
|
18
|
+
<feMerge>
|
|
19
|
+
<feMergeNode in="blur"/>
|
|
20
|
+
<feMergeNode in="SourceGraphic"/>
|
|
21
|
+
</feMerge>
|
|
22
|
+
</filter>
|
|
23
|
+
</defs>
|
|
24
|
+
|
|
25
|
+
<rect width="1200" height="630" fill="url(#bg)"/>
|
|
26
|
+
|
|
27
|
+
<!-- Subtle grid -->
|
|
28
|
+
<g stroke="rgba(255,255,255,0.03)" stroke-width="1">
|
|
29
|
+
<line x1="0" y1="157" x2="1200" y2="157"/>
|
|
30
|
+
<line x1="0" y1="315" x2="1200" y2="315"/>
|
|
31
|
+
<line x1="0" y1="473" x2="1200" y2="473"/>
|
|
32
|
+
<line x1="300" y1="0" x2="300" y2="630"/>
|
|
33
|
+
<line x1="600" y1="0" x2="600" y2="630"/>
|
|
34
|
+
<line x1="900" y1="0" x2="900" y2="630"/>
|
|
35
|
+
</g>
|
|
36
|
+
|
|
37
|
+
<!-- Hero Text -->
|
|
38
|
+
<text x="600" y="100" text-anchor="middle" fill="#fff" font-family="system-ui,-apple-system,sans-serif" font-size="52" font-weight="800" filter="url(#glow)">A3M Router</text>
|
|
39
|
+
<text x="600" y="160" text-anchor="middle" fill="url(#accent)" font-family="system-ui,-apple-system,sans-serif" font-size="28" font-weight="600">One prompt in. The right model out.</text>
|
|
40
|
+
|
|
41
|
+
<!-- Flow Diagram -->
|
|
42
|
+
<g transform="translate(200, 200)">
|
|
43
|
+
<!-- Input -->
|
|
44
|
+
<rect x="0" y="20" width="180" height="80" rx="12" fill="rgba(99,102,241,0.15)" stroke="#6366f1" stroke-width="2"/>
|
|
45
|
+
<text x="90" y="50" text-anchor="middle" fill="#94a3b8" font-family="system-ui,sans-serif" font-size="14">YOUR PROMPT</text>
|
|
46
|
+
<text x="90" y="80" text-anchor="middle" fill="#e2e8f0" font-family="system-ui,sans-serif" font-size="16">"Write Python sort"</text>
|
|
47
|
+
|
|
48
|
+
<!-- Arrow 1 -->
|
|
49
|
+
<path d="M190,60 L280,60" stroke="url(#accent)" stroke-width="3" fill="none" stroke-linecap="round"/>
|
|
50
|
+
<polygon points="280,52 295,60 280,68" fill="#06b6d4"/>
|
|
51
|
+
|
|
52
|
+
<!-- A3M Router Box -->
|
|
53
|
+
<rect x="300" y="0" width="140" height="120" rx="12" fill="#6366f1" opacity="0.3" stroke="#6366f1" stroke-width="2"/>
|
|
54
|
+
<text x="370" y="45" text-anchor="middle" fill="#fff" font-family="system-ui,sans-serif" font-size="24" font-weight="800">A3M</text>
|
|
55
|
+
<text x="370" y="75" text-anchor="middle" fill="#a78bfa" font-family="system-ui,sans-serif" font-size="16">Router</text>
|
|
56
|
+
<text x="370" y="105" text-anchor="middle" fill="#06b6d4" font-family="system-ui,sans-serif" font-size="13">12 signals</text>
|
|
57
|
+
|
|
58
|
+
<!-- Arrow 2 -->
|
|
59
|
+
<path d="M450,60 L540,60" stroke="url(#accent)" stroke-width="3" fill="none" stroke-linecap="round"/>
|
|
60
|
+
<polygon points="540,52 555,60 540,68" fill="#06b6d4"/>
|
|
61
|
+
|
|
62
|
+
<!-- Output -->
|
|
63
|
+
<rect x="560" y="20" width="180" height="80" rx="12" fill="rgba(16,185,129,0.15)" stroke="#10b981" stroke-width="2"/>
|
|
64
|
+
<text x="650" y="50" text-anchor="middle" fill="#94a3b8" font-family="system-ui,sans-serif" font-size="14">BEST MODEL</text>
|
|
65
|
+
<text x="650" y="80" text-anchor="middle" fill="#10b981" font-family="system-ui,sans-serif" font-size="16">Groq (free, fast)</text>
|
|
66
|
+
</g>
|
|
67
|
+
|
|
68
|
+
<!-- Metrics Row -->
|
|
69
|
+
<g transform="translate(100, 380)">
|
|
70
|
+
<!-- Metric 1 -->
|
|
71
|
+
<g transform="translate(0, 0)">
|
|
72
|
+
<text x="150" y="30" text-anchor="middle" fill="#10b981" font-family="system-ui,sans-serif" font-size="48" font-weight="800">100%</text>
|
|
73
|
+
<text x="150" y="65" text-anchor="middle" fill="#94a3b8" font-family="system-ui,sans-serif" font-size="16">Routing Accuracy</text>
|
|
74
|
+
</g>
|
|
75
|
+
<!-- Metric 2 -->
|
|
76
|
+
<g transform="translate(300, 0)">
|
|
77
|
+
<text x="150" y="30" text-anchor="middle" fill="#06b6d4" font-family="system-ui,sans-serif" font-size="48" font-weight="800">62%</text>
|
|
78
|
+
<text x="150" y="65" text-anchor="middle" fill="#94a3b8" font-family="system-ui,sans-serif" font-size="16">Cost Savings</text>
|
|
79
|
+
</g>
|
|
80
|
+
<!-- Metric 3 -->
|
|
81
|
+
<g transform="translate(600, 0)">
|
|
82
|
+
<text x="150" y="30" text-anchor="middle" fill="#a78bfa" font-family="system-ui,sans-serif" font-size="48" font-weight="800">100%</text>
|
|
83
|
+
<text x="150" y="65" text-anchor="middle" fill="#94a3b8" font-family="system-ui,sans-serif" font-size="16">Fault Pass Rate</text>
|
|
84
|
+
</g>
|
|
85
|
+
<!-- Metric 4 -->
|
|
86
|
+
<g transform="translate(900, 0)">
|
|
87
|
+
<text x="150" y="30" text-anchor="middle" fill="#f472b6" font-family="system-ui,sans-serif" font-size="48" font-weight="800">47+</text>
|
|
88
|
+
<text x="150" y="65" text-anchor="middle" fill="#94a3b8" font-family="system-ui,sans-serif" font-size="16">Providers</text>
|
|
89
|
+
</g>
|
|
90
|
+
</g>
|
|
91
|
+
|
|
92
|
+
<!-- Bottom CTA -->
|
|
93
|
+
<g transform="translate(0, 520)">
|
|
94
|
+
<rect x="350" y="10" width="500" height="60" rx="30" fill="url(#accent)"/>
|
|
95
|
+
<text x="600" y="48" text-anchor="middle" fill="#fff" font-family="system-ui,sans-serif" font-size="22" font-weight="600">npm install adaptive-memory-multi-model-router</text>
|
|
96
|
+
</g>
|
|
97
|
+
|
|
98
|
+
<!-- Footer note -->
|
|
99
|
+
<text x="600" y="615" text-anchor="middle" fill="#475569" font-family="system-ui,sans-serif" font-size="14">Open-source • Zero ML • 19.5KB • MIT License</text>
|
|
100
|
+
</svg>
|