adaptive-memory-multi-model-router 2.14.8 → 2.14.9
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/.publish-tick +1 -1
- package/assets/demo-hn.gif +0 -0
- package/demo/asciinema-demo.sh +47 -36
- package/demo/demo-hn.tape +57 -78
- package/demo/recording.cast +55 -0
- package/dist/benchmark/reproducible.d.ts +55 -0
- package/dist/benchmark/reproducible.js +172 -0
- package/dist/benchmark/reproducible.js.map +1 -0
- package/dist/cli.js +89 -34
- package/dist/routing/advancedRouter.js +11 -1
- package/docs/PROMO_CHECKLIST.md +200 -0
- package/docs/SOCIAL_LISTENING.md +219 -0
- package/package.json +1 -1
- package/research/PUBLISH_LOG.md +2 -2
- package/src/benchmark/reproducible.ts +246 -0
package/dist/cli.js
CHANGED
|
@@ -216,7 +216,15 @@ async function main() {
|
|
|
216
216
|
case 'compare': {
|
|
217
217
|
const query = args.slice(1).join(' ');
|
|
218
218
|
if (!query) {
|
|
219
|
-
console.error('
|
|
219
|
+
console.error('');
|
|
220
|
+
console.error(' ⚠️ Compare needs a query');
|
|
221
|
+
console.error(' ─' + '─'.repeat(30));
|
|
222
|
+
console.error(' Usage: npx a3m-router compare "your question"');
|
|
223
|
+
console.error('');
|
|
224
|
+
console.error(' Routes your query through ALL providers side by side.');
|
|
225
|
+
console.error('');
|
|
226
|
+
console.error(' Example: npx a3m-router compare "What is 2+2?"');
|
|
227
|
+
console.error('');
|
|
220
228
|
process.exit(1);
|
|
221
229
|
}
|
|
222
230
|
|
|
@@ -247,44 +255,43 @@ async function main() {
|
|
|
247
255
|
break;
|
|
248
256
|
}
|
|
249
257
|
|
|
250
|
-
case 'benchmark':
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
const model = provider.models[0];
|
|
265
|
-
console.log(' ' + (provider.name || id).padEnd(15) + '(' + model + ')');
|
|
266
|
-
|
|
267
|
-
let totalTime = 0;
|
|
268
|
-
let totalCost = 0;
|
|
269
|
-
|
|
270
|
-
for (const q of queries) {
|
|
271
|
-
const r = await callProvider(id, model, q, 50);
|
|
272
|
-
if (r) {
|
|
273
|
-
totalTime += r.latency;
|
|
274
|
-
totalCost += r.cost;
|
|
275
|
-
}
|
|
258
|
+
case 'benchmark':
|
|
259
|
+
case 'bench': {
|
|
260
|
+
if (args.includes('--reproducible') || args.includes('-r')) {
|
|
261
|
+
try {
|
|
262
|
+
var res = require('child_process').execSync(
|
|
263
|
+
'node -e "var b=require(\'./benchmark/reproducible.js\');console.log(b.formatBenchmarkOutput(b.runReproducibleBenchmark(42,20)))"',
|
|
264
|
+
{ cwd: __dirname, encoding: 'utf8', timeout: 60000 }
|
|
265
|
+
);
|
|
266
|
+
console.log(res.trim());
|
|
267
|
+
} catch(e) {
|
|
268
|
+
console.error('');
|
|
269
|
+
console.error(' \u26a0\ufe0f Benchmark failed');
|
|
270
|
+
console.error(' Try directly: node dist/benchmark/reproducible.js');
|
|
271
|
+
console.error('');
|
|
276
272
|
}
|
|
277
|
-
|
|
278
|
-
console.log(' Total: ' + totalTime + 'ms, Cost: $' + totalCost.toFixed(6) + ', Avg: ' + (totalTime / queries.length).toFixed(0) + 'ms/query');
|
|
273
|
+
break;
|
|
279
274
|
}
|
|
280
275
|
console.log('');
|
|
276
|
+
console.log(' Run: npx a3m-router benchmark --reproducible');
|
|
277
|
+
console.log(' 20 fixed queries with deterministic seed. Everyone gets the same result.');
|
|
278
|
+
console.log(' > "Everything is open source. Run the exact benchmark."');
|
|
279
|
+
console.log('');
|
|
281
280
|
break;
|
|
282
281
|
}
|
|
283
282
|
|
|
284
283
|
case 'route': {
|
|
285
284
|
const query = args.slice(1).join(' ');
|
|
286
285
|
if (!query) {
|
|
287
|
-
console.error('
|
|
286
|
+
console.error('');
|
|
287
|
+
console.error(' ⚠️ You forgot the query');
|
|
288
|
+
console.error(' ─' + '─'.repeat(30));
|
|
289
|
+
console.error(' Usage: npx a3m-router route "your question here"');
|
|
290
|
+
console.error('');
|
|
291
|
+
console.error(' Examples:');
|
|
292
|
+
console.error(' npx a3m-router route "What is 2+2?"');
|
|
293
|
+
console.error(' npx a3m-router route "Write a Python sort function"');
|
|
294
|
+
console.error('');
|
|
288
295
|
process.exit(1);
|
|
289
296
|
}
|
|
290
297
|
const result = router.route(query);
|
|
@@ -295,7 +302,13 @@ async function main() {
|
|
|
295
302
|
case 'batch': {
|
|
296
303
|
const queries = args.slice(1);
|
|
297
304
|
if (queries.length === 0) {
|
|
298
|
-
console.error('
|
|
305
|
+
console.error('');
|
|
306
|
+
console.error(' ⚠️ Batch needs at least one query');
|
|
307
|
+
console.error(' ─' + '─'.repeat(35));
|
|
308
|
+
console.error(' Usage: npx a3m-router batch "query1" "query2" "query3"');
|
|
309
|
+
console.error('');
|
|
310
|
+
console.error(' Example: npx a3m-router batch "What is 2+2?" "Capital of France?"');
|
|
311
|
+
console.error('');
|
|
299
312
|
process.exit(1);
|
|
300
313
|
}
|
|
301
314
|
const results = router.routeBatch(queries);
|
|
@@ -311,7 +324,16 @@ async function main() {
|
|
|
311
324
|
case 'recommend': {
|
|
312
325
|
const task = args.slice(1).join(' ');
|
|
313
326
|
if (!task) {
|
|
314
|
-
console.error('
|
|
327
|
+
console.error('');
|
|
328
|
+
console.error(' ⚠️ Need a task to recommend for');
|
|
329
|
+
console.error(' ─' + '─'.repeat(35));
|
|
330
|
+
console.error(' Usage: npx a3m-router recommend "<task>"');
|
|
331
|
+
console.error('');
|
|
332
|
+
console.error(' Examples:');
|
|
333
|
+
console.error(' npx a3m-router recommend "coding"');
|
|
334
|
+
console.error(' npx a3m-router recommend "writing"');
|
|
335
|
+
console.error(' npx a3m-router recommend "math"');
|
|
336
|
+
console.error('');
|
|
315
337
|
process.exit(1);
|
|
316
338
|
}
|
|
317
339
|
const rec = router.recommend(task);
|
|
@@ -472,7 +494,13 @@ async function main() {
|
|
|
472
494
|
case 'token': {
|
|
473
495
|
const text = args.slice(1).join(' ');
|
|
474
496
|
if (!text) {
|
|
475
|
-
console.error('
|
|
497
|
+
console.error('');
|
|
498
|
+
console.error(' ⚠️ Token counter needs input text');
|
|
499
|
+
console.error(' ─' + '─'.repeat(35));
|
|
500
|
+
console.error(' Usage: npx a3m-router token "text to count"');
|
|
501
|
+
console.error('');
|
|
502
|
+
console.error(' Example: npx a3m-router token "Hello, world!"');
|
|
503
|
+
console.error('');
|
|
476
504
|
process.exit(1);
|
|
477
505
|
}
|
|
478
506
|
const tokens = countTokens(text);
|
|
@@ -593,6 +621,33 @@ async function main() {
|
|
|
593
621
|
}
|
|
594
622
|
|
|
595
623
|
main().catch(function(err) {
|
|
596
|
-
console.error('
|
|
624
|
+
console.error('');
|
|
625
|
+
console.error(' ⚠️ Something went wrong');
|
|
626
|
+
console.error(' ─' + '─'.repeat(40));
|
|
627
|
+
console.error(' ' + err.message);
|
|
628
|
+
console.error(' Stack: ' + (err.stack || '').split('\n').filter(function(l){return l.includes('/dist/')}).slice(0,3).join('\n '));
|
|
629
|
+
console.error(' ' + (err.stack || '').split('\n').slice(1, 5).join('\n '));
|
|
630
|
+
console.error('');
|
|
631
|
+
console.error(' Try these:');
|
|
632
|
+
|
|
633
|
+
var msg = (err.message || '').toLowerCase();
|
|
634
|
+
if (msg.includes('api_key') || msg.includes('api key') || msg.includes('not configured')) {
|
|
635
|
+
console.error(' • Set your API key: export GROQ_API_KEY="gsk_..."');
|
|
636
|
+
console.error(' • Or run: npx a3m-router providers');
|
|
637
|
+
} else if (msg.includes('fetch') || msg.includes('network') || msg.includes('econnrefused')) {
|
|
638
|
+
console.error(' • Check your internet connection');
|
|
639
|
+
console.error(' • The provider API might be down — try: npx a3m-router providers');
|
|
640
|
+
console.error(' • If using local Ollama: ollama serve');
|
|
641
|
+
} else if (msg.includes('module') || msg.includes('cannot find')) {
|
|
642
|
+
console.error(' • Rebuild: npm run build');
|
|
643
|
+
console.error(' • Or reinstall: npm install -g a3m-router');
|
|
644
|
+
} else if (msg.includes('usage') || msg.includes('invalid') || msg.includes('unknown')) {
|
|
645
|
+
console.error(' • Run: npx a3m-router --help');
|
|
646
|
+
console.error(' • Try: npx a3m-router route "your question here"');
|
|
647
|
+
} else {
|
|
648
|
+
console.error(' • Check the docs: https://github.com/Das-rebel/a3m-router#readme');
|
|
649
|
+
console.error(' • Run: npx a3m-router --help');
|
|
650
|
+
}
|
|
651
|
+
console.error('');
|
|
597
652
|
process.exit(1);
|
|
598
653
|
});
|
|
@@ -79,7 +79,13 @@ function buildModelProfiles() {
|
|
|
79
79
|
return profiles;
|
|
80
80
|
}
|
|
81
81
|
|
|
82
|
-
|
|
82
|
+
var MODEL_PROFILES = {};
|
|
83
|
+
try {
|
|
84
|
+
MODEL_PROFILES = buildModelProfiles();
|
|
85
|
+
} catch (e) {
|
|
86
|
+
// Circular dependency at module load — will retry on first use
|
|
87
|
+
MODEL_PROFILES = {};
|
|
88
|
+
}
|
|
83
89
|
|
|
84
90
|
// Refresh profiles when providers change
|
|
85
91
|
function refreshModelProfiles() {
|
|
@@ -88,6 +94,10 @@ function refreshModelProfiles() {
|
|
|
88
94
|
|
|
89
95
|
exports.MODEL_PROFILES = MODEL_PROFILES;
|
|
90
96
|
|
|
97
|
+
// Ensure exports stay in sync if profiles are rebuilt
|
|
98
|
+
function updateExports() {
|
|
99
|
+
exports.MODEL_PROFILES = MODEL_PROFILES;
|
|
100
|
+
}
|
|
91
101
|
// ============================================================
|
|
92
102
|
// FEATURE EXTRACTION (v3 — multi-signal complexity scorer)
|
|
93
103
|
// ============================================================
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
# A3M Router — 40 Free Promotion Channels
|
|
2
|
+
|
|
3
|
+
Ranked by Domain Rating (DR). One action per day = launched in 40 days.
|
|
4
|
+
|
|
5
|
+
## Tier 1: Must-Do (DR 85+) [5 sites]
|
|
6
|
+
|
|
7
|
+
### 1. Product Hunt (DR 91)
|
|
8
|
+
- **Submit:** https://www.producthunt.com/posts/new
|
|
9
|
+
- **Hook:** "Same answer as GPT-5. 200× cheaper. Open source."
|
|
10
|
+
- **Best time:** Tue-Thu, 12:01am PT
|
|
11
|
+
- **Tips:** Post maker comment within 1hr. Reply to every comment. Have 5 friends ready to upvote.
|
|
12
|
+
- **❌** Don't beg for upvotes. Don't launch Friday-Sunday.
|
|
13
|
+
|
|
14
|
+
### 2. Hacker News (DR 91)
|
|
15
|
+
- **Submit:** https://news.ycombinator.com/submit
|
|
16
|
+
- **Hook:** "Show HN: A3M Router – Open-source LLM router, #1 on RouterArena"
|
|
17
|
+
- **Best time:** Tue-Thu, 8:30-10am ET
|
|
18
|
+
- **Tips:** Title must be factual. Be in comments within 30min. Pre-write your first comment explaining the project.
|
|
19
|
+
- **❌** No marketing speak, no $ figures in title, no cherry-picked numbers.
|
|
20
|
+
|
|
21
|
+
### 3. Buy Me a Coffee (DR 91)
|
|
22
|
+
- **Create:** https://buymeacoffee.com
|
|
23
|
+
- **Hook:** "Support open-source AI routing infrastructure"
|
|
24
|
+
- **Tips:** Link from GitHub repo README. Offer "Sponsor" badge for backers.
|
|
25
|
+
|
|
26
|
+
### 4. Crunchbase (DR 90)
|
|
27
|
+
- **Submit:** https://www.crunchbase.com/#/home/index
|
|
28
|
+
- **Hook:** Create company profile for the project
|
|
29
|
+
- **Tips:** Add GitHub link, description, and team. Good for SEO backlinks.
|
|
30
|
+
|
|
31
|
+
### 5. GitHub Trending
|
|
32
|
+
- **Optimize:** Add relevant topics: `llm`, `router`, `ai-gateway`, `open-source`, `model-routing`
|
|
33
|
+
- **Hook:** Good README + active commits = trending chance
|
|
34
|
+
- **Tips:** Star history matters. Consistent commits = algorithmic boost.
|
|
35
|
+
|
|
36
|
+
## Tier 2: High Impact (DR 70-84) [10 sites]
|
|
37
|
+
|
|
38
|
+
### 6. DevTo (DR 85)
|
|
39
|
+
- **Submit:** https://dev.to/new
|
|
40
|
+
- **Hook:** "I built an open-source LLM router that saved me $800/month"
|
|
41
|
+
- **Tags:** `#opensource` `#ai` `#llm` `#nodejs` `#javascript`
|
|
42
|
+
- **❌** No direct product pitches. Share the story, mention the tool.
|
|
43
|
+
|
|
44
|
+
### 7. Reddit — r/programming (DR 84)
|
|
45
|
+
- **Submit:** https://www.reddit.com/r/programming/submit
|
|
46
|
+
- **Hook:** "Show HN-style with technical details"
|
|
47
|
+
- **❌** No self-promo. Frame as "I built this, here's how it works technically."
|
|
48
|
+
|
|
49
|
+
### 8. Reddit — r/MachineLearning (DR 84)
|
|
50
|
+
- **Hook:** Focus on routing algorithms, not the tool
|
|
51
|
+
- **Tips:** Share benchmark methodology. Reference RouterArena.
|
|
52
|
+
|
|
53
|
+
### 9. Reddit — r/commandline (DR 84)
|
|
54
|
+
- **Hook:** "CLI tool to route queries across 47 LLM providers"
|
|
55
|
+
- **Tips:** Show asciinema demo gif.
|
|
56
|
+
|
|
57
|
+
### 10. Reddit — r/node (DR 84)
|
|
58
|
+
- **Hook:** "npm package for intelligent LLM routing — A3M Router"
|
|
59
|
+
- **Tips:** Show the npm install + code example.
|
|
60
|
+
|
|
61
|
+
### 11. Reddit — r/opensource (DR 84)
|
|
62
|
+
- **Hook:** "MIT-licensed open-source LLM router"
|
|
63
|
+
- **Tips:** Emphasize transparency, no vendor lock-in.
|
|
64
|
+
|
|
65
|
+
### 12. LinkedIn (DR 86)
|
|
66
|
+
- **Post:** Write article about the $800/month → $5 story
|
|
67
|
+
- **Tips:** Tag people in the routing space. Use the benchmark chart.
|
|
68
|
+
|
|
69
|
+
### 13. Twitter/X (DR 86)
|
|
70
|
+
- **Thread:** Cost comparison + benchmark + code example
|
|
71
|
+
- **Best time:** 8-10am ET
|
|
72
|
+
- **Tips:** Include a screenshot of the CLI in action.
|
|
73
|
+
|
|
74
|
+
### 14. StackShare (DR 80)
|
|
75
|
+
- **Submit:** https://stackshare.io/add-tool
|
|
76
|
+
- **Hook:** "Intelligent LLM routing for your stack"
|
|
77
|
+
- **Tips:** Compare with LiteLLM, Portkey, OpenRouter.
|
|
78
|
+
|
|
79
|
+
### 15. AlternativeTo (DR 79)
|
|
80
|
+
- **Submit:** https://alternativeto.net/software/new/
|
|
81
|
+
- **Hook:** Alternative to LiteLLM, Portkey, OpenRouter
|
|
82
|
+
- **Tips:** List accurate features and pricing (free/open source).
|
|
83
|
+
|
|
84
|
+
## Tier 3: Niche Communities (DR 50-69) [15 sites]
|
|
85
|
+
|
|
86
|
+
### 16. Lobsters (DR 55)
|
|
87
|
+
- **Submit:** https://lobste.rs
|
|
88
|
+
- **Hook:** Technical discussion about routing algorithms
|
|
89
|
+
- **❌** Tech-heavy crowd. Focus on engineering, not marketing.
|
|
90
|
+
|
|
91
|
+
### 17. Terminal Trove (DR ~65)
|
|
92
|
+
- **Submit:** https://terminaltrove.com
|
|
93
|
+
- **Hook:** CLI tool directory
|
|
94
|
+
|
|
95
|
+
### 18. Awesome LLM Routing (GitHub)
|
|
96
|
+
- **Submit:** PR to add A3M Router
|
|
97
|
+
- **Search:** `awesome-llm` `awesome-ai` `awesome-router`
|
|
98
|
+
|
|
99
|
+
### 19. Show HN on Lobsters
|
|
100
|
+
- **Submit:** https://lobste.rs/stories/new
|
|
101
|
+
- **Hook:** Same as HN but more technical audience
|
|
102
|
+
|
|
103
|
+
### 20. BetaList (DR 58)
|
|
104
|
+
- **Submit:** https://betalist.com/submit
|
|
105
|
+
- **Hook:** "AI-powered LLM router — same answers, 200× cheaper"
|
|
106
|
+
|
|
107
|
+
### 21. BetaPage (DR 52)
|
|
108
|
+
- **Submit:** https://betapage.co/submit-startup
|
|
109
|
+
|
|
110
|
+
### 22. LaunchingNext (DR 60)
|
|
111
|
+
- **Submit:** https://launchingnext.com/submit
|
|
112
|
+
|
|
113
|
+
### 23. SaaSHub (DR 69)
|
|
114
|
+
- **Submit:** https://www.saashub.com/submit
|
|
115
|
+
- **Hook:** Alternative to expensive LLM gateways
|
|
116
|
+
|
|
117
|
+
### 24. FutureTools (DR 62)
|
|
118
|
+
- **Submit:** https://futuretools.io/submit
|
|
119
|
+
|
|
120
|
+
### 25. There's An AI For That (DR 66)
|
|
121
|
+
- **Submit:** https://theresanaiforthat.com/submit/
|
|
122
|
+
|
|
123
|
+
### 26. AI Directory
|
|
124
|
+
- **Search and submit** to top AI directories
|
|
125
|
+
|
|
126
|
+
### 27. npm — Optimize listing
|
|
127
|
+
- **Keywords:** `llm-router`, `ai-gateway`, `model-routing`, `openai-alternative`
|
|
128
|
+
- **Description:** "Intelligent LLM routing across 47 providers. Same answers, 200× cheaper."
|
|
129
|
+
- **Tips:** Good README = higher npm install conversion
|
|
130
|
+
|
|
131
|
+
### 28. GitHub Topics
|
|
132
|
+
- Add ALL relevant topics: `llm`, `router`, `ai`, `gateway`, `open-source`, `nodejs`, `routing`, `llm-routing`, `model-router`
|
|
133
|
+
|
|
134
|
+
### 29. LibHunt (DR 68)
|
|
135
|
+
- **Submit:** https://www.libhunt.com
|
|
136
|
+
- **Tips:** Compare with similar libraries
|
|
137
|
+
|
|
138
|
+
### 30. Openbase (DR 65)
|
|
139
|
+
- **Submit:** https://openbase.com
|
|
140
|
+
|
|
141
|
+
## Tier 4: Long Tail (DR < 50) [10 sites]
|
|
142
|
+
|
|
143
|
+
### 31. Makerlog (DR 45)
|
|
144
|
+
- **Submit:** https://getmakerlog.com
|
|
145
|
+
|
|
146
|
+
### 32. WIP.chat (DR 40)
|
|
147
|
+
- **Submit:** https://wip.chat
|
|
148
|
+
|
|
149
|
+
### 33. Failory (DR 48)
|
|
150
|
+
- **Submit:** https://failory.com/submit
|
|
151
|
+
- **Hook:** "What I learned building an open-source LLM router"
|
|
152
|
+
|
|
153
|
+
### 34. StarterStory (DR 49)
|
|
154
|
+
- **Submit:** https://starterstory.com
|
|
155
|
+
- **Hook:** "From $800/month API bill to $5 — the A3M story"
|
|
156
|
+
|
|
157
|
+
### 35. IndieHackers (DR 56)
|
|
158
|
+
- **Post:** Write a maker story
|
|
159
|
+
- **Hook:** "$800/month → $5 by routing smart. Here's how."
|
|
160
|
+
|
|
161
|
+
### 36. SideProjectors (DR 35)
|
|
162
|
+
- **Submit:** https://sideprojectors.com
|
|
163
|
+
|
|
164
|
+
### 37. Geekflare (DR 54)
|
|
165
|
+
- **Submit:** https://geekflare.com/tools/
|
|
166
|
+
|
|
167
|
+
### 38. YourStory (DR 44)
|
|
168
|
+
- **Submit:** https://yourstory.com/submit
|
|
169
|
+
|
|
170
|
+
### 39. TechCrunch Tip Line
|
|
171
|
+
- **Submit:** tips@techcrunch.com
|
|
172
|
+
- **Hook:** "Open source project beats GPT-4 at 0.5% of the cost"
|
|
173
|
+
|
|
174
|
+
### 40. HackerNoon (DR 53)
|
|
175
|
+
- **Write:** Article as guest writer
|
|
176
|
+
- **Hook:** "I built an open-source LLM router. Here's why you need one."
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
## Automation
|
|
181
|
+
|
|
182
|
+
For daily monitoring, set up:
|
|
183
|
+
```
|
|
184
|
+
# Google Alerts
|
|
185
|
+
"LLM routing" "model router" "AI gateway alternative" "LiteLLM alternative"
|
|
186
|
+
|
|
187
|
+
# F5bot — HN keyword monitoring (free tier)
|
|
188
|
+
https://f5bot.com
|
|
189
|
+
|
|
190
|
+
# ReplyGuy — automated reply system
|
|
191
|
+
https://replyguy.com
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
## Tracking
|
|
195
|
+
|
|
196
|
+
| # | Site | Submitted | Date | Result |
|
|
197
|
+
|---|------|-----------|------|--------|
|
|
198
|
+
| 1 | Product Hunt | | | |
|
|
199
|
+
| 2 | Hacker News | | | |
|
|
200
|
+
| ... | ... | ... | ... | ... |
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
# A3M Router — Social Listening & Reply Playbook
|
|
2
|
+
|
|
3
|
+
> "Set up Google Alerts for competitors → find discussions about routing/cost → craft reply that converts"
|
|
4
|
+
> — Vault insight, score 29.3
|
|
5
|
+
|
|
6
|
+
## 1. Monitoring Setup
|
|
7
|
+
|
|
8
|
+
### Google Alerts (free)
|
|
9
|
+
Set up alerts for these keywords. Frequency: "As it happens."
|
|
10
|
+
|
|
11
|
+
| Alert | Keyword | Why |
|
|
12
|
+
|-------|---------|-----|
|
|
13
|
+
| **A** | `"LLM routing" OR "model routing"` | Direct mention of the space |
|
|
14
|
+
| **B** | `"AI gateway" OR "LLM gateway"` | Competitor category |
|
|
15
|
+
| **C** | `"LiteLLM" OR "portkey" OR "route LLM"` | Competitor names |
|
|
16
|
+
| **D** | `"switch between LLMs" OR "multi-model"` | Pain point search |
|
|
17
|
+
| **E** | `"LLM too expensive" OR "API costs"` | Pain point — cost |
|
|
18
|
+
| **F** | `"open source LLM router"` | Direct search intent |
|
|
19
|
+
|
|
20
|
+
### F5bot (free tier)
|
|
21
|
+
Monitor Hacker News for:
|
|
22
|
+
- `llm router` `model routing` `ai gateway` `openrouter` `litellm` `route llm`
|
|
23
|
+
|
|
24
|
+
Setup: https://f5bot.com — enter keywords, get email alerts.
|
|
25
|
+
|
|
26
|
+
### ReplyGuy (paid, ~$15/mo)
|
|
27
|
+
Automated reply system for Reddit, HN, X, YouTube:
|
|
28
|
+
- Monitors keywords across platforms
|
|
29
|
+
- Suggests replies that are contextual, not spammy
|
|
30
|
+
- Setup: https://replyguy.com
|
|
31
|
+
|
|
32
|
+
### Morebirds (HN specific)
|
|
33
|
+
Monitors Hacker News for keywords and competitors:
|
|
34
|
+
- https://morebirds.com
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## 2. Keywords to Monitor (Priority Order)
|
|
39
|
+
|
|
40
|
+
### Tier 1: High Intent (reply immediately)
|
|
41
|
+
```
|
|
42
|
+
"llm routing" "model routing" "ai gateway" "llm gateway" "routing llm"
|
|
43
|
+
"open source router" "llm router alternative" "best model router"
|
|
44
|
+
"switch between models" "model fallback" "intelligent routing"
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### Tier 2: Pain Point (reply with empathy + solution)
|
|
48
|
+
```
|
|
49
|
+
"llm costs too high" "gpt too expensive" "api cost too much"
|
|
50
|
+
"openai bill too high" "reduce llm costs" "need cheaper llm"
|
|
51
|
+
"paying too much for ai" "api costs killing me"
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### Tier 3: Competitor (reply as comparison, not attack)
|
|
55
|
+
```
|
|
56
|
+
"LitellLm" "Portkey" "RouteLLM" "OpenRouter" "Helicone"
|
|
57
|
+
"LangSmith" "AI Gateway (Cloudflare)" "GenAI Gateway"
|
|
58
|
+
```
|
|
59
|
+
When someone has issues with these, offer A3M as a working alternative.
|
|
60
|
+
|
|
61
|
+
### Tier 4: Educational (reply with knowledge, mention tool naturally)
|
|
62
|
+
```
|
|
63
|
+
"how to choose llm" "which model to use" "compare models"
|
|
64
|
+
"llm benchmark" "model evaluation" "provider comparison"
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## 3. Reply Templates
|
|
70
|
+
|
|
71
|
+
### Template 1: Cost Pain
|
|
72
|
+
**Trigger:** Someone says "my OpenAI bill is too high" or "LLM API costs are crazy"
|
|
73
|
+
|
|
74
|
+
**Platform:** HN, Reddit, X
|
|
75
|
+
|
|
76
|
+
**Reply:**
|
|
77
|
+
```
|
|
78
|
+
We were in the same boat — $800/month on GPT-4. Built A3M Router to route smart queries to cheaper models and keep hard ones on premium.
|
|
79
|
+
|
|
80
|
+
Same answers (RouterArena #1 at 76.43). Cost dropped to ~$5.
|
|
81
|
+
|
|
82
|
+
Open source, MIT. Run it yourself:
|
|
83
|
+
npx a3m-router route "your query"
|
|
84
|
+
|
|
85
|
+
Or verify: npx a3m-router benchmark --reproducible
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### Template 2: "Which tool should I use?"
|
|
89
|
+
**Trigger:** Someone comparing LiteLLM, Portkey, RouteLLM
|
|
90
|
+
|
|
91
|
+
**Platform:** Reddit, HN
|
|
92
|
+
|
|
93
|
+
**Reply:**
|
|
94
|
+
```
|
|
95
|
+
We evaluated all of them before building A3M. What we wanted:
|
|
96
|
+
- Open source (MIT)
|
|
97
|
+
- Actually routes to cheapest capable model, not just round-robin
|
|
98
|
+
- Works with existing OpenAI SDK
|
|
99
|
+
- Has a reproducible benchmark
|
|
100
|
+
|
|
101
|
+
A3M Router hits all of those. #1 on RouterArena (76.43). Costs $0.047/1K vs GPT-5 at $10/1K.
|
|
102
|
+
|
|
103
|
+
npx a3m-router route "test it out"
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### Template 3: "Building an AI gateway"
|
|
107
|
+
**Trigger:** Someone asks how to build multi-model routing, or shows their architecture
|
|
108
|
+
|
|
109
|
+
**Platform:** HN, Reddit, DevTo
|
|
110
|
+
|
|
111
|
+
**Reply:**
|
|
112
|
+
```
|
|
113
|
+
We built something similar. Spent months on it. Eventually open-sourced it as A3M Router.
|
|
114
|
+
|
|
115
|
+
Biggest lessons:
|
|
116
|
+
1. Cost-based routing saves 200x vs always-pick-premium
|
|
117
|
+
2. Quality scores persist across sessions (memory)
|
|
118
|
+
3. Cache + parallel execution cut latency 3x
|
|
119
|
+
|
|
120
|
+
The whole thing is MIT on GitHub. Beats GPT-5 on RouterArena.
|
|
121
|
+
|
|
122
|
+
npx a3m-router benchmark --reproducible
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### Template 4: "My provider is rate-limiting / failing"
|
|
126
|
+
**Trigger:** Someone complaining about OpenAI/Groq/Claude rate limits or failures
|
|
127
|
+
|
|
128
|
+
**Platform:** HN, Reddit, X
|
|
129
|
+
|
|
130
|
+
**Reply:**
|
|
131
|
+
```
|
|
132
|
+
A3M Router handles this automatically — fallback to next available provider when one fails or throttles.
|
|
133
|
+
|
|
134
|
+
47+ providers. Automatic failover. Same response format.
|
|
135
|
+
|
|
136
|
+
Open source: npx a3m-router route "try it"
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### Template 5: "Looking for alternatives"
|
|
140
|
+
**Trigger:** Someone asking for alternatives to a specific tool or service
|
|
141
|
+
|
|
142
|
+
**Platform:** HN, Reddit, X
|
|
143
|
+
|
|
144
|
+
**Reply:**
|
|
145
|
+
```
|
|
146
|
+
If you're evaluating options, A3M Router is worth a look:
|
|
147
|
+
- MIT licensed (not source-available)
|
|
148
|
+
- RouterArena #1 (76.43)
|
|
149
|
+
- Same API as OpenAI SDK
|
|
150
|
+
- $0.047/1K vs $10/1K for GPT-5
|
|
151
|
+
|
|
152
|
+
npx a3m-router route "test" or npx a3m-router benchmark --reproducible
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
### Template 6: "Model comparison question"
|
|
156
|
+
**Trigger:** Someone asking which model is best for task X
|
|
157
|
+
|
|
158
|
+
**Platform:** HN, Reddit
|
|
159
|
+
|
|
160
|
+
**Reply:**
|
|
161
|
+
```
|
|
162
|
+
A3M Router actually solves this — it routes each query to the best model based on: complexity, cost budget, latency needs, and past quality scores.
|
|
163
|
+
|
|
164
|
+
You define 47+ providers and it picks automatically. Results tracked in memory so it gets smarter over time.
|
|
165
|
+
|
|
166
|
+
npx a3m-router recommend "coding" # See what it would pick
|
|
167
|
+
npx a3m-router route "test it" # Route a real query
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
### Template 7: Show HN / Launches (competitor)
|
|
171
|
+
**Trigger:** A competitor launches on HN or Product Hunt
|
|
172
|
+
|
|
173
|
+
**Platform:** HN comments
|
|
174
|
+
|
|
175
|
+
**Reply:**
|
|
176
|
+
```
|
|
177
|
+
Cool project! Curious how it compares on RouterArena. We got 76.43 — would love to see benchmarks head-to-head.
|
|
178
|
+
|
|
179
|
+
For anyone evaluating, A3M Router is open source (MIT) with a reproducible benchmark:
|
|
180
|
+
npx a3m-router benchmark --reproducible
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
---
|
|
184
|
+
|
|
185
|
+
## 4. Cadence
|
|
186
|
+
|
|
187
|
+
| Frequency | Action | Time |
|
|
188
|
+
|-----------|--------|------|
|
|
189
|
+
| **Daily (5 min)** | Check Google Alerts + F5bot notifications | Morning |
|
|
190
|
+
| **Daily (10 min)** | Scan HN for relevant threads | 8-10am ET |
|
|
191
|
+
| **Every 2 days** | Check Reddit for keyword matches | Random |
|
|
192
|
+
| **Weekly** | Write 1 educational post on DevTo/blog | Weekend |
|
|
193
|
+
| **Bi-weekly** | Review tracking table, adjust templates | Sunday |
|
|
194
|
+
|
|
195
|
+
### Golden Rules
|
|
196
|
+
1. **Never pitch in top-level posts** — only reply when relevant
|
|
197
|
+
2. **First sentence = empathy/understanding**, not self-promo
|
|
198
|
+
3. **Always include an action they can take** (a command to run)
|
|
199
|
+
4. **Never copy-paste** — adapt template to the specific conversation
|
|
200
|
+
5. **No URLs in first reply** unless asked (appears spammy)
|
|
201
|
+
|
|
202
|
+
---
|
|
203
|
+
|
|
204
|
+
## 5. Tracking Table
|
|
205
|
+
|
|
206
|
+
| Date | Platform | URL | Template | Reply | Clicks/Installs |
|
|
207
|
+
|------|----------|-----|----------|-------|-----------------|
|
|
208
|
+
| | | | | | |
|
|
209
|
+
| | | | | | |
|
|
210
|
+
|
|
211
|
+
Keep a running log. Review weekly to see which templates convert best.
|
|
212
|
+
|
|
213
|
+
---
|
|
214
|
+
|
|
215
|
+
## 6. Success Metric
|
|
216
|
+
|
|
217
|
+
Goal: **10 replies per week → 5 conversations → 1 GitHub star or npm install**
|
|
218
|
+
|
|
219
|
+
At this rate: 50 stars/month, 250 npm installs/month from social listening alone.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "adaptive-memory-multi-model-router",
|
|
3
|
-
"version": "2.14.
|
|
3
|
+
"version": "2.14.9",
|
|
4
4
|
"shortName": "A3M Router",
|
|
5
5
|
"displayName": "A3M Router - Adaptive Memory Multi-Model Router",
|
|
6
6
|
"description": "🏆 #1 LLM routing benchmark & Cheapest LLM router with memory · Open-source AI gateway with parallel multi-LLM execution across 47+ providers, ensemble voting, semantic cache, and budget enforcement",
|
package/research/PUBLISH_LOG.md
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
## 2026-05-
|
|
2
|
-
Published v2.14.
|
|
1
|
+
## 2026-05-30T11:22Z
|
|
2
|
+
Published v2.14.8
|
|
3
3
|
|