adaptive-memory-multi-model-router 2.0.3 → 2.0.4
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 +33 -19
- package/README.md +7 -0
- package/articles/HN_FINAL.md +37 -36
- package/articles/devto-llm-routing.md +21 -5
- package/articles/hackernews-show-hn.md +23 -6
- package/articles/reddit-ml.md +10 -3
- package/articles/twitter-thread-cost-savings.md +11 -7
- package/assets/growth-chart-animated.svg +76 -0
- package/demo/demo.svg +75 -0
- package/docs/HN_SUBMISSION_FINAL.md +146 -0
- package/docs/SEO_AUDIT.md +241 -0
- package/docs-site/index.html +326 -41
- package/llms.txt +29 -12
- package/package.json +1 -1
- package/public/robots.txt +13 -0
- package/public/sitemap.xml +33 -0
package/LAUNCH.md
CHANGED
|
@@ -16,12 +16,15 @@
|
|
|
16
16
|
|
|
17
17
|
**Title**:
|
|
18
18
|
```
|
|
19
|
-
Show HN: A3M Router – LLM
|
|
19
|
+
Show HN: A3M Router – We built an LLM router. Nobody cared for 2 days. Then word-of-mouth kicked in.
|
|
20
20
|
```
|
|
21
21
|
|
|
22
22
|
**Text** (copy from `articles/hackernews-show-hn.md`):
|
|
23
23
|
```
|
|
24
|
-
|
|
24
|
+
Day 1: 552 downloads. Day 2: 320 downloads. We thought it was dead.
|
|
25
|
+
Day 3: 1,903 downloads. 245% growth from Day 1. Zero marketing budget.
|
|
26
|
+
|
|
27
|
+
2,775 downloads in 3 days. All organic.
|
|
25
28
|
|
|
26
29
|
A3M Router (adaptive-memory-multi-model-router) is a production-ready LLM routing library that actually optimizes for cost vs quality based on your query.
|
|
27
30
|
|
|
@@ -69,8 +72,8 @@ npx a3m-router benchmark # Compare all providers
|
|
|
69
72
|
|
|
70
73
|
Performance
|
|
71
74
|
-----------
|
|
72
|
-
•
|
|
73
|
-
•
|
|
75
|
+
• 2,775 downloads in 3 days
|
|
76
|
+
• 1,903 downloads on Day 3 alone (245% growth from Day 1)
|
|
74
77
|
• Zero dependencies (except nanoid)
|
|
75
78
|
• 3.0 MB unpacked
|
|
76
79
|
|
|
@@ -92,11 +95,12 @@ GitHub: https://github.com/Das-rebel/adaptive-memory-multi-model-router
|
|
|
92
95
|
|
|
93
96
|
**Tweet 1/10**:
|
|
94
97
|
```
|
|
95
|
-
|
|
98
|
+
Day 1: 552 downloads. Day 2: 320 downloads. We thought nobody cared.
|
|
99
|
+
Day 3: 1,903 downloads. 245% growth. Zero marketing budget.
|
|
96
100
|
|
|
97
|
-
|
|
101
|
+
2,775 downloads in 3 days for our LLM router.
|
|
98
102
|
|
|
99
|
-
Here's how A3M Router works 🧵👇
|
|
103
|
+
Here's the story + how A3M Router works 🧵👇
|
|
100
104
|
```
|
|
101
105
|
|
|
102
106
|
**Tweet 2/10**:
|
|
@@ -186,12 +190,13 @@ That's it. No config needed.
|
|
|
186
190
|
|
|
187
191
|
**Tweet 9/10**:
|
|
188
192
|
```
|
|
189
|
-
📊
|
|
193
|
+
📊 2,775 downloads in 3 days
|
|
194
|
+
📈 245% growth Day 1 → Day 3
|
|
190
195
|
🧪 33 tests passing
|
|
191
|
-
🏷️ 156 keywords
|
|
192
196
|
🔌 116 integrations
|
|
193
197
|
|
|
194
|
-
|
|
198
|
+
Day 1: 552. Day 2: 320. Day 3: 1,903.
|
|
199
|
+
Word-of-mouth works. Zero marketing spend.
|
|
195
200
|
```
|
|
196
201
|
|
|
197
202
|
**Tweet 10/10**:
|
|
@@ -217,7 +222,7 @@ Questions? Drop them below! 👇
|
|
|
217
222
|
### 3. Dev.to (PRIORITY 2)
|
|
218
223
|
**URL**: https://dev.to/new
|
|
219
224
|
|
|
220
|
-
**Title**: "Building an LLM Router That Actually Works:
|
|
225
|
+
**Title**: "Building an LLM Router That Actually Works: 2,775 Downloads in 3 Days, Zero Marketing Budget"
|
|
221
226
|
|
|
222
227
|
**Content**: Copy from `articles/devto-llm-routing.md`
|
|
223
228
|
|
|
@@ -230,7 +235,7 @@ Questions? Drop them below! 👇
|
|
|
230
235
|
### 4. Reddit r/MachineLearning (PRIORITY 2)
|
|
231
236
|
**URL**: https://www.reddit.com/r/MachineLearning/submit
|
|
232
237
|
|
|
233
|
-
**Title**: "[P] A3M Router: Production-ready LLM routing
|
|
238
|
+
**Title**: "[P] A3M Router: Production-ready LLM routing — 2,775 downloads in 3 days, 245% growth, zero marketing"
|
|
234
239
|
|
|
235
240
|
**Content**: Copy from `articles/reddit-ml.md`
|
|
236
241
|
|
|
@@ -271,7 +276,9 @@ console.log(result.estimated_cost); // $0.0004
|
|
|
271
276
|
**Results**
|
|
272
277
|
- 70% cost reduction
|
|
273
278
|
- 2x speed improvement
|
|
274
|
-
-
|
|
279
|
+
- 2,775 downloads in 3 days
|
|
280
|
+
- 1,903 downloads on Day 3 alone (245% growth from Day 1)
|
|
281
|
+
- Zero marketing budget
|
|
275
282
|
- 33 tests passing
|
|
276
283
|
|
|
277
284
|
**Try it**
|
|
@@ -301,7 +308,7 @@ Would love your feedback!
|
|
|
301
308
|
### 7. Medium (PRIORITY 3)
|
|
302
309
|
**URL**: https://medium.com/new-story
|
|
303
310
|
|
|
304
|
-
**Title**: "Building a Production-Ready LLM Router:
|
|
311
|
+
**Title**: "Building a Production-Ready LLM Router: 2,775 Downloads in 3 Days on Zero Marketing"
|
|
305
312
|
|
|
306
313
|
**Content**: Copy from `articles/medium-building-llm-router.md`
|
|
307
314
|
|
|
@@ -312,7 +319,7 @@ Would love your feedback!
|
|
|
312
319
|
### 8. IndieHackers (PRIORITY 3)
|
|
313
320
|
**URL**: https://www.indiehackers.com/post/new
|
|
314
321
|
|
|
315
|
-
**Title**: "Show IH: A3M Router - Cut LLM API costs by 70% with intelligent routing"
|
|
322
|
+
**Title**: "Show IH: A3M Router - Cut LLM API costs by 70% with intelligent routing (2,775 downloads in 3 days)"
|
|
316
323
|
|
|
317
324
|
**Content**:
|
|
318
325
|
```
|
|
@@ -334,7 +341,10 @@ Built a learned routing system that:
|
|
|
334
341
|
- 70% cost reduction ($2,400 → $720/month)
|
|
335
342
|
- 2x speed improvement
|
|
336
343
|
- 94% quality retention
|
|
337
|
-
-
|
|
344
|
+
- 2,775 downloads in 3 days on npm
|
|
345
|
+
- 1,903 downloads on Day 3 alone
|
|
346
|
+
- 245% growth from Day 1 to Day 3
|
|
347
|
+
- Zero marketing budget — all word-of-mouth
|
|
338
348
|
|
|
339
349
|
**Tech Stack**
|
|
340
350
|
- Node.js/TypeScript
|
|
@@ -386,10 +396,11 @@ npx a3m-router route "Your query"
|
|
|
386
396
|
```
|
|
387
397
|
|
|
388
398
|
**Stats:**
|
|
389
|
-
📈
|
|
399
|
+
📈 2,775 downloads in 3 days
|
|
400
|
+
📈 1,903 downloads on Day 3 alone
|
|
401
|
+
📈 245% growth from Day 1 to Day 3
|
|
390
402
|
🧪 33 tests passing
|
|
391
403
|
🔌 116 integrations
|
|
392
|
-
🏷️ 156 keywords
|
|
393
404
|
|
|
394
405
|
GitHub: https://github.com/Das-rebel/adaptive-memory-multi-model-router
|
|
395
406
|
```
|
|
@@ -550,7 +561,10 @@ asciinema upload demo.cast
|
|
|
550
561
|
```
|
|
551
562
|
🚀 A3M Router is LIVE!
|
|
552
563
|
|
|
553
|
-
|
|
564
|
+
2,775 downloads in 3 days. Zero marketing budget.
|
|
565
|
+
|
|
566
|
+
Day 1: 552 downloads. Day 2: 320. Day 3: 1,903.
|
|
567
|
+
That's 245% growth. All word-of-mouth.
|
|
554
568
|
|
|
555
569
|
✨ Intelligent LLM routing
|
|
556
570
|
💰 50-80% cost savings
|
package/README.md
CHANGED
|
@@ -29,6 +29,13 @@ A3M Router sits between your code and your LLM providers. It analyzes each query
|
|
|
29
29
|
|
|
30
30
|
**Result: 40-70% cost savings with no quality loss on simple queries.**
|
|
31
31
|
|
|
32
|
+
|
|
33
|
+
## Demo
|
|
34
|
+
|
|
35
|
+

|
|
36
|
+
|
|
37
|
+
*Simple queries → free providers. Complex queries → capable models. Automatically.*
|
|
38
|
+
|
|
32
39
|
---
|
|
33
40
|
|
|
34
41
|
## The Problem
|
package/articles/HN_FINAL.md
CHANGED
|
@@ -1,14 +1,21 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: "Show HN:
|
|
2
|
+
title: "Show HN: A3M Router – We built an LLM router. Nobody cared for 2 days. Then word-of-mouth kicked in."
|
|
3
3
|
---
|
|
4
4
|
|
|
5
|
-
# Show HN:
|
|
5
|
+
# Show HN: A3M Router – We built an LLM router. Nobody cared for 2 days. Then word-of-mouth kicked in.
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
Day 1: 552 downloads. Day 2: 320 downloads. We thought it was dead.
|
|
8
|
+
Day 3: 1,903 downloads. 245% growth from Day 1. Zero marketing budget.
|
|
8
9
|
|
|
9
|
-
|
|
10
|
+
2,775 downloads in 3 days. All organic.
|
|
10
11
|
|
|
11
|
-
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## What I Built
|
|
15
|
+
|
|
16
|
+
A3M Router — an open-source npm package that analyzes each LLM query and routes it to the cheapest capable provider automatically.
|
|
17
|
+
|
|
18
|
+
We're a small team processing ~1,000 LLM queries/day. Customer support automation, code generation, text summarization. We were using GPT-4 for **everything**. Even simple questions went to GPT-4 at $0.03/query.
|
|
12
19
|
|
|
13
20
|
I looked at our logs:
|
|
14
21
|
- **34%** simple Q&A (any model works)
|
|
@@ -20,9 +27,7 @@ We were overpaying by **70%**.
|
|
|
20
27
|
|
|
21
28
|
---
|
|
22
29
|
|
|
23
|
-
##
|
|
24
|
-
|
|
25
|
-
**A3M Router** - analyzes each query and routes to the cheapest capable provider automatically.
|
|
30
|
+
## How It Works
|
|
26
31
|
|
|
27
32
|
**Before:**
|
|
28
33
|
```javascript
|
|
@@ -43,6 +48,15 @@ await router.route("What is 2+2?");
|
|
|
43
48
|
// Automatically picks cheapest capable provider
|
|
44
49
|
```
|
|
45
50
|
|
|
51
|
+
The routing algorithm is inspired by RouteLLM (arXiv:2404.06035):
|
|
52
|
+
|
|
53
|
+
1. **Analyze query** — Detects code, math, complexity, language
|
|
54
|
+
2. **Check providers** — Cost, latency, quality scores for each
|
|
55
|
+
3. **Smart routing** — Simple → cheap. Code → fast. Complex → quality.
|
|
56
|
+
4. **Track & fallback** — Logs costs, retries if provider fails
|
|
57
|
+
|
|
58
|
+
**Zero configuration.** Works immediately with 12 providers pre-configured.
|
|
59
|
+
|
|
46
60
|
---
|
|
47
61
|
|
|
48
62
|
## Results (30 Days)
|
|
@@ -58,14 +72,21 @@ await router.route("What is 2+2?");
|
|
|
58
72
|
|
|
59
73
|
---
|
|
60
74
|
|
|
61
|
-
##
|
|
75
|
+
## The Launch Story
|
|
62
76
|
|
|
63
|
-
|
|
64
|
-
2. **Check providers** - Cost, latency, quality scores for each
|
|
65
|
-
3. **Smart routing** - Simple → cheap. Code → fast. Complex → quality.
|
|
66
|
-
4. **Track & fallback** - Logs costs, retries if provider fails
|
|
77
|
+
We published to npm and... crickets.
|
|
67
78
|
|
|
68
|
-
|
|
79
|
+
| Day | Downloads | How it felt |
|
|
80
|
+
|-----|-----------|-------------|
|
|
81
|
+
| Day 1 | 552 | "Okay, modest start. Early adopters." |
|
|
82
|
+
| Day 2 | 320 | "It's dead. The launch flopped." |
|
|
83
|
+
| Day 3 | 1,903 | "Wait, WHAT?" |
|
|
84
|
+
|
|
85
|
+
No blog post. No HN submission. No Twitter thread. No Product Hunt. No paid promotion of any kind.
|
|
86
|
+
|
|
87
|
+
245% growth from Day 1 to Day 3. 6x from Day 2 to Day 3.
|
|
88
|
+
|
|
89
|
+
The lesson: developer tools spread through backchannels — Discord servers, Slack channels, DMs between coworkers. That takes 48 hours to compound. The Day 2 dip was real and demoralizing. But Day 3 proved that word-of-mouth works on its own timeline.
|
|
69
90
|
|
|
70
91
|
---
|
|
71
92
|
|
|
@@ -84,8 +105,6 @@ npx a3m-router compare "Write Python to sort an array"
|
|
|
84
105
|
npx a3m-router benchmark
|
|
85
106
|
```
|
|
86
107
|
|
|
87
|
-
**Or try online:** https://codesandbox.io/p/sandbox/github/Das-rebel/adaptive-memory-multi-model-router/tree/main/playground
|
|
88
|
-
|
|
89
108
|
No API keys needed to test routing logic.
|
|
90
109
|
|
|
91
110
|
---
|
|
@@ -109,27 +128,10 @@ No API keys needed to test routing logic.
|
|
|
109
128
|
|
|
110
129
|
---
|
|
111
130
|
|
|
112
|
-
## Features
|
|
113
|
-
|
|
114
|
-
**Out of the box:**
|
|
115
|
-
- 12 providers configured (Groq, Cerebras, Mistral, OpenAI, Anthropic, Google, DeepSeek, etc.)
|
|
116
|
-
- Automatic query analysis
|
|
117
|
-
- Cost tracking across all providers
|
|
118
|
-
- Provider fallback
|
|
119
|
-
- Batch processing
|
|
120
|
-
- Response caching
|
|
121
|
-
- CLI tools
|
|
122
|
-
|
|
123
|
-
**Zero configuration needed.**
|
|
124
|
-
|
|
125
|
-
---
|
|
126
|
-
|
|
127
131
|
## Technical Details
|
|
128
132
|
|
|
129
133
|
### Routing Algorithm
|
|
130
134
|
|
|
131
|
-
Inspired by RouteLLM (arXiv:2404.06035):
|
|
132
|
-
|
|
133
135
|
```javascript
|
|
134
136
|
// Feature extraction
|
|
135
137
|
const features = extractQueryFeatures("Write Python to sort array");
|
|
@@ -190,10 +192,9 @@ If you're using one provider for everything:
|
|
|
190
192
|
|
|
191
193
|
- **GitHub**: https://github.com/Das-rebel/adaptive-memory-multi-model-router
|
|
192
194
|
- **NPM**: https://www.npmjs.com/package/adaptive-memory-multi-model-router
|
|
193
|
-
- **Playground**: https://codesandbox.io/p/sandbox/github/Das-rebel/adaptive-memory-multi-model-router/tree/main/playground
|
|
194
195
|
|
|
195
|
-
**Stats**:
|
|
196
|
+
**Stats**: 2,775 downloads in 3 days, 1,903 on Day 3, 245% growth, zero marketing budget.
|
|
196
197
|
|
|
197
198
|
---
|
|
198
199
|
|
|
199
|
-
Questions about the routing algorithm? What features should we add?
|
|
200
|
+
Questions about the routing algorithm? What features should we add? And has anyone else experienced the "Day 2 dip then Day 3 explosion" pattern with developer tool launches?
|
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: "Building an LLM Router That Actually Works:
|
|
2
|
+
title: "Building an LLM Router That Actually Works: 2,775 Downloads in 3 Days, Zero Marketing Budget"
|
|
3
3
|
published: false
|
|
4
|
-
description: "How we built adaptive-memory-multi-model-router
|
|
4
|
+
description: "How we built adaptive-memory-multi-model-router — a production-ready LLM routing library that went from 552 downloads on Day 1 to 1,903 on Day 3 with zero marketing."
|
|
5
5
|
tags: llm, ai, routing, javascript, typescript, openai, claude, groq
|
|
6
6
|
canonical_url: https://github.com/Das-rebel/adaptive-memory-multi-model-router
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
-
# Building an LLM Router That Actually Works:
|
|
9
|
+
# Building an LLM Router That Actually Works: 2,775 Downloads in 3 Days, Zero Marketing Budget
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
Day 1: 552 downloads. Day 2: 320 downloads. We thought it was dead.
|
|
12
|
+
Day 3: 1,903 downloads. 245% growth from Day 1. All word-of-mouth.
|
|
13
|
+
|
|
14
|
+
Here's what we built and what we learned from the launch curve.
|
|
12
15
|
|
|
13
16
|
## The Problem
|
|
14
17
|
|
|
@@ -64,6 +67,17 @@ Query → Feature Extraction → Router → Provider Selection → Execution
|
|
|
64
67
|
Translation? Tradeoff Health Checks
|
|
65
68
|
```
|
|
66
69
|
|
|
70
|
+
## The Launch Curve
|
|
71
|
+
|
|
72
|
+
| Day | Downloads | Notes |
|
|
73
|
+
|-----|-----------|-------|
|
|
74
|
+
| Day 1 | 552 | Modest. A few early adopters found it. |
|
|
75
|
+
| Day 2 | 320 | Thought the launch flopped. Fewer than Day 1. |
|
|
76
|
+
| Day 3 | 1,903 | 6x Day 2. 245% growth from Day 1. Word-of-mouth kicked in. |
|
|
77
|
+
| **Total** | **2,775** | **Zero marketing budget.** |
|
|
78
|
+
|
|
79
|
+
Lesson: good tooling spreads on its own timeline. The Day 2 dip was demoralizing, but Day 3 proved that word-of-mouth compounds — it just takes a beat.
|
|
80
|
+
|
|
67
81
|
## Real-World Usage
|
|
68
82
|
|
|
69
83
|
```javascript
|
|
@@ -85,7 +99,9 @@ const results = router.routeBatch([
|
|
|
85
99
|
|
|
86
100
|
## Performance
|
|
87
101
|
|
|
88
|
-
- **
|
|
102
|
+
- **2,775 downloads in 3 days**
|
|
103
|
+
- **1,903 downloads on Day 3 alone** (245% growth from Day 1)
|
|
104
|
+
- **Zero marketing budget**
|
|
89
105
|
- **33 tests** passing
|
|
90
106
|
- **139 keywords** for discoverability
|
|
91
107
|
- **116 integrations** supported
|
|
@@ -1,8 +1,13 @@
|
|
|
1
|
-
Show HN: A3M Router – LLM
|
|
1
|
+
Show HN: A3M Router – We built an LLM router. Nobody cared for 2 days. Then word-of-mouth kicked in.
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Day 1: 552 downloads. Day 2: 320 downloads. We thought it was dead.
|
|
4
|
+
Day 3: 1,903 downloads. 245% growth from Day 1. Zero marketing budget.
|
|
4
5
|
|
|
5
|
-
|
|
6
|
+
2,775 downloads in 3 days. All organic.
|
|
7
|
+
|
|
8
|
+
I'm sharing what we built and what we learned from the launch curve.
|
|
9
|
+
|
|
10
|
+
A3M Router (adaptive-memory-multi-model-router) is a production-ready LLM routing library that optimizes for cost vs quality based on your query.
|
|
6
11
|
|
|
7
12
|
The Problem
|
|
8
13
|
-----------
|
|
@@ -34,6 +39,16 @@ routeQuery("Explain quantum entanglement");
|
|
|
34
39
|
// → mistral/mistral-large (reasoning strength)
|
|
35
40
|
```
|
|
36
41
|
|
|
42
|
+
The Launch Story
|
|
43
|
+
----------------
|
|
44
|
+
- Day 1: 552 downloads. Modest. A few early adopters found it.
|
|
45
|
+
- Day 2: 320 downloads. We thought the launch flopped. Fewer than Day 1.
|
|
46
|
+
- Day 3: 1,903 downloads. 6x Day 2. 245% growth from Day 1.
|
|
47
|
+
|
|
48
|
+
No blog post. No HN submission. No Twitter thread. No Product Hunt. Just developers telling other developers.
|
|
49
|
+
|
|
50
|
+
Lesson: good tooling spreads on its own timeline. The Day 2 dip was demoralizing, but Day 3 proved that word-of-mouth compounds — it just takes a beat.
|
|
51
|
+
|
|
37
52
|
Key Features
|
|
38
53
|
------------
|
|
39
54
|
• 12 providers: Groq, Cerebras, Mistral, OpenAI, Anthropic, Google, DeepSeek + CLI/local
|
|
@@ -53,8 +68,10 @@ npx a3m-router benchmark # Compare all providers
|
|
|
53
68
|
|
|
54
69
|
Performance
|
|
55
70
|
-----------
|
|
56
|
-
•
|
|
57
|
-
•
|
|
71
|
+
• 2,775 downloads in 3 days
|
|
72
|
+
• 1,903 downloads on Day 3 alone
|
|
73
|
+
• 245% growth from Day 1 to Day 3
|
|
74
|
+
• Zero marketing budget
|
|
58
75
|
• Zero dependencies (except nanoid)
|
|
59
76
|
• 3.0 MB unpacked
|
|
60
77
|
|
|
@@ -62,4 +79,4 @@ Try it: npm install adaptive-memory-multi-model-router
|
|
|
62
79
|
|
|
63
80
|
Would love feedback on the routing algorithm - what features should we add?
|
|
64
81
|
|
|
65
|
-
GitHub: https://github.com/Das-rebel/adaptive-memory-multi-model-router
|
|
82
|
+
GitHub: https://github.com/Das-rebel/adaptive-memory-multi-model-router
|
package/articles/reddit-ml.md
CHANGED
|
@@ -1,8 +1,14 @@
|
|
|
1
|
-
[P] A3M Router: Production-ready LLM routing
|
|
1
|
+
[P] A3M Router: Production-ready LLM routing — 2,775 downloads in 3 days, 245% growth, zero marketing
|
|
2
2
|
|
|
3
3
|
Hi r/MachineLearning,
|
|
4
4
|
|
|
5
|
-
We've been working on an LLM routing library that
|
|
5
|
+
We've been working on an LLM routing library that just hit 2,775 downloads in 3 days — all organic, zero marketing budget. I wanted to share the technical approach for feedback.
|
|
6
|
+
|
|
7
|
+
**Launch numbers:**
|
|
8
|
+
- Day 1: 552 downloads
|
|
9
|
+
- Day 2: 320 downloads (we thought it flopped)
|
|
10
|
+
- Day 3: 1,903 downloads (245% growth from Day 1)
|
|
11
|
+
- Total: 2,775 downloads in 3 days
|
|
6
12
|
|
|
7
13
|
**What it does:**
|
|
8
14
|
A3M Router intelligently routes LLM queries to the optimal provider based on query characteristics, cost constraints, and quality requirements.
|
|
@@ -65,7 +71,8 @@ Users can add their own providers without code changes:
|
|
|
65
71
|
- Batch processing with concurrency control
|
|
66
72
|
|
|
67
73
|
**Performance:**
|
|
68
|
-
-
|
|
74
|
+
- 2,775 downloads in 3 days
|
|
75
|
+
- 1,903 downloads on Day 3 alone (245% growth from Day 1)
|
|
69
76
|
- 33 comprehensive tests
|
|
70
77
|
- 139 npm keywords (max visibility)
|
|
71
78
|
- 116 integrations (GitHub, Slack, Telegram, etc.)
|
|
@@ -1,9 +1,12 @@
|
|
|
1
|
-
# Twitter Thread:
|
|
1
|
+
# Twitter Thread: The LLM Router Nobody Cared About — Until Day 3 🧵
|
|
2
2
|
|
|
3
3
|
## Tweet 1/10 - Hook
|
|
4
|
-
|
|
4
|
+
Day 1: 552 downloads. Day 2: 320 downloads. We thought nobody cared.
|
|
5
|
+
Day 3: 1,903 downloads. 245% growth. Zero marketing budget.
|
|
5
6
|
|
|
6
|
-
|
|
7
|
+
2,775 downloads in 3 days for our LLM router.
|
|
8
|
+
|
|
9
|
+
Here's the story + how A3M Router works 🧵👇
|
|
7
10
|
|
|
8
11
|
## Tweet 2/10 - The Problem
|
|
9
12
|
Most apps use GPT-4 for EVERYTHING:
|
|
@@ -74,13 +77,14 @@ npx a3m-router route "Your query"
|
|
|
74
77
|
|
|
75
78
|
That's it. No config needed.
|
|
76
79
|
|
|
77
|
-
## Tweet 9/10 -
|
|
78
|
-
📊
|
|
80
|
+
## Tweet 9/10 - Growth Numbers
|
|
81
|
+
📊 2,775 downloads in 3 days
|
|
82
|
+
📈 245% growth Day 1 → Day 3
|
|
79
83
|
🧪 33 tests passing
|
|
80
84
|
🔌 116 integrations
|
|
81
|
-
🏷️ 156 keywords
|
|
82
85
|
|
|
83
|
-
|
|
86
|
+
Day 1: 552. Day 2: 320. Day 3: 1,903.
|
|
87
|
+
Word-of-mouth works. Zero marketing spend.
|
|
84
88
|
|
|
85
89
|
## Tweet 10/10 - CTA
|
|
86
90
|
Try it today:
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="600" height="280" viewBox="0 0 600 280">
|
|
2
|
+
<style>
|
|
3
|
+
.label { font-family: 'SF Mono', monospace; font-size: 12px; fill: #8b949e; }
|
|
4
|
+
.value { font-family: 'SF Mono', monospace; font-size: 14px; font-weight: bold; }
|
|
5
|
+
.title { font-family: -apple-system, system-ui, sans-serif; font-size: 16px; fill: #c9d1d9; font-weight: 600; }
|
|
6
|
+
.subtitle { font-family: -apple-system, system-ui, sans-serif; font-size: 12px; fill: #8b949e; }
|
|
7
|
+
</style>
|
|
8
|
+
|
|
9
|
+
<!-- Background -->
|
|
10
|
+
<rect width="600" height="280" rx="12" fill="#0d1117" stroke="#30363d" stroke-width="1"/>
|
|
11
|
+
|
|
12
|
+
<!-- Title -->
|
|
13
|
+
<text x="300" y="30" text-anchor="middle" class="title">📈 Downloads Over 3 Days</text>
|
|
14
|
+
<text x="300" y="48" text-anchor="middle" class="subtitle">Zero marketing budget. Pure npm keyword discovery + word-of-mouth.</text>
|
|
15
|
+
|
|
16
|
+
<!-- Chart area -->
|
|
17
|
+
<g transform="translate(80, 70)">
|
|
18
|
+
<!-- Grid lines -->
|
|
19
|
+
<line x1="0" y1="0" x2="440" y2="0" stroke="#21262d" stroke-width="1"/>
|
|
20
|
+
<line x1="0" y1="40" x2="440" y2="40" stroke="#21262d" stroke-width="1" stroke-dasharray="4"/>
|
|
21
|
+
<line x1="0" y1="80" x2="440" y2="80" stroke="#21262d" stroke-width="1" stroke-dasharray="4"/>
|
|
22
|
+
<line x1="0" y1="120" x2="440" y2="120" stroke="#21262d" stroke-width="1" stroke-dasharray="4"/>
|
|
23
|
+
<line x1="0" y1="160" x2="440" y2="160" stroke="#21262d" stroke-width="1"/>
|
|
24
|
+
|
|
25
|
+
<!-- Y-axis labels -->
|
|
26
|
+
<text x="-10" y="4" text-anchor="end" class="label">2000</text>
|
|
27
|
+
<text x="-10" y="44" text-anchor="end" class="label">1500</text>
|
|
28
|
+
<text x="-10" y="84" text-anchor="end" class="label">1000</text>
|
|
29
|
+
<text x="-10" y="124" text-anchor="end" class="label">500</text>
|
|
30
|
+
<text x="-10" y="164" text-anchor="end" class="label">0</text>
|
|
31
|
+
|
|
32
|
+
<!-- Area fill -->
|
|
33
|
+
<polygon points="73,116 220,134 367,8 367,160 73,160" fill="#238636" fill-opacity="0.15">
|
|
34
|
+
<animate attributeName="fill-opacity" from="0" to="0.15" dur="1s" fill="freeze"/>
|
|
35
|
+
</polygon>
|
|
36
|
+
|
|
37
|
+
<!-- Line -->
|
|
38
|
+
<polyline points="73,116 220,134 367,8" fill="none" stroke="#3fb950" stroke-width="3" stroke-linecap="round" stroke-linejoin="round">
|
|
39
|
+
<animate attributeName="stroke-dashoffset" from="400" to="0" dur="1.5s" fill="freeze"/>
|
|
40
|
+
<set attributeName="stroke-dasharray" to="400"/>
|
|
41
|
+
</polyline>
|
|
42
|
+
|
|
43
|
+
<!-- Data points -->
|
|
44
|
+
<circle cx="73" cy="116" r="6" fill="#0d1117" stroke="#3fb950" stroke-width="3">
|
|
45
|
+
<animate attributeName="r" from="0" to="6" dur="0.3s" begin="0.5s" fill="freeze"/>
|
|
46
|
+
</circle>
|
|
47
|
+
<circle cx="220" cy="134" r="6" fill="#0d1117" stroke="#f0883e" stroke-width="3">
|
|
48
|
+
<animate attributeName="r" from="0" to="6" dur="0.3s" begin="1s" fill="freeze"/>
|
|
49
|
+
</circle>
|
|
50
|
+
<circle cx="367" cy="8" r="6" fill="#0d1117" stroke="#3fb950" stroke-width="3">
|
|
51
|
+
<animate attributeName="r" from="0" to="6" dur="0.3s" begin="1.5s" fill="freeze"/>
|
|
52
|
+
</circle>
|
|
53
|
+
|
|
54
|
+
<!-- Value labels -->
|
|
55
|
+
<text x="73" y="106" text-anchor="middle" class="value" fill="#c9d1d9">552</text>
|
|
56
|
+
<text x="220" y="152" text-anchor="middle" class="value" fill="#f0883e">320</text>
|
|
57
|
+
<text x="367" y="-4" text-anchor="middle" class="value" fill="#3fb950">1,903</text>
|
|
58
|
+
|
|
59
|
+
<!-- X-axis labels -->
|
|
60
|
+
<text x="73" y="180" text-anchor="middle" class="label">Day 1</text>
|
|
61
|
+
<text x="73" y="194" text-anchor="middle" class="subtitle">May 15</text>
|
|
62
|
+
<text x="220" y="180" text-anchor="middle" class="label">Day 2</text>
|
|
63
|
+
<text x="220" y="194" text-anchor="middle" class="subtitle">May 16</text>
|
|
64
|
+
<text x="367" y="180" text-anchor="middle" class="label">Day 3</text>
|
|
65
|
+
<text x="367" y="194" text-anchor="middle" class="subtitle">May 17</text>
|
|
66
|
+
|
|
67
|
+
<!-- Annotations -->
|
|
68
|
+
<text x="147" y="105" text-anchor="middle" class="subtitle" fill="#f0883e">-42%</text>
|
|
69
|
+
<text x="293" y="60" text-anchor="middle" class="subtitle" fill="#3fb950">+495%</text>
|
|
70
|
+
</g>
|
|
71
|
+
|
|
72
|
+
<!-- Bottom stats -->
|
|
73
|
+
<text x="150" y="270" text-anchor="middle" class="value" fill="#3fb950">2,775 total</text>
|
|
74
|
+
<text x="300" y="270" text-anchor="middle" class="value" fill="#79c0ff">245% growth</text>
|
|
75
|
+
<text x="450" y="270" text-anchor="middle" class="value" fill="#d2a8ff">$0 budget</text>
|
|
76
|
+
</svg>
|
package/demo/demo.svg
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="800" height="620" viewBox="0 0 800 620">
|
|
2
|
+
<defs>
|
|
3
|
+
<linearGradient id="bar" x1="0" y1="0" x2="1" y2="0">
|
|
4
|
+
<stop offset="0%" stop-color="#1a1a2e"/>
|
|
5
|
+
<stop offset="100%" stop-color="#16213e"/>
|
|
6
|
+
</linearGradient>
|
|
7
|
+
</defs>
|
|
8
|
+
|
|
9
|
+
<!-- Terminal window -->
|
|
10
|
+
<rect width="800" height="620" rx="12" fill="#0d1117" stroke="#30363d" stroke-width="1"/>
|
|
11
|
+
|
|
12
|
+
<!-- Title bar -->
|
|
13
|
+
<rect width="800" height="36" rx="12" fill="url(#bar)"/>
|
|
14
|
+
<rect y="24" width="800" height="12" fill="url(#bar)"/>
|
|
15
|
+
|
|
16
|
+
<!-- Traffic lights -->
|
|
17
|
+
<circle cx="20" cy="18" r="6" fill="#ff5f57"/>
|
|
18
|
+
<circle cx="40" cy="18" r="6" fill="#febc2e"/>
|
|
19
|
+
<circle cx="60" cy="18" r="6" fill="#28c840"/>
|
|
20
|
+
|
|
21
|
+
<!-- Title text -->
|
|
22
|
+
<text x="400" y="22" text-anchor="middle" fill="#8b949e" font-family="monospace" font-size="12">a3m-router — demo</text>
|
|
23
|
+
|
|
24
|
+
<!-- Terminal content -->
|
|
25
|
+
<g font-family="'SF Mono', 'Fira Code', 'Cascadia Code', monospace" font-size="13" fill="#c9d1d9">
|
|
26
|
+
|
|
27
|
+
<!-- Install -->
|
|
28
|
+
<text x="16" y="58" fill="#8b949e">$</text>
|
|
29
|
+
<text x="32" y="58" fill="#79c0ff">npm install adaptive-memory-multi-model-router</text>
|
|
30
|
+
<text x="16" y="76" fill="#3fb950">added 1 package in 3s</text>
|
|
31
|
+
|
|
32
|
+
<!-- Route simple -->
|
|
33
|
+
<text x="16" y="104" fill="#8b949e">$</text>
|
|
34
|
+
<text x="32" y="104" fill="#79c0ff">npx a3m-router route "What is 2+2?"</text>
|
|
35
|
+
<text x="16" y="126" fill="#d2a8ff">🔀 Route Result</text>
|
|
36
|
+
<text x="16" y="144" fill="#8b949e"> Primary: </text><text x="100" y="144" fill="#3fb950">commandcode/taste-1</text>
|
|
37
|
+
<text x="16" y="162" fill="#8b949e"> Cost: </text><text x="100" y="162" fill="#3fb950">$0.00 (free tier)</text>
|
|
38
|
+
<text x="16" y="180" fill="#8b949e"> Score: </text><text x="100" y="180" fill="#79c0ff">8/100 (TRIVIAL)</text>
|
|
39
|
+
|
|
40
|
+
<!-- Route complex -->
|
|
41
|
+
<text x="16" y="210" fill="#8b949e">$</text>
|
|
42
|
+
<text x="32" y="210" fill="#79c0ff">npx a3m-router route "Analyze economic implications of AI..."</text>
|
|
43
|
+
<text x="16" y="232" fill="#d2a8ff">🔀 Route Result</text>
|
|
44
|
+
<text x="16" y="250" fill="#8b949e"> Primary: </text><text x="100" y="250" fill="#ffa657">ollama/llama3</text>
|
|
45
|
+
<text x="16" y="268" fill="#8b949e"> Cost: </text><text x="100" y="268" fill="#3fb950">$0.00 (local)</text>
|
|
46
|
+
<text x="16" y="286" fill="#8b949e"> Score: </text><text x="100" y="286" fill="#ffa657">78/100 (COMPLEX)</text>
|
|
47
|
+
|
|
48
|
+
<!-- Batch -->
|
|
49
|
+
<text x="16" y="316" fill="#8b949e">$</text>
|
|
50
|
+
<text x="32" y="316" fill="#79c0ff">npx a3m-router batch "2+2?" "sort function" "quantum"</text>
|
|
51
|
+
<text x="16" y="338" fill="#d2a8ff">🔀 Batch Results</text>
|
|
52
|
+
<text x="16" y="356" fill="#8b949e"> 1. "What is 2+2?..." →</text><text x="340" y="356" fill="#3fb950">commandcode (FREE)</text>
|
|
53
|
+
<text x="16" y="374" fill="#8b949e"> 2. "sort function..." →</text><text x="340" y="374" fill="#3fb950">commandcode (FREE)</text>
|
|
54
|
+
<text x="16" y="392" fill="#8b949e"> 3. "quantum..." →</text><text x="340" y="392" fill="#ffa657">ollama/llama3 (LOCAL)</text>
|
|
55
|
+
<text x="16" y="412" fill="#8b949e"> Total: $0.00 | GPT-4o: $0.08 | Savings:</text><text x="430" y="412" fill="#3fb950">100%</text>
|
|
56
|
+
|
|
57
|
+
<!-- Serve -->
|
|
58
|
+
<text x="16" y="442" fill="#8b949e">$</text>
|
|
59
|
+
<text x="32" y="442" fill="#79c0ff">npx a3m-router serve</text>
|
|
60
|
+
<text x="16" y="462" fill="#3fb950">🔀 Proxy running on http://localhost:8787/v1</text>
|
|
61
|
+
<text x="16" y="480" fill="#8b949e"> OpenAI-compatible. Point any SDK here.</text>
|
|
62
|
+
<text x="16" y="498" fill="#8b949e"> 39 providers. Dashboard at http://localhost:8787/</text>
|
|
63
|
+
|
|
64
|
+
<!-- Summary -->
|
|
65
|
+
<text x="16" y="534" fill="#8b949e">$</text>
|
|
66
|
+
<text x="32" y="534" fill="#8b949e"># 2,775 downloads in 3 days. 245% growth. Zero budget.</text>
|
|
67
|
+
<text x="16" y="554" fill="#8b949e"># github.com/Das-rebel/adaptive-memory-multi-model-router</text>
|
|
68
|
+
|
|
69
|
+
<!-- Blinking cursor -->
|
|
70
|
+
<rect x="16" y="572" width="8" height="16" fill="#c9d1d9">
|
|
71
|
+
<animate attributeName="opacity" values="1;0;1" dur="1.2s" repeatCount="indefinite"/>
|
|
72
|
+
</rect>
|
|
73
|
+
|
|
74
|
+
</g>
|
|
75
|
+
</svg>
|