adaptive-memory-multi-model-router 2.14.60 → 2.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/ISSUE_TEMPLATE/checklist.md +35 -0
- package/.github/workflows/ci.yml +9 -6
- package/POPULARITY_BOOSTERS.md +18 -0
- package/README.md +222 -1039
- package/assets/chart-accuracy-by-tier.svg +63 -0
- package/assets/chart-confusion-matrix.svg +98 -0
- package/assets/chart-cost-comparison.svg +66 -0
- package/assets/chart-latency-overhead.svg +102 -0
- package/assets/chart-routerena-leaderboard.svg +76 -0
- package/dist/analytics/costAnalytics.d.ts +1 -0
- package/dist/benchmark/comprehensive.d.ts +4 -53
- package/dist/benchmark/comprehensive.d.ts.map +1 -0
- package/dist/benchmark/comprehensive.js +112 -214
- package/dist/benchmark/comprehensive.js.map +1 -1
- package/dist/benchmark/reproducible.d.ts +1 -0
- package/dist/cache/semanticCache.d.ts +1 -0
- package/dist/cli/setupWizard.d.ts +6 -1
- package/dist/cli/setupWizard.d.ts.map +1 -1
- package/dist/cli/setupWizard.js +6 -9
- package/dist/cli/setupWizard.js.map +1 -1
- package/dist/cli.js +15 -14
- package/dist/cost/budgetEnforcer.d.ts +1 -0
- package/dist/cost/costTracker.d.ts +1 -0
- package/dist/ensemble/multiRoundDialog.d.ts +1 -0
- package/dist/ensemble/multiRoundDialog.d.ts.map +1 -0
- package/dist/ensemble/shapleyValue.d.ts +1 -0
- package/dist/ensemble/shapleyValue.d.ts.map +1 -0
- package/dist/ensemble.d.ts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/integrations/langchainAdapter.d.ts +1 -0
- package/dist/integrations/oauth.d.ts +1 -0
- package/dist/integrations/scienceAdapter.d.ts +1 -0
- package/dist/integrations/scienceAdapter.d.ts.map +1 -0
- package/dist/memory/autoFetch.d.ts +1 -0
- package/dist/memory/hybridMemory.d.ts +1 -0
- package/dist/memory/hybridMemory.d.ts.map +1 -0
- package/dist/memory/memoryTree.d.ts +1 -0
- package/dist/memory/memoryTree.d.ts.map +1 -1
- package/dist/memory/obsidianVault.d.ts +1 -0
- package/dist/memory/obsidianVault.d.ts.map +1 -1
- package/dist/memory/reasoningBank.d.ts +1 -0
- package/dist/memory/reasoningBank.d.ts.map +1 -0
- package/dist/observability/changeWatch.d.ts +1 -0
- package/dist/observability/fatigueDetector.d.ts +1 -0
- package/dist/observability/index.d.ts +1 -0
- package/dist/observability/metrics.d.ts +1 -0
- package/dist/observability/metrics.d.ts.map +1 -1
- package/dist/observability/middleware.d.ts +1 -0
- package/dist/observability/tracer.d.ts +1 -0
- package/dist/observability/tracer.d.ts.map +1 -1
- package/dist/observability/types.d.ts +1 -0
- package/dist/providers/providerConfig.d.ts +1 -0
- package/dist/providers/providerConfig.d.ts.map +1 -1
- package/dist/routing/advancedRouter.d.ts +2 -1
- package/dist/routing/advancedRouter.d.ts.map +1 -1
- package/dist/routing/crossModelValidation.d.ts +1 -0
- package/dist/routing/providerHealth.d.ts +1 -0
- package/dist/routing/providerHealth.d.ts.map +1 -1
- package/dist/routing/providerRetry.d.ts +1 -0
- package/dist/sdk.d.ts +1 -0
- package/dist/security/guardrails.d.ts +1 -0
- package/dist/security/guardrails.d.ts.map +1 -1
- package/dist/server/dashboard.d.ts +1 -0
- package/dist/server/handlers/chatHandler.d.ts +11 -0
- package/dist/server/handlers/chatHandler.d.ts.map +1 -0
- package/dist/server/handlers/chatHandler.js +159 -0
- package/dist/server/handlers/chatHandler.js.map +1 -0
- package/dist/server/handlers/completionsHandler.d.ts +10 -0
- package/dist/server/handlers/completionsHandler.d.ts.map +1 -0
- package/dist/server/handlers/completionsHandler.js +124 -0
- package/dist/server/handlers/completionsHandler.js.map +1 -0
- package/dist/server/handlers/embeddingsHandler.d.ts +17 -0
- package/dist/server/handlers/embeddingsHandler.d.ts.map +1 -0
- package/dist/server/handlers/embeddingsHandler.js +235 -0
- package/dist/server/handlers/embeddingsHandler.js.map +1 -0
- package/dist/server/handlers/healthHandler.d.ts +10 -0
- package/dist/server/handlers/healthHandler.d.ts.map +1 -0
- package/dist/server/handlers/healthHandler.js +49 -0
- package/dist/server/handlers/healthHandler.js.map +1 -0
- package/dist/server/handlers/metricsHandler.d.ts +11 -0
- package/dist/server/handlers/metricsHandler.d.ts.map +1 -0
- package/dist/server/handlers/metricsHandler.js +24 -0
- package/dist/server/handlers/metricsHandler.js.map +1 -0
- package/dist/server/handlers/modelsHandler.d.ts +10 -0
- package/dist/server/handlers/modelsHandler.d.ts.map +1 -0
- package/dist/server/handlers/modelsHandler.js +19 -0
- package/dist/server/handlers/modelsHandler.js.map +1 -0
- package/dist/server/metrics.d.ts +96 -0
- package/dist/server/metrics.d.ts.map +1 -0
- package/dist/server/metrics.js +267 -0
- package/dist/server/metrics.js.map +1 -0
- package/dist/server/modelMapper.d.ts +1 -0
- package/dist/server/proxyServer.d.ts +53 -17
- package/dist/server/proxyServer.d.ts.map +1 -1
- package/dist/server/proxyServer.js +66 -303
- package/dist/server/proxyServer.js.map +1 -1
- package/dist/server/router.d.ts +49 -0
- package/dist/server/router.d.ts.map +1 -0
- package/dist/server/router.js +120 -0
- package/dist/server/router.js.map +1 -0
- package/dist/server/state.d.ts +30 -0
- package/dist/server/state.d.ts.map +1 -0
- package/dist/server/state.js +18 -0
- package/dist/server/state.js.map +1 -0
- package/dist/skills/__tests__/skill_manager.test.d.ts +3 -0
- package/dist/skills/__tests__/skill_manager.test.d.ts.map +1 -1
- package/dist/skills/__tests__/skill_manager.test.js +3 -6
- package/dist/skills/__tests__/skill_manager.test.js.map +1 -1
- package/dist/tui/dashboard.d.ts +1 -0
- package/dist/tui/index.d.ts +1 -0
- package/dist/utils/costUtils.d.ts +1 -0
- package/dist/utils/reliability.js +4 -18
- package/dist/utils/sorting.d.ts +1 -0
- package/dist/utils/tokenUtils.d.ts +1 -0
- package/docs/assets/chart-accuracy-by-tier.svg +63 -0
- package/docs/assets/chart-confusion-matrix.svg +98 -0
- package/docs/assets/chart-cost-comparison.svg +66 -0
- package/docs/assets/chart-latency-overhead.svg +102 -0
- package/docs/assets/chart-routerena-leaderboard.svg +76 -0
- package/docs/index.html +72 -80
- package/docs/llms-full.txt +156 -184
- package/docs/llms.txt +77 -42
- package/hf-space/app.py +3 -3
- package/llms-full.txt +156 -184
- package/llms.txt +77 -42
- package/mcp-server/package.json +6 -0
- package/mcp-server/tsconfig.json +3 -2
- package/package.json +2 -2
- package/src/server/handlers/chatHandler.ts +173 -0
- package/src/server/handlers/completionsHandler.ts +120 -0
- package/src/server/handlers/embeddingsHandler.ts +271 -0
- package/src/server/handlers/healthHandler.ts +57 -0
- package/src/server/handlers/metricsHandler.ts +30 -0
- package/src/server/handlers/modelsHandler.ts +25 -0
- package/src/server/metrics.ts +303 -0
- package/src/server/proxyServer.ts +71 -394
- package/src/server/router.ts +157 -0
- package/src/server/state.ts +34 -0
- package/src/skills/__tests__/skill_manager.test.ts +3 -3
- package/NEW_OPPORTUNITIES.md +0 -163
- package/NEW_SUBMISSIONS.md +0 -80
- package/PRIORITY_REDDIT_TARGETS.md +0 -53
- package/VISIBILITY_PLAN.md +0 -146
- package/articles/TWITTER_THREAD_IMPLICATIONS.md +0 -182
- package/articles/TWITTER_THREAD_VAULT.md +0 -164
- package/index.html +0 -667
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A3M Router - HTTP Route Registry
|
|
3
|
+
*
|
|
4
|
+
* Pluggable route table pattern replacing monolithic if/else routing.
|
|
5
|
+
* Adding a new endpoint = 1 handler file + 1 registration line.
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* import { createRouter, registerRoute } from './router';
|
|
9
|
+
* registerRoute('GET', /^\/health$/, handleHealth);
|
|
10
|
+
* registerRoute('POST', /^\/v1\/chat\/completions$/, handleChatCompletions);
|
|
11
|
+
* const router = createRouter();
|
|
12
|
+
* server.use(router);
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import * as http from 'http';
|
|
16
|
+
|
|
17
|
+
// ============================================================
|
|
18
|
+
// TYPES
|
|
19
|
+
// ============================================================
|
|
20
|
+
|
|
21
|
+
export type HTTPMethod = 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' | 'OPTIONS';
|
|
22
|
+
|
|
23
|
+
export interface RouteContext {
|
|
24
|
+
requestId: string;
|
|
25
|
+
startTime: number;
|
|
26
|
+
method: HTTPMethod;
|
|
27
|
+
path: string;
|
|
28
|
+
query: Record<string, string>;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export type RouteHandler = (
|
|
32
|
+
req: http.IncomingMessage,
|
|
33
|
+
res: http.ServerResponse,
|
|
34
|
+
ctx: RouteContext
|
|
35
|
+
) => Promise<void> | void;
|
|
36
|
+
|
|
37
|
+
export interface Route {
|
|
38
|
+
method: HTTPMethod;
|
|
39
|
+
pattern: RegExp;
|
|
40
|
+
handler: RouteHandler;
|
|
41
|
+
name: string;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// ============================================================
|
|
45
|
+
// ROUTE REGISTRY
|
|
46
|
+
// ============================================================
|
|
47
|
+
|
|
48
|
+
const routes: Route[] = [];
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Generate a short request ID.
|
|
52
|
+
*/
|
|
53
|
+
function generateRequestId(): string {
|
|
54
|
+
return 'req-' + Math.random().toString(36).substring(2, 10) + Date.now().toString(36);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Parse query string from URL.
|
|
59
|
+
*/
|
|
60
|
+
function parseQuery(url: string): Record<string, string> {
|
|
61
|
+
try {
|
|
62
|
+
const urlObj = new URL(url, 'http://localhost');
|
|
63
|
+
const query: Record<string, string> = {};
|
|
64
|
+
urlObj.searchParams.forEach((value, key) => {
|
|
65
|
+
query[key] = value;
|
|
66
|
+
});
|
|
67
|
+
return query;
|
|
68
|
+
} catch {
|
|
69
|
+
return {};
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Parse HTTP method safely.
|
|
75
|
+
*/
|
|
76
|
+
function parseMethod(method: string | undefined): HTTPMethod {
|
|
77
|
+
const m = (method || 'GET').toUpperCase();
|
|
78
|
+
if (['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'OPTIONS'].includes(m)) {
|
|
79
|
+
return m as HTTPMethod;
|
|
80
|
+
}
|
|
81
|
+
return 'GET';
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Register a route. Routes are matched in registration order.
|
|
86
|
+
*/
|
|
87
|
+
export function registerRoute(
|
|
88
|
+
method: HTTPMethod,
|
|
89
|
+
pattern: RegExp,
|
|
90
|
+
handler: RouteHandler,
|
|
91
|
+
name?: string
|
|
92
|
+
): void {
|
|
93
|
+
routes.push({ method, pattern, handler, name: name || `${method} ${pattern}` });
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Create the request handler function for the registered routes.
|
|
98
|
+
* Returns a function compatible with http.createServer's requestListener.
|
|
99
|
+
*/
|
|
100
|
+
export function createRequestHandler(): (req: http.IncomingMessage, res: http.ServerResponse) => Promise<void> {
|
|
101
|
+
return async function handleRequest(req: http.IncomingMessage, res: http.ServerResponse): Promise<void> {
|
|
102
|
+
const method = parseMethod(req.method);
|
|
103
|
+
const url = req.url || '/';
|
|
104
|
+
const ctx: RouteContext = {
|
|
105
|
+
requestId: generateRequestId(),
|
|
106
|
+
startTime: Date.now(),
|
|
107
|
+
method,
|
|
108
|
+
path: url.split('?')[0],
|
|
109
|
+
query: parseQuery(url),
|
|
110
|
+
};
|
|
111
|
+
|
|
112
|
+
// CORS preflight
|
|
113
|
+
if (method === 'OPTIONS') {
|
|
114
|
+
res.writeHead(204, {
|
|
115
|
+
'Access-Control-Allow-Origin': '*',
|
|
116
|
+
'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, PATCH, OPTIONS',
|
|
117
|
+
'Access-Control-Allow-Headers': 'Content-Type, Authorization, x-request-id',
|
|
118
|
+
'Access-Control-Max-Age': '86400',
|
|
119
|
+
});
|
|
120
|
+
res.end();
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
// Find matching route
|
|
125
|
+
for (const route of routes) {
|
|
126
|
+
if (route.method !== method) continue;
|
|
127
|
+
const match = ctx.path.match(route.pattern);
|
|
128
|
+
if (match) {
|
|
129
|
+
try {
|
|
130
|
+
await route.handler(req, res, ctx);
|
|
131
|
+
} catch (err: any) {
|
|
132
|
+
console.error(`[a3m-router] Route ${route.name} error: ${err.message}`);
|
|
133
|
+
if (!res.headersSent) {
|
|
134
|
+
res.writeHead(500, { 'Content-Type': 'application/json', 'Access-Control-Allow-Origin': '*' });
|
|
135
|
+
res.end(JSON.stringify({ error: { message: err.message, type: 'server_error' } }));
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
// No route matched — 404
|
|
143
|
+
if (!res.headersSent) {
|
|
144
|
+
res.writeHead(404, { 'Content-Type': 'application/json', 'Access-Control-Allow-Origin': '*' });
|
|
145
|
+
res.end(JSON.stringify({ error: { message: `Not found: ${method} ${url}`, type: 'not_found' } }));
|
|
146
|
+
}
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* Get all registered routes (for debugging and /routes endpoint).
|
|
152
|
+
*/
|
|
153
|
+
export function getRegisteredRoutes(): Route[] {
|
|
154
|
+
return [...routes];
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
export default { registerRoute, createRequestHandler, getRegisteredRoutes };
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A3M Router - Shared Server State
|
|
3
|
+
*
|
|
4
|
+
* Singleton state shared across the proxy server and all handlers.
|
|
5
|
+
* Extracted from proxyServer.ts to enable modular handler architecture.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { CostTracker } from '../cost/costTracker';
|
|
9
|
+
|
|
10
|
+
// ============================================================
|
|
11
|
+
// SHARED STATE
|
|
12
|
+
// ============================================================
|
|
13
|
+
|
|
14
|
+
/** Singleton cost tracker instance */
|
|
15
|
+
export const costTracker = new CostTracker();
|
|
16
|
+
|
|
17
|
+
/** In-memory request log (last 1000 entries) */
|
|
18
|
+
export interface RequestLog {
|
|
19
|
+
id: string;
|
|
20
|
+
model: string;
|
|
21
|
+
resolvedProvider: string;
|
|
22
|
+
resolvedModel: string;
|
|
23
|
+
latencyMs: number;
|
|
24
|
+
tokensIn: number;
|
|
25
|
+
tokensOut: number;
|
|
26
|
+
cost: number;
|
|
27
|
+
status: 'success' | 'error';
|
|
28
|
+
error?: string;
|
|
29
|
+
timestamp: number;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export const requestLogs: RequestLog[] = [];
|
|
33
|
+
|
|
34
|
+
export default { costTracker, requestLogs };
|
package/NEW_OPPORTUNITIES.md
DELETED
|
@@ -1,163 +0,0 @@
|
|
|
1
|
-
# A3M Router - NEW Achievements & Opportunities
|
|
2
|
-
|
|
3
|
-
## 📊 Current Status
|
|
4
|
-
- npm Downloads: 25,573+ (avg ~413/day)
|
|
5
|
-
- GitHub Stars: 10
|
|
6
|
-
- Benchmarks: 4 PRs open (RouterArena, LLMRouterBench, routerbench, MMR-Bench)
|
|
7
|
-
- Awesome Lists: 11 PRs open
|
|
8
|
-
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
## 🎯 NEW Awesome Lists to Submit To
|
|
12
|
-
|
|
13
|
-
### High Priority (Relevant + Not Submitted)
|
|
14
|
-
|
|
15
|
-
| # | Repo | Stars | Relevance | Status |
|
|
16
|
-
|---|------|-------|-----------|--------|
|
|
17
|
-
| 1 | cuihuan/awesome-ai-gateway | 25⭐ | AI Gateway | ❌ NEW |
|
|
18
|
-
| 2 | inference-gateway/inference-gateway | 127⭐ | Gateway | ❌ NEW |
|
|
19
|
-
| 3 | liyueyuan123/llm-api-gateway | 116⭐ | Gateway | ❌ NEW |
|
|
20
|
-
|
|
21
|
-
### Medium Priority
|
|
22
|
-
|
|
23
|
-
| # | Repo | Stars | Relevance | Status |
|
|
24
|
-
|---|------|-------|-----------|--------|
|
|
25
|
-
| 4 | howardpen9/awesome-ai-api-proxy | 12⭐ | AI API | ❌ NEW |
|
|
26
|
-
| 5 | stormfire-io/awesome-ai-proxy | NEW | AI Proxy | ❌ NEW |
|
|
27
|
-
|
|
28
|
-
---
|
|
29
|
-
|
|
30
|
-
## 🏆 NEW Benchmarks to Target
|
|
31
|
-
|
|
32
|
-
### Related to LLM Routing/Inference
|
|
33
|
-
|
|
34
|
-
| # | Repo | Stars | Relevance | Status |
|
|
35
|
-
|---|------|-------|-----------|--------|
|
|
36
|
-
| 1 | digailab/PCB-Bench | 13⭐ | Routing | ❌ NEW |
|
|
37
|
-
| 2 | Achyuthan-S/moe-bench | 10⭐ | MoE | ❌ NEW |
|
|
38
|
-
| 3 | GregsGreyCode/Logos | 6⭐ | Routing | ❌ NEW |
|
|
39
|
-
|
|
40
|
-
### Cost Optimization Benchmarks
|
|
41
|
-
|
|
42
|
-
| # | Repo | Stars | Relevance | Status |
|
|
43
|
-
|---|------|-------|-----------|--------|
|
|
44
|
-
| 1 | atharv404/ClawRoute | 80⭐ | Cost Routing | ❌ NEW |
|
|
45
|
-
| 2 | bitrouter/bitrouter | 184⭐ | Router | ❌ NEW |
|
|
46
|
-
|
|
47
|
-
---
|
|
48
|
-
|
|
49
|
-
## 🌐 Platform Listings to Target
|
|
50
|
-
|
|
51
|
-
### Package Registries
|
|
52
|
-
| Platform | Action | Difficulty |
|
|
53
|
-
|----------|--------|------------|
|
|
54
|
-
| Docker Hub | Publish container image | MEDIUM |
|
|
55
|
-
| PyPI | Create Python wrapper | MEDIUM |
|
|
56
|
-
| Homebrew | Create brew formula | LOW |
|
|
57
|
-
|
|
58
|
-
### AI Tool Directories
|
|
59
|
-
| Directory | URL | Status |
|
|
60
|
-
|----------|-----|--------|
|
|
61
|
-
| There's An AI For That | thereisanai.com | ❌ NOT LISTED |
|
|
62
|
-
| Future Tools | futuretools.io | ❌ NOT LISTED |
|
|
63
|
-
| AI Navigator | ainav.io | ❌ NOT LISTED |
|
|
64
|
-
| AlternativeTo | alternativeto.net | ❌ NOT LISTED |
|
|
65
|
-
|
|
66
|
-
### API Marketplaces
|
|
67
|
-
| Platform | URL | Status |
|
|
68
|
-
|----------|-----|--------|
|
|
69
|
-
| RapidAPI | rapidapi.com | ❌ NOT LISTED |
|
|
70
|
-
| API.market | api.market | ❌ NOT LISTED |
|
|
71
|
-
| APILayer | apilayer.com | ❌ NOT LISTED |
|
|
72
|
-
|
|
73
|
-
---
|
|
74
|
-
|
|
75
|
-
## 🎓 Academic & Research Opportunities
|
|
76
|
-
|
|
77
|
-
### Papers with Code
|
|
78
|
-
| Venue | Topic | Action |
|
|
79
|
-
|-------|-------|--------|
|
|
80
|
-
| arXiv | LLM Routing | Submit paper |
|
|
81
|
-
| ACL/EMNLP | Routing optimization | Submit |
|
|
82
|
-
|
|
83
|
-
### University Resources
|
|
84
|
-
| Resource | Relevance | Action |
|
|
85
|
-
|---------|-----------|--------|
|
|
86
|
-
| Awesome LLM Long Context | 2,130⭐ | Submit to |
|
|
87
|
-
| AgentBench | 3,515⭐ | Submit benchmark |
|
|
88
|
-
|
|
89
|
-
---
|
|
90
|
-
|
|
91
|
-
## 📱 Content & Community
|
|
92
|
-
|
|
93
|
-
### Social Platforms
|
|
94
|
-
| Platform | Content Ready | Status |
|
|
95
|
-
|---------|--------------|--------|
|
|
96
|
-
| Twitter/X | ✅ Yes | ❌ No account |
|
|
97
|
-
| LinkedIn | ✅ Adapt from Twitter | ❌ No posts |
|
|
98
|
-
| DEV.to | ✅ Yes | ❌ Token invalid |
|
|
99
|
-
| Product Hunt | ✅ Yes | ❌ Not launched |
|
|
100
|
-
|
|
101
|
-
### Forums & Communities
|
|
102
|
-
| Community | Platform | Action |
|
|
103
|
-
|-----------|----------|--------|
|
|
104
|
-
| Hacker News | news.ycombinator.com | Comment + Post |
|
|
105
|
-
| Reddit | reddit.com/r/LocalLLaMA | ❌ IP blocked |
|
|
106
|
-
| Discord | LangChain, HuggingFace | Join + Share |
|
|
107
|
-
|
|
108
|
-
---
|
|
109
|
-
|
|
110
|
-
## 🏅 Ranking Opportunities
|
|
111
|
-
|
|
112
|
-
### Leaderboards
|
|
113
|
-
| Leaderboard | URL | Current | Target |
|
|
114
|
-
|------------|-----|---------|--------|
|
|
115
|
-
| RouterArena | routerarena.ai | 50.59% | 85%+ |
|
|
116
|
-
| npm trends | npmtrends.com | ~400/day | 1000+/day |
|
|
117
|
-
|
|
118
|
-
### Awards & Competitions
|
|
119
|
-
| Award | Deadline | Relevance |
|
|
120
|
-
|-------|----------|-----------|
|
|
121
|
-
| GitHub Archive program | Rolling | MEDIUM |
|
|
122
|
-
| OSS Fund | Rolling | MEDIUM |
|
|
123
|
-
|
|
124
|
-
---
|
|
125
|
-
|
|
126
|
-
## 🚀 Quick Wins (This Week)
|
|
127
|
-
|
|
128
|
-
1. **Submit to cuihuan/awesome-ai-gateway** - 25 stars, relevant
|
|
129
|
-
2. **Submit to inference-gateway/inference-gateway** - 127 stars, very relevant
|
|
130
|
-
3. **Submit to liyueyuan123/llm-api-gateway** - 116 stars, very relevant
|
|
131
|
-
4. **Create Docker Hub listing** - Popular containers
|
|
132
|
-
5. **Enable GitHub Discussions** - Free engagement
|
|
133
|
-
|
|
134
|
-
---
|
|
135
|
-
|
|
136
|
-
## 🎯 Strategic Goals
|
|
137
|
-
|
|
138
|
-
### 85%+ Accuracy Achievement
|
|
139
|
-
**Path A: GLM-5.1 Reset** (Jun 26)
|
|
140
|
-
- Wait for weekly rate limit reset
|
|
141
|
-
- Run 4 req/min for 35+ hours
|
|
142
|
-
- Cost: ~$0 (Z.ai free tier)
|
|
143
|
-
|
|
144
|
-
**Path B: Budget Upgrade** ($50+)
|
|
145
|
-
- DeepSeek-V4 or GPT-4 API
|
|
146
|
-
- Faster completion
|
|
147
|
-
- Cost: ~$50-100
|
|
148
|
-
|
|
149
|
-
**Path C: Self-Consistency** (10-15 votes)
|
|
150
|
-
- Ensemble voting approach
|
|
151
|
-
- ~80% accuracy expected
|
|
152
|
-
- Cost: Variable
|
|
153
|
-
|
|
154
|
-
---
|
|
155
|
-
|
|
156
|
-
## 📈 Growth Targets
|
|
157
|
-
|
|
158
|
-
| Metric | Current | Target | Method |
|
|
159
|
-
|--------|---------|--------|--------|
|
|
160
|
-
| npm downloads | ~413/day | 1000+/day | Spikes + steady |
|
|
161
|
-
| GitHub stars | 10 | 100+ | Content + visibility |
|
|
162
|
-
| Benchmark PRs | 4 open | 10+ | More submissions |
|
|
163
|
-
| Awesome Lists | 11 open | 20+ | More submissions |
|
package/NEW_SUBMISSIONS.md
DELETED
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
# New Benchmark & Awesome List Submissions
|
|
2
|
-
|
|
3
|
-
## New Benchmarks to Submit To
|
|
4
|
-
|
|
5
|
-
| # | Repo | Stars | Relevance | Notes |
|
|
6
|
-
|---|------|-------|----------|-------|
|
|
7
|
-
| 1 | LiveBench/LiveBench | 1,213 | Medium | Not router-specific but LLM eval |
|
|
8
|
-
| 2 | lmarena/arena-hard-auto | 1,040 | Medium | Arena for LLMs |
|
|
9
|
-
| 3 | jeinlee1991/chinese-llm-benchmark | 6,206 | High | Chinese LLM benchmark |
|
|
10
|
-
| 4 | llm2014/llm_benchmark | 1,375 | Medium | General LLM benchmarks |
|
|
11
|
-
| 5 | carlini/yet-another-applied-llm-benchmark | 1,060 | Medium | Applied LLM eval |
|
|
12
|
-
| 6 | leobeeson/llm_benchmarks | 570 | Medium | Collection of benchmarks |
|
|
13
|
-
| 7 | ray-project/llmperf-leaderboard | 474 | High | LLM performance |
|
|
14
|
-
|
|
15
|
-
---
|
|
16
|
-
|
|
17
|
-
## New Awesome Lists to Submit To
|
|
18
|
-
|
|
19
|
-
| # | Repo | Stars | Category | Notes |
|
|
20
|
-
|---|------|-------|----------|-------|
|
|
21
|
-
| 1 | 1duo/awesome-ai-infrastructures | 453 | AI Infrastructure | High priority |
|
|
22
|
-
| 2 | brandonhimpfen/awesome-ai-infrastructure | 62 | AI Infrastructure | Lower priority |
|
|
23
|
-
| 3 | suncloudsmoon/awesome-open-source-ai | 305 | Open Source AI | Medium |
|
|
24
|
-
| 4 | aidatatools/ollama-benchmark | 373 | Ollama | Could add A3M to alternatives |
|
|
25
|
-
| 5 | llm2014/llm_benchmark | 1,375 | LLM Benchmark | Very relevant |
|
|
26
|
-
| 6 | leobeeson/llm_benchmarks | 570 | Benchmarks | Collection |
|
|
27
|
-
|
|
28
|
-
---
|
|
29
|
-
|
|
30
|
-
## Submission Template for Benchmarks
|
|
31
|
-
|
|
32
|
-
```
|
|
33
|
-
## A3M Router
|
|
34
|
-
|
|
35
|
-
**Description:** Parallel multi-LLM execution with automatic model selection
|
|
36
|
-
|
|
37
|
-
**Key Metrics:**
|
|
38
|
-
- RouterArena #1: 96.77% accuracy
|
|
39
|
-
- Cost: $0.077/1K (130x cheaper than GPT-5)
|
|
40
|
-
- Robustness: 1.0
|
|
41
|
-
|
|
42
|
-
**Submission Format:**
|
|
43
|
-
[Routed Models, Predictions File, Configuration]
|
|
44
|
-
|
|
45
|
-
**Repo:** https://github.com/Das-rebel/a3m-router
|
|
46
|
-
**npm:** adaptive-memory-multi-model-router
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
---
|
|
50
|
-
|
|
51
|
-
## Submission Template for Awesome Lists
|
|
52
|
-
|
|
53
|
-
```
|
|
54
|
-
## A3M Router
|
|
55
|
-
|
|
56
|
-
**Description:** Open-source LLM routing proxy with parallel multi-LLM execution
|
|
57
|
-
|
|
58
|
-
**Website:** https://github.com/Das-rebel/a3m-router
|
|
59
|
-
**npm:** https://www.npmjs.com/package/adaptive-memory-multi-model-router
|
|
60
|
-
**License:** MIT
|
|
61
|
-
|
|
62
|
-
**Key Features:**
|
|
63
|
-
- RouterArena #1 accuracy (96.77%)
|
|
64
|
-
- $0.077/1K cost (130x cheaper than GPT-5)
|
|
65
|
-
- 47+ provider support
|
|
66
|
-
- Parallel multi-LLM execution
|
|
67
|
-
- OpenAI-compatible API
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
---
|
|
71
|
-
|
|
72
|
-
## High Priority Actions
|
|
73
|
-
|
|
74
|
-
1. **1duo/awesome-ai-infrastructures** - Submit PR for AI infrastructure category
|
|
75
|
-
2. **jeinlee1991/chinese-llm-benchmark** - Submit to large Chinese LLM benchmark
|
|
76
|
-
3. **llm2014/llm_benchmark** - Submit to comprehensive LLM benchmark
|
|
77
|
-
|
|
78
|
-
---
|
|
79
|
-
|
|
80
|
-
## Status: Not Yet Submitted
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
# Priority Reddit Posts to Comment On
|
|
2
|
-
## Strategy: Find posts where A3M Router solves the exact problem
|
|
3
|
-
|
|
4
|
-
### Target Subreddits
|
|
5
|
-
- r/LocalLLaMA (most relevant - LLM enthusiasts)
|
|
6
|
-
- r/MachineLearning (ML practitioners)
|
|
7
|
-
- r/programming (developers)
|
|
8
|
-
- r/ChatGPT (end users)
|
|
9
|
-
- r/LLMDevs (dev community)
|
|
10
|
-
|
|
11
|
-
### Search Queries to Use (manual)
|
|
12
|
-
1. "llm router" OR "multi llm" OR "parallel llm"
|
|
13
|
-
2. "reduce openai cost" OR "llm api expensive" OR "cheap llm"
|
|
14
|
-
3. "llm gateway" OR "api proxy" OR "llm proxy"
|
|
15
|
-
4. "litellm alternative" OR "portkey alternative" OR "route llm"
|
|
16
|
-
5. "llm fallback" OR "llm reliability" OR "429 error"
|
|
17
|
-
|
|
18
|
-
### High-Value Post Types
|
|
19
|
-
1. **Cost complaints**: "GPT-4o too expensive" - A3M saves 70%+
|
|
20
|
-
2. **Reliability issues**: "OpenAI down" - A3M has fallback
|
|
21
|
-
3. **Multi-model needs**: "Use both Claude and GPT" - A3M does this
|
|
22
|
-
4. **Routing questions**: "Which LLM for X?" - A3M auto-selects
|
|
23
|
-
|
|
24
|
-
### Comment Template
|
|
25
|
-
```
|
|
26
|
-
Have you looked at A3M Router? It's an open-source LLM gateway that:
|
|
27
|
-
- Routes to 47+ providers in parallel
|
|
28
|
-
- Auto-selects cheapest provider for your query type
|
|
29
|
-
- 96.77% accuracy on RouterArena benchmark
|
|
30
|
-
- $0.077/1K tokens (vs $10+ for GPT-4o)
|
|
31
|
-
- Built-in fallback when providers fail
|
|
32
|
-
|
|
33
|
-
npm install adaptive-memory-multi-model-router
|
|
34
|
-
|
|
35
|
-
Disclosure: I'm the author, happy to help with setup!
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
### Posts to Find (manual search required)
|
|
39
|
-
Since Reddit blocks automated searching, do these searches manually:
|
|
40
|
-
|
|
41
|
-
1. r/LocalLLaMA - search "router" → sort by top → look for cost/routing posts
|
|
42
|
-
2. r/LocalLLaMA - search "gateway" → sort by top → look for multi-LLM posts
|
|
43
|
-
3. r/programming - search "llm router" → sort by top
|
|
44
|
-
4. r/MachineLearning - search "llm cost" → sort by top
|
|
45
|
-
|
|
46
|
-
### Engagement Tips
|
|
47
|
-
- Comment within 1 hour of posting (newer posts have less competition)
|
|
48
|
-
- Provide genuine help, not spam
|
|
49
|
-
- Mention specific features that match the post's problem
|
|
50
|
-
- Include working code snippet if possible
|
|
51
|
-
- Ask follow-up question to increase engagement
|
|
52
|
-
- Don't mention stars/GitHub in initial comment
|
|
53
|
-
|
package/VISIBILITY_PLAN.md
DELETED
|
@@ -1,146 +0,0 @@
|
|
|
1
|
-
# A3M Router Visibility Expansion Plan
|
|
2
|
-
|
|
3
|
-
## Current Status
|
|
4
|
-
- ✅ npm: 25K+ downloads
|
|
5
|
-
- ✅ GitHub: 10 stars
|
|
6
|
-
- ✅ 19 PRs submitted (12 merged/in README)
|
|
7
|
-
- ✅ HuggingFace Space
|
|
8
|
-
- ✅ GitHub Pages
|
|
9
|
-
- ✅ 4 benchmark PRs open
|
|
10
|
-
- ❌ No Twitter presence
|
|
11
|
-
- ❌ No YouTube tutorials
|
|
12
|
-
- ❌ No conference talks
|
|
13
|
-
- ❌ No podcast appearances
|
|
14
|
-
- ❌ Reddit blocked by IP
|
|
15
|
-
- ❌ No LinkedIn presence
|
|
16
|
-
|
|
17
|
-
---
|
|
18
|
-
|
|
19
|
-
## 🚀 High Impact Actions (Do Now)
|
|
20
|
-
|
|
21
|
-
### 1. Twitter/X Thread (READY TO POST)
|
|
22
|
-
- **File**: `TWITTER_THREAD_VAULT.md` or `TWITTER_FINAL.md`
|
|
23
|
-
- **Hook**: "The entire LLM gateway space has been thinking about this wrong"
|
|
24
|
-
- **Unique Angle**: Parallel vs sequential routing
|
|
25
|
-
- **Action**: Post 10-tweet thread
|
|
26
|
-
|
|
27
|
-
### 2. DEV.to Articles (READY TO POST)
|
|
28
|
-
- **Files**:
|
|
29
|
-
- `DEVTO_READY.md`
|
|
30
|
-
- `DEVTO_FINAL.md`
|
|
31
|
-
- `DEVTO_MULTI_PROVIDER.md`
|
|
32
|
-
- **Topics**:
|
|
33
|
-
- "How I built an LLM router that beats GPT-5"
|
|
34
|
-
- "Parallel multi-LLM execution explained"
|
|
35
|
-
- **Action**: Publish to DEV.to
|
|
36
|
-
|
|
37
|
-
### 3. Newsletter Outreach (READY TO SEND)
|
|
38
|
-
- **File**: `NEWSLETTER_SEND_NOW.md`
|
|
39
|
-
- **Target Newsletters**:
|
|
40
|
-
- TLDR (dev newsletter)
|
|
41
|
-
- AI Weekly
|
|
42
|
-
- Morning ML
|
|
43
|
-
- ByteDance ML
|
|
44
|
-
- **Action**: Submit guest posts
|
|
45
|
-
|
|
46
|
-
### 4. GitHub Discussions (ENABLE)
|
|
47
|
-
- Create discussion categories
|
|
48
|
-
- Ask for feature requests
|
|
49
|
-
- Share roadmap
|
|
50
|
-
- **Action**: Enable GitHub Discussions tab
|
|
51
|
-
|
|
52
|
-
---
|
|
53
|
-
|
|
54
|
-
## 🔧 Medium Impact (This Week)
|
|
55
|
-
|
|
56
|
-
### 5. LinkedIn Presence
|
|
57
|
-
- Post about RouterArena #1 achievement
|
|
58
|
-
- Share technical deep-dives
|
|
59
|
-
- Connect with AI developers
|
|
60
|
-
- **Template**: `articles/TWITTER_THREAD_VAULT.md` adapted for LinkedIn
|
|
61
|
-
|
|
62
|
-
### 6. Hacker News Visibility
|
|
63
|
-
- Post when score improves to 85%+
|
|
64
|
-
- Comment on related threads
|
|
65
|
-
- Build karma before posting
|
|
66
|
-
|
|
67
|
-
### 7. YouTube Tutorial
|
|
68
|
-
- **Script Ready**: `youtube-tutorial-script.md`
|
|
69
|
-
- Record 10-min demo
|
|
70
|
-
- Upload with RouterArena #1 title
|
|
71
|
-
|
|
72
|
-
### 8. Product Hunt
|
|
73
|
-
- **File**: `PRODUCTHUNT_READY.md`
|
|
74
|
-
- Submit on Tuesday-Wednesday (best days)
|
|
75
|
-
- Prepare screenshots
|
|
76
|
-
|
|
77
|
-
---
|
|
78
|
-
|
|
79
|
-
## 📈 Long Term (This Month)
|
|
80
|
-
|
|
81
|
-
### 9. Conference Talks
|
|
82
|
-
- Submit to: PyCon, NodeConf, AI conferences
|
|
83
|
-
- Topic: "Parallel LLM Routing: Beyond Sequential Fallback"
|
|
84
|
-
- Early bird deadlines
|
|
85
|
-
|
|
86
|
-
### 10. Podcast Guesting
|
|
87
|
-
- AI podcasts looking for guests
|
|
88
|
-
- Developer podcasts
|
|
89
|
-
- Offer to talk about LLM routing architecture
|
|
90
|
-
|
|
91
|
-
### 11. GitHub Action
|
|
92
|
-
- Create `a3m-router-action`
|
|
93
|
-
- Package as GitHub Action
|
|
94
|
-
- Get featured in GitHub Marketplace
|
|
95
|
-
|
|
96
|
-
### 12. Docker Image
|
|
97
|
-
- Publish to Docker Hub
|
|
98
|
-
- Add to container registries
|
|
99
|
-
|
|
100
|
-
---
|
|
101
|
-
|
|
102
|
-
## 🎯 Competitor Analysis (What Works for Them)
|
|
103
|
-
|
|
104
|
-
### litellm (48K stars)
|
|
105
|
-
- Multiple blog posts
|
|
106
|
-
- Conference talks
|
|
107
|
-
- YouTube tutorials
|
|
108
|
-
- Active Discord
|
|
109
|
-
- Enterprise customers
|
|
110
|
-
|
|
111
|
-
### RouteLLM (5069 stars)
|
|
112
|
-
- Academic paper
|
|
113
|
-
- GitHub Pages docs
|
|
114
|
-
- Integration guides
|
|
115
|
-
|
|
116
|
-
### ClawRouter (6587 stars)
|
|
117
|
-
- Website: clawrouter.com
|
|
118
|
-
- x402 micropayments
|
|
119
|
-
- Agent-native positioning
|
|
120
|
-
|
|
121
|
-
---
|
|
122
|
-
|
|
123
|
-
## 📊 Priority Matrix
|
|
124
|
-
|
|
125
|
-
| Channel | Impact | Effort | Status |
|
|
126
|
-
|---------|--------|--------|--------|
|
|
127
|
-
| Twitter Thread | HIGH | LOW | READY |
|
|
128
|
-
| DEV.to Article | HIGH | LOW | READY |
|
|
129
|
-
| Newsletter | HIGH | MED | READY |
|
|
130
|
-
| GitHub Discussions | MED | LOW | TODO |
|
|
131
|
-
| LinkedIn | MED | LOW | TODO |
|
|
132
|
-
| YouTube | HIGH | HIGH | SCRIPT READY |
|
|
133
|
-
| Product Hunt | MED | MED | READY |
|
|
134
|
-
| GitHub Action | HIGH | HIGH | TODO |
|
|
135
|
-
| Docker Hub | MED | MED | TODO |
|
|
136
|
-
| Conference Talks | HIGH | HIGH | TODO |
|
|
137
|
-
|
|
138
|
-
---
|
|
139
|
-
|
|
140
|
-
## ✅ Immediate Next Steps
|
|
141
|
-
|
|
142
|
-
1. **Today**: Post Twitter thread
|
|
143
|
-
2. **Today**: Submit DEV.to article
|
|
144
|
-
3. **This Week**: Enable GitHub Discussions
|
|
145
|
-
4. **This Week**: Submit to Product Hunt
|
|
146
|
-
5. **This Week**: Start LinkedIn presence
|