adaptive-memory-multi-model-router 2.14.49 → 2.14.52

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.
Files changed (605) hide show
  1. package/.dockerignore +82 -0
  2. package/.env.example +303 -0
  3. package/.github/DISCUSSIONS_WELCOME.md +27 -0
  4. package/.github/DISCUSSION_TEMPLATE.yml +5 -0
  5. package/.github/FUNDING.yml +2 -0
  6. package/.github/ISSUE_TEMPLATE/bug_report.md +94 -0
  7. package/.github/ISSUE_TEMPLATE/config.yml +17 -0
  8. package/.github/ISSUE_TEMPLATE/feature_request.md +71 -0
  9. package/.github/PULL_REQUEST_TEMPLATE.md +71 -0
  10. package/.github/dependabot.yml +9 -0
  11. package/.github/workflows/ci.yml +263 -0
  12. package/.github/workflows/codeql.yml +38 -0
  13. package/.github/workflows/npm-publish.yml +20 -0
  14. package/.github/workflows/pages.yml +37 -0
  15. package/.github/workflows/stale.yml +54 -0
  16. package/.publish-tick +1 -0
  17. package/.well-known/ai-plugin.json +16 -0
  18. package/AGENT_COUNCIL_FINDINGS.md +142 -0
  19. package/ARCHITECTURE.md +346 -0
  20. package/AUDIT_REPORT.md +28 -0
  21. package/CODE_OF_CONDUCT.md +128 -0
  22. package/CONTRIBUTING.md +50 -0
  23. package/CONTRIBUTORS.md +20 -0
  24. package/Dockerfile +53 -0
  25. package/Dockerfile.proxy +33 -0
  26. package/HEALTH_REPORT.md +118 -0
  27. package/IMPROVEMENT_PLAN.md +107 -0
  28. package/LANDING.md +43 -0
  29. package/LAUNCH-PAIN-DRIVEN.md +339 -0
  30. package/LAUNCH.md +337 -0
  31. package/LAUNCH_CHECKLIST.md +141 -0
  32. package/LAUNCH_SNAPSHOT.md +260 -0
  33. package/MANIFESTO.md +41 -0
  34. package/POPULARITY_BOOSTERS.md +285 -0
  35. package/PR_STATUS_REPORT.md +148 -0
  36. package/README.md +25 -14
  37. package/REDESIGN.md +95 -0
  38. package/RUNKIT.md +83 -0
  39. package/SECURITY.md +29 -0
  40. package/SUBMISSIONS.md +43 -0
  41. package/_schema.html +53 -0
  42. package/ai-plugin.json +16 -0
  43. package/articles/AI_AGENT_LLM_ROUTING.md +150 -0
  44. package/articles/CHINESE_DIRECTORIES.md +100 -0
  45. package/articles/CHINESE_SUBMISSIONS_READY.md +322 -0
  46. package/articles/COMPETITOR_ALERTS.md +31 -0
  47. package/articles/COMPLETE_POSTING_DIRECTORY.md +147 -0
  48. package/articles/CONTENT_STRUCTURE.md +292 -0
  49. package/articles/DEVTO_COST_GUIDE.md +473 -0
  50. package/articles/DEVTO_FINAL.md +416 -0
  51. package/articles/DEVTO_MULTI_PROVIDER.md +542 -0
  52. package/articles/DEVTO_READY.md +255 -0
  53. package/articles/DEVTO_V2_ANNOUNCEMENT.md +160 -0
  54. package/articles/DEVTO_VIRAL_GROWTH.md +280 -0
  55. package/articles/FRESH_devto.md +460 -0
  56. package/articles/FRESH_devto_2026_05.md +73 -0
  57. package/articles/FRESH_hackernews.md +14 -0
  58. package/articles/FRESH_reddit_ml.md +90 -0
  59. package/articles/FRESH_reddit_node.md +198 -0
  60. package/articles/FRESH_reddit_sideproject.md +72 -0
  61. package/articles/FRESH_reddit_webdev.md +130 -0
  62. package/articles/FROM_ZERO_TO_10K.md +107 -0
  63. package/articles/HN_10X_BETTER.md +430 -0
  64. package/articles/HN_ACCOUNT_GUIDE.md +21 -0
  65. package/articles/HN_CHINESE_STYLE.md +308 -0
  66. package/articles/HN_FINAL.md +148 -0
  67. package/articles/HN_POSTED_VERSION.md +56 -0
  68. package/articles/HN_POST_READY.md +137 -0
  69. package/articles/HN_RESEARCH.md +364 -0
  70. package/articles/HN_SHOW_routerarena.md +17 -0
  71. package/articles/HN_TIMING_GUIDE.md +52 -0
  72. package/articles/INDIEHACKERS_POST.md +52 -0
  73. package/articles/INDIEHACKERS_READY.md +120 -0
  74. package/articles/LLM_BENCHMARK_DEEP_DIVE.md +153 -0
  75. package/articles/MASTER_POSTING_DIRECTORY.md +189 -0
  76. package/articles/NEWSLETTER_SEND_NOW.md +259 -0
  77. package/articles/NEWSLETTER_SUBMISSIONS.md +112 -0
  78. package/articles/PAIN-DRIVEN-devto-v2.md +308 -0
  79. package/articles/PAIN-DRIVEN-devto-v3.md +268 -0
  80. package/articles/PAIN-DRIVEN-devto.md +242 -0
  81. package/articles/PAIN-DRIVEN-hackernews-v2.md +138 -0
  82. package/articles/PAIN-DRIVEN-hackernews-v3.md +151 -0
  83. package/articles/PAIN-DRIVEN-hackernews.md +131 -0
  84. package/articles/PAIN-DRIVEN-reddit-v2.md +301 -0
  85. package/articles/PAIN-DRIVEN-reddit-v3.md +236 -0
  86. package/articles/PAIN-DRIVEN-reddit.md +218 -0
  87. package/articles/PAIN-DRIVEN-twitter-v2.md +110 -0
  88. package/articles/PAIN-DRIVEN-twitter-v3.md +121 -0
  89. package/articles/PAIN-DRIVEN-twitter.md +120 -0
  90. package/articles/PORTKEY_VS_A3M.md +147 -0
  91. package/articles/POSTING_KIT_2026_05.md +67 -0
  92. package/articles/PRESS_KIT_routerarena.md +77 -0
  93. package/articles/PRODUCTHUNT_LISTING.md +48 -0
  94. package/articles/PRODUCTHUNT_READY.md +106 -0
  95. package/articles/PR_PLAN_vault.md +125 -0
  96. package/articles/REDDIT_FINAL.md +232 -0
  97. package/articles/REDDIT_POST.md +67 -0
  98. package/articles/REDDIT_SUBMISSION_READY.md +348 -0
  99. package/articles/ROUTERARENA_9677.md +78 -0
  100. package/articles/ROUTERARENA_LEADER.md +45 -0
  101. package/articles/SHOW_HN_FINAL.md +29 -0
  102. package/articles/TWEETS_10K_DOWNLOADS.md +47 -0
  103. package/articles/TWEETS_BENCHMARK_FIRST.md +46 -0
  104. package/articles/TWEETS_MCP_PLAY.md +51 -0
  105. package/articles/TWEETS_SEQUENTIAL_BROKEN.md +49 -0
  106. package/articles/TWEETS_WHY_BUILD.md +54 -0
  107. package/articles/TWEETS_routerarena_leader.md +53 -0
  108. package/articles/TWEET_STORM_READY.md +165 -0
  109. package/articles/TWITTER_FINAL.md +167 -0
  110. package/articles/WHY_10X_BETTER.md +261 -0
  111. package/articles/WHY_CHINESE_STYLE_BETTER.md +323 -0
  112. package/articles/ai-discoverability-llm-routing.md +210 -0
  113. package/articles/devto-llm-routing.md +138 -0
  114. package/articles/hackernews-show-hn.md +54 -0
  115. package/articles/hashnode-llm-cost-optimization.md +125 -0
  116. package/articles/hn_show_2026_05.md +11 -0
  117. package/articles/medium-building-llm-router.md +205 -0
  118. package/articles/reddit-ml.md +76 -0
  119. package/articles/twitter-thread-cost-savings.md +50 -0
  120. package/articles/youtube-tutorial-script.md +262 -0
  121. package/assets/a3m_3blue1brown.mp4 +0 -0
  122. package/assets/banner.svg +109 -0
  123. package/assets/chart-cost-v2.svg +91 -0
  124. package/assets/chart-cost-v3.svg +143 -0
  125. package/assets/chart-features-v2.svg +132 -0
  126. package/assets/chart-features-v3.svg +211 -0
  127. package/assets/chart-growth-v2.svg +122 -0
  128. package/assets/chart-growth-v3.svg +189 -0
  129. package/assets/cost-comparison.svg +134 -0
  130. package/assets/cost-simple.svg +64 -0
  131. package/assets/demo-hn.gif +0 -0
  132. package/assets/feature-matrix.svg +136 -0
  133. package/assets/growth-chart-animated.svg +76 -0
  134. package/assets/growth-chart.svg +82 -0
  135. package/assets/growth-simple.svg +69 -0
  136. package/assets/hero-diagram.svg +81 -0
  137. package/assets/logo-new.svg +21 -0
  138. package/assets/logo.svg +68 -0
  139. package/assets/provider-comparison.svg +121 -0
  140. package/assets/social-preview-new.svg +100 -0
  141. package/assets/social-preview.svg +194 -0
  142. package/assets/social-v2.svg +130 -0
  143. package/assets/social-v3.svg +212 -0
  144. package/benchmark-provider-results.json +245 -0
  145. package/benchmark-results.json +54 -0
  146. package/council-votes/architecture-vote.md +121 -0
  147. package/council-votes/coverage-vote.md +93 -0
  148. package/data/adaptive-benchmark.json +92 -0
  149. package/data/benchmark-results.json +47 -0
  150. package/data/labeled-benchmark.json +88 -0
  151. package/demo/3blue1brown_video.py +285 -0
  152. package/demo/3blue1brown_video_v2.py +310 -0
  153. package/demo/IMPROVED_PROMPTS.md +229 -0
  154. package/demo/VEO3_PROMPTS.md +269 -0
  155. package/demo/VIDEO_PRODUCTION_GUIDE.md +333 -0
  156. package/demo/a3m_3blue1brown.mp4 +0 -0
  157. package/demo/asciinema-demo.sh +195 -0
  158. package/demo/demo-hn.tape +74 -0
  159. package/demo/demo-script.md +53 -0
  160. package/demo/demo-script.sh +62 -0
  161. package/demo/demo.svg +75 -0
  162. package/demo/frame1_ai_data_center.png +0 -0
  163. package/demo/frame1_sunset_video.mp4 +0 -0
  164. package/demo/frame2_cost_comparison.png +0 -0
  165. package/demo/frame2_cost_comparison_fallback.png +0 -0
  166. package/demo/frame3_parallel_execution.png +0 -0
  167. package/demo/frame3_parallel_execution_fallback.png +0 -0
  168. package/demo/frame4_providers.png +0 -0
  169. package/demo/frame4_providers_fallback.png +0 -0
  170. package/demo/frame5_endcard.png +0 -0
  171. package/demo/frame5_endcard_fallback.png +0 -0
  172. package/demo/new_frame1_hook.png +0 -0
  173. package/demo/new_frame2_proof.png +0 -0
  174. package/demo/new_frame3_wow.png +0 -0
  175. package/demo/new_frame4_social.png +0 -0
  176. package/demo/new_frame5_cta.png +0 -0
  177. package/demo/package.json +13 -0
  178. package/demo/product-video-final.mp4 +0 -0
  179. package/demo/product-video-hype-v1.mp4 +0 -0
  180. package/demo/product-video-v1.mp4 +0 -0
  181. package/demo/public/index.html +762 -0
  182. package/demo/recording.cast +55 -0
  183. package/demo/server.js +405 -0
  184. package/demo-new.tape +71 -0
  185. package/demo-real.sh +198 -0
  186. package/demo-simple.tape +205 -0
  187. package/demo.html +520 -0
  188. package/demo.sh +85 -0
  189. package/demo.tape +259 -0
  190. package/dist/analytics/costAnalytics.d.ts.map +1 -0
  191. package/dist/analytics/costAnalytics.js.map +1 -0
  192. package/dist/benchmark/comprehensive.js.map +1 -0
  193. package/dist/benchmark/reproducible.d.ts.map +1 -0
  194. package/dist/benchmark/reproducible.js.map +1 -0
  195. package/dist/cache/prefixCache.d.ts.map +1 -0
  196. package/dist/cache/prefixCache.js.map +1 -0
  197. package/dist/cache/responseCache.d.ts.map +1 -0
  198. package/dist/cache/responseCache.js.map +1 -0
  199. package/dist/cache/semanticCache.d.ts.map +1 -0
  200. package/dist/cache/semanticCache.js.map +1 -0
  201. package/dist/cli/setupWizard.d.ts.map +1 -0
  202. package/dist/cli/setupWizard.js.map +1 -0
  203. package/dist/cost/budgetEnforcer.d.ts.map +1 -0
  204. package/dist/cost/budgetEnforcer.js.map +1 -0
  205. package/dist/cost/costTracker.d.ts.map +1 -0
  206. package/dist/cost/costTracker.js.map +1 -0
  207. package/dist/ensemble/multiRoundDialog.js.map +1 -0
  208. package/dist/ensemble/shapleyValue.js.map +1 -0
  209. package/dist/integrations/langchainAdapter.d.ts.map +1 -0
  210. package/dist/integrations/langchainAdapter.js.map +1 -0
  211. package/dist/integrations/oauth.d.ts.map +1 -0
  212. package/dist/integrations/oauth.js.map +1 -0
  213. package/dist/integrations/scienceAdapter.js.map +1 -0
  214. package/dist/memory/autoFetch.d.ts.map +1 -0
  215. package/dist/memory/autoFetch.js.map +1 -0
  216. package/dist/memory/episodicMemory.d.ts.map +1 -0
  217. package/dist/memory/episodicMemory.js.map +1 -0
  218. package/dist/memory/hybridMemory.js.map +1 -0
  219. package/dist/memory/memoryTree.d.ts.map +1 -0
  220. package/dist/memory/memoryTree.js.map +1 -0
  221. package/dist/memory/obsidianVault.d.ts.map +1 -0
  222. package/dist/memory/obsidianVault.js.map +1 -0
  223. package/dist/memory/reasoningBank.js.map +1 -0
  224. package/dist/observability/changeWatch.d.ts.map +1 -0
  225. package/dist/observability/changeWatch.js.map +1 -0
  226. package/dist/observability/fatigueDetector.d.ts.map +1 -0
  227. package/dist/observability/fatigueDetector.js.map +1 -0
  228. package/dist/observability/index.d.ts.map +1 -0
  229. package/dist/observability/index.js.map +1 -0
  230. package/dist/observability/metrics.d.ts.map +1 -0
  231. package/dist/observability/metrics.js.map +1 -0
  232. package/dist/observability/middleware.d.ts.map +1 -0
  233. package/dist/observability/middleware.js.map +1 -0
  234. package/dist/observability/tracer.d.ts.map +1 -0
  235. package/dist/observability/tracer.js.map +1 -0
  236. package/dist/observability/types.d.ts.map +1 -0
  237. package/dist/observability/types.js.map +1 -0
  238. package/dist/orchestration/haloOrchestrator.d.ts.map +1 -0
  239. package/dist/orchestration/haloOrchestrator.js.map +1 -0
  240. package/dist/orchestration/mctsWorkflow.d.ts.map +1 -0
  241. package/dist/orchestration/mctsWorkflow.js.map +1 -0
  242. package/dist/providers/localProvider.d.ts.map +1 -0
  243. package/dist/providers/localProvider.js.map +1 -0
  244. package/dist/providers/providerConfig.d.ts.map +1 -0
  245. package/dist/providers/providerConfig.js.map +1 -0
  246. package/dist/providers/registry.d.ts.map +1 -0
  247. package/dist/providers/registry.js.map +1 -0
  248. package/dist/routing/advancedRouter.d.ts.map +1 -0
  249. package/dist/routing/advancedRouter.js +1 -1
  250. package/dist/routing/advancedRouter.js.map +1 -0
  251. package/dist/routing/crossModelValidation.d.ts.map +1 -0
  252. package/dist/routing/crossModelValidation.js.map +1 -0
  253. package/dist/routing/providerHealth.d.ts.map +1 -0
  254. package/dist/routing/providerHealth.js.map +1 -0
  255. package/dist/routing/providerRetry.d.ts.map +1 -0
  256. package/dist/routing/providerRetry.js.map +1 -0
  257. package/dist/scripts/banner.js +29 -0
  258. package/dist/security/guardrails.d.ts.map +1 -0
  259. package/dist/security/guardrails.js.map +1 -0
  260. package/dist/server/dashboard.d.ts.map +1 -0
  261. package/dist/server/dashboard.js.map +1 -0
  262. package/dist/server/modelMapper.d.ts.map +1 -0
  263. package/dist/server/modelMapper.js.map +1 -0
  264. package/dist/server/proxyServer.d.ts.map +1 -0
  265. package/dist/server/proxyServer.js.map +1 -0
  266. package/dist/skills/__tests__/skill_manager.test.d.ts +2 -0
  267. package/dist/skills/__tests__/skill_manager.test.d.ts.map +1 -0
  268. package/dist/skills/__tests__/skill_manager.test.js +268 -0
  269. package/dist/skills/__tests__/skill_manager.test.js.map +1 -0
  270. package/dist/tools/tmlpdTools.d.ts.map +1 -0
  271. package/dist/tools/tmlpdTools.js.map +1 -0
  272. package/dist/tui/dashboard.d.ts.map +1 -0
  273. package/dist/tui/dashboard.js.map +1 -0
  274. package/dist/tui/index.d.ts.map +1 -0
  275. package/dist/tui/index.js.map +1 -0
  276. package/dist/utils/batchProcessor.d.ts.map +1 -0
  277. package/dist/utils/batchProcessor.js.map +1 -0
  278. package/dist/utils/compression.d.ts.map +1 -0
  279. package/dist/utils/compression.js.map +1 -0
  280. package/dist/utils/costUtils.d.ts.map +1 -0
  281. package/dist/utils/costUtils.js.map +1 -0
  282. package/dist/utils/reliability.d.ts.map +1 -0
  283. package/dist/utils/reliability.js.map +1 -0
  284. package/dist/utils/sorting.d.ts.map +1 -0
  285. package/dist/utils/sorting.js.map +1 -0
  286. package/dist/utils/speculativeDecoding.d.ts.map +1 -0
  287. package/dist/utils/speculativeDecoding.js.map +1 -0
  288. package/dist/utils/tokenUtils.d.ts.map +1 -0
  289. package/dist/utils/tokenUtils.js.map +1 -0
  290. package/docs/.nojekyll +0 -0
  291. package/docs/ANALYSIS_PRINCIPLES.md +162 -0
  292. package/docs/API.md +855 -0
  293. package/docs/ARCHITECTURAL-IMPROVEMENTS-2025.md +1391 -0
  294. package/docs/ARCHITECTURAL-IMPROVEMENTS-REVISED-2025.md +1051 -0
  295. package/docs/BENCHMARK.md +170 -0
  296. package/docs/CHINESE_PROVIDER_RELIABILITY.md +37 -0
  297. package/docs/CITATIONS.md +74 -0
  298. package/docs/CLAIMS_AND_EVIDENCE.md +58 -0
  299. package/docs/CONFIGURATION.md +476 -0
  300. package/docs/COUNCIL_DECISION.json +816 -0
  301. package/docs/COUNCIL_SUMMARY.md +319 -0
  302. package/docs/COUNCIL_V2.2_DECISION.md +416 -0
  303. package/docs/ENGINEERING_SPEC.md +55 -0
  304. package/docs/FACTORY_RESET.md +34 -0
  305. package/docs/GEO.md +66 -0
  306. package/docs/GEO_OPTIMIZATION.md +30 -0
  307. package/docs/GEO_ROOT_CAUSE.md +136 -0
  308. package/docs/GEO_STATUS.md +85 -0
  309. package/docs/GEO_TEST_RESULTS.md +176 -0
  310. package/docs/HN_CHECKLIST.md +38 -0
  311. package/docs/HN_FOUNDER_COMMENT.md +17 -0
  312. package/docs/HN_SUBMISSION_FINAL.md +180 -0
  313. package/docs/HN_SUBMISSION_V3.md +56 -0
  314. package/docs/IMPROVEMENT_ROADMAP.md +515 -0
  315. package/docs/INTEGRATIONS.md +420 -0
  316. package/docs/LANGCHAIN_INTEGRATION.md +147 -0
  317. package/docs/LLM_COUNCIL_DECISION.md +508 -0
  318. package/docs/MIDDLEWARE_CHAIN.md +35 -0
  319. package/docs/PROMO_CHECKLIST.md +200 -0
  320. package/docs/QUICKSTART.md +271 -0
  321. package/docs/QUICK_START.md +43 -0
  322. package/docs/QUICK_START_VISIBILITY.md +782 -0
  323. package/docs/REDDIT_GAP_ANALYSIS.md +299 -0
  324. package/docs/RELEASE_CHECKLIST.md +32 -0
  325. package/docs/REPRODUCIBILITY.md +63 -0
  326. package/docs/RESEARCH_BACKED_IMPROVEMENTS.md +1180 -0
  327. package/docs/ROUTING_RUBRIC.md +197 -0
  328. package/docs/SEO_AUDIT.md +186 -0
  329. package/docs/SOCIAL_LISTENING.md +219 -0
  330. package/docs/TMLPD_QNA.md +751 -0
  331. package/docs/TMLPD_V2.1_COMPLETE.md +763 -0
  332. package/docs/TMLPD_V2.2_RESEARCH_ROADMAP.md +754 -0
  333. package/docs/UPDATE_TOPICS.md +15 -0
  334. package/docs/USE_CASES.md +59 -0
  335. package/docs/V2.2_IMPLEMENTATION_COMPLETE.md +446 -0
  336. package/docs/V2_IMPLEMENTATION_GUIDE.md +388 -0
  337. package/docs/VERCEL_AI_SDK.md +209 -0
  338. package/docs/VISIBILITY_ADOPTION_PLAN.md +1005 -0
  339. package/docs/_config.yml +49 -0
  340. package/docs/ai-plugin.json +16 -0
  341. package/docs/api.html +513 -0
  342. package/docs/architecture-diagram.md +40 -0
  343. package/docs/benchmark-chart.png +0 -0
  344. package/docs/benchmark.html +387 -0
  345. package/docs/blog/routerarena-9677.html +92 -0
  346. package/docs/blog/routerarena-number-one.html +73 -0
  347. package/docs/cli-cheatsheet.md +339 -0
  348. package/docs/compare.md +109 -0
  349. package/docs/comparison-litellm.md +88 -0
  350. package/docs/comparison.md +108 -0
  351. package/docs/cost-chart-ascii.md +42 -0
  352. package/docs/cost-comparison-chart.svg +88 -0
  353. package/docs/curl-examples.md +247 -0
  354. package/docs/demo-auto.html +264 -0
  355. package/docs/demo.html +416 -0
  356. package/docs/geo/GENERATIVE_ENGINE_OPTIMIZATION.md +232 -0
  357. package/docs/index.html +507 -0
  358. package/docs/launch-content/LAUNCH_EXECUTION_CHECKLIST.md +421 -0
  359. package/docs/launch-content/README.md +457 -0
  360. package/docs/launch-content/assets/cost_comparison_100_tasks.png +0 -0
  361. package/docs/launch-content/assets/cumulative_savings.png +0 -0
  362. package/docs/launch-content/assets/parallel_speedup.png +0 -0
  363. package/docs/launch-content/assets/provider_pricing_comparison.png +0 -0
  364. package/docs/launch-content/assets/task_breakdown_comparison.png +0 -0
  365. package/docs/launch-content/generate_charts.py +313 -0
  366. package/docs/launch-content/hn_show_post.md +139 -0
  367. package/docs/launch-content/partner_outreach_templates.md +745 -0
  368. package/docs/launch-content/reddit_posts.md +467 -0
  369. package/docs/launch-content/twitter_thread.txt +460 -0
  370. package/{llms.txt.bak → docs/llms.txt} +6 -6
  371. package/docs/npm-downloads-chart.svg +43 -0
  372. package/docs/openapi.json +139 -0
  373. package/docs/openapi.yaml +1318 -0
  374. package/docs/quick-start.html +366 -0
  375. package/docs/robots.txt +52 -0
  376. package/docs/sitemap.xml +57 -0
  377. package/docs/styles.css +682 -0
  378. package/docs/well-known/ai-plugin.json +16 -0
  379. package/docs/wellknown/ai-plugin.json +16 -0
  380. package/docs-site/assets/og-banner.svg +194 -0
  381. package/docs-site/index.html +632 -0
  382. package/eval/README.md +46 -0
  383. package/eval/baselines/main.json +12 -0
  384. package/eval/benchmark_dataset.jsonl +16 -0
  385. package/eval/check_golden_routes.js +64 -0
  386. package/eval/datasets/catalog.json +33 -0
  387. package/eval/datasets/slices/cn_provider_reliability_v1.jsonl +3 -0
  388. package/eval/datasets/slices/cost_pressure_v1.jsonl +3 -0
  389. package/eval/datasets/slices/safety_guardrails_v1.jsonl +3 -0
  390. package/eval/evals.json +199 -0
  391. package/eval/fault_injection_thresholds.json +3 -0
  392. package/eval/generate_report.js +128 -0
  393. package/eval/golden_routes.json +114 -0
  394. package/eval/lib/experiment_registry.js +24 -0
  395. package/eval/run_eval.js +197 -0
  396. package/eval/run_fault_injection.js +201 -0
  397. package/eval/run_shadow_eval.js +85 -0
  398. package/eval/thresholds.json +9 -0
  399. package/examples/QUICKSTART.md +183 -0
  400. package/examples/README.md +61 -0
  401. package/examples/a3m-sdk.js +124 -0
  402. package/examples/basic-route.js +54 -0
  403. package/examples/chat-loop.js +202 -0
  404. package/examples/classify-then-route.js +102 -0
  405. package/examples/cost-compare.js +120 -0
  406. package/examples/ensemble.js +160 -0
  407. package/examples/whatsapp-telegram-bridge-demo.js +302 -0
  408. package/examples/whatsapp-telegram-bridge.js +269 -0
  409. package/hf-space/README.md +23 -0
  410. package/hf-space/app.py +240 -0
  411. package/hf-space/requirements.txt +1 -0
  412. package/huggingface_space/README.md +35 -0
  413. package/huggingface_space/app.py +126 -0
  414. package/huggingface_space/create_space.py +208 -0
  415. package/huggingface_space/requirements.txt +1 -0
  416. package/index.html +1 -1
  417. package/mcp-server/README.md +188 -0
  418. package/mcp-server/package.json +29 -0
  419. package/mcp-server/src/index.ts +744 -0
  420. package/mcp-server/tsconfig.json +19 -0
  421. package/openclaw-alexa-bridge/ALL_REMAINING_FIXES_PLAN.md +313 -0
  422. package/openclaw-alexa-bridge/REMAINING_FIXES_SUMMARY.md +277 -0
  423. package/openclaw-alexa-bridge/src/alexa_handler_no_tmlpd.js +1234 -0
  424. package/openclaw-alexa-bridge/test_fixes.js +77 -0
  425. package/package.json +76 -272
  426. package/playground/README.md +51 -0
  427. package/playground/codesandbox.json +12 -0
  428. package/playground/index.js +39 -0
  429. package/proxy/README.md +227 -0
  430. package/proxy/package-lock.json +831 -0
  431. package/proxy/package.json +17 -0
  432. package/proxy/rate-limit.js +145 -0
  433. package/proxy/rate-limit.test.js +311 -0
  434. package/proxy/server.js +970 -0
  435. package/python/README.md +102 -0
  436. package/python/a3m/__init__.py +6 -0
  437. package/python/a3m/client.py +190 -0
  438. package/python/a3m/models.py +40 -0
  439. package/python/a3m/sync_client.py +61 -0
  440. package/python/examples.py +53 -0
  441. package/python/integrations.py +330 -0
  442. package/python/pyproject.toml +23 -0
  443. package/python/setup.py +28 -0
  444. package/python/tmlpd.py +369 -0
  445. package/qna/REDDIT_GAP_ANALYSIS.md +299 -0
  446. package/qna/TMLPD_QNA.md +751 -0
  447. package/research/FINDING_001_safety.md +28 -0
  448. package/research/FINDING_002_error_diversity.md +32 -0
  449. package/research/FINDING_003_confidence_weighted_voting.md +32 -0
  450. package/research/FINDING_004_cross_model_semantic_detection.md +37 -0
  451. package/research/FINDING_005_knowledge_gap_orthogonality.md +34 -0
  452. package/research/HALLUCINATION_RESEARCH.md +27 -0
  453. package/research/ensemble-voting.md +324 -0
  454. package/research/loss-functions.md +545 -0
  455. package/research-log.md +49 -0
  456. package/scripts/banner.js +29 -0
  457. package/scripts/benchmark-local-routerarena.ts +176 -0
  458. package/scripts/benchmark.js +145 -0
  459. package/scripts/benchmark.sh +61 -0
  460. package/scripts/compare-providers.sh +230 -0
  461. package/scripts/content-planner.js +25 -0
  462. package/scripts/create-labeled-benchmark.ts +105 -0
  463. package/scripts/cross_post.py +443 -0
  464. package/scripts/local-router-benchmark.ts +154 -0
  465. package/scripts/post-all.sh +41 -0
  466. package/scripts/publish_fcc.py +106 -0
  467. package/scripts/push-to-gitee.sh +25 -0
  468. package/scripts/routerarena_ensemble.js +144 -0
  469. package/scripts/routing-benchmark-v2.js +373 -0
  470. package/scripts/routing-benchmark-v3.js +118 -0
  471. package/scripts/routing-benchmark.js +462 -0
  472. package/scripts/run-labeled-benchmark.mjs +104 -0
  473. package/scripts/run-mmlu-benchmark.js +176 -0
  474. package/scripts/run-provider-benchmark.js +244 -0
  475. package/scripts/update-npm-badges.js +158 -0
  476. package/skill/SKILL.md +238 -0
  477. package/src/__tests__/integration/tmpld_integration.test.py +540 -0
  478. package/src/ensemble.ts +2 -0
  479. package/src/routing/advancedRouter.ts +1 -1
  480. package/src/skills/__tests__/skill_manager.test.ts +328 -0
  481. package/submissions/benchmarks/ALL_PLATFORMS_SUBMISSION.md +94 -0
  482. package/submissions/benchmarks/LLMROUTERBENCH_SUBMISSION.md +121 -0
  483. package/submissions/benchmarks/MMRBENCH_SUBMISSION.md +94 -0
  484. package/submissions/benchmarks/ROUTERARENA_UPDATE.md +83 -0
  485. package/submissions/benchmarks/ROUTERBENCH_SUBMISSION.md +225 -0
  486. package/test-council/1-structure-tests.test.js +353 -0
  487. package/test-council/1-structure-tests.test.ts +353 -0
  488. package/test-council/2-edge-case-tests.test.ts +361 -0
  489. package/test-council/3-performance-tests.test.ts +652 -0
  490. package/test-council/4-integration-tests.test.ts +391 -0
  491. package/test-council/5-agent-council-eval.test.ts +413 -0
  492. package/test-council/AGENT_COUNCIL_ARCHITECTURE.md +349 -0
  493. package/test-council/TEST_COUNCIL_REPORT.md +201 -0
  494. package/test-council/agents/edge-case-agent.ts +363 -0
  495. package/test-council/agents/performance-agent.ts +426 -0
  496. package/test-council/agents/structure-agent.ts +227 -0
  497. package/test-council/council.md +183 -0
  498. package/tests/__mocks__/tokenUtils.ts +8 -0
  499. package/tests/memory/episodicMemory.test.ts +227 -0
  500. package/tests/package-lock.json +1785 -0
  501. package/tests/package.json +19 -0
  502. package/tests/routing/ensembleVoting.test.ts +236 -0
  503. package/tests/routing/providerRetry.test.ts +360 -0
  504. package/tests/routing/queryTypePresets.test.ts +208 -0
  505. package/tests/security/guardrailEngine.test.ts +700 -0
  506. package/tests/tsconfig.json +21 -0
  507. package/tests/vitest.config.ts +18 -0
  508. package/tmlpd-pi-extension/README.md +66 -0
  509. package/tmlpd-pi-extension/dist/cache/prefixCache.d.ts +114 -0
  510. package/tmlpd-pi-extension/dist/cache/prefixCache.d.ts.map +1 -0
  511. package/tmlpd-pi-extension/dist/cache/prefixCache.js +285 -0
  512. package/tmlpd-pi-extension/dist/cache/prefixCache.js.map +1 -0
  513. package/tmlpd-pi-extension/dist/cache/responseCache.d.ts +58 -0
  514. package/tmlpd-pi-extension/dist/cache/responseCache.d.ts.map +1 -0
  515. package/tmlpd-pi-extension/dist/cache/responseCache.js +153 -0
  516. package/tmlpd-pi-extension/dist/cache/responseCache.js.map +1 -0
  517. package/tmlpd-pi-extension/dist/cli.js +59 -0
  518. package/tmlpd-pi-extension/dist/cost/costTracker.d.ts +95 -0
  519. package/tmlpd-pi-extension/dist/cost/costTracker.d.ts.map +1 -0
  520. package/tmlpd-pi-extension/dist/cost/costTracker.js +240 -0
  521. package/tmlpd-pi-extension/dist/cost/costTracker.js.map +1 -0
  522. package/tmlpd-pi-extension/dist/index.d.ts +723 -0
  523. package/tmlpd-pi-extension/dist/index.d.ts.map +1 -0
  524. package/tmlpd-pi-extension/dist/index.js +239 -0
  525. package/tmlpd-pi-extension/dist/index.js.map +1 -0
  526. package/tmlpd-pi-extension/dist/memory/episodicMemory.d.ts +82 -0
  527. package/tmlpd-pi-extension/dist/memory/episodicMemory.d.ts.map +1 -0
  528. package/tmlpd-pi-extension/dist/memory/episodicMemory.js +145 -0
  529. package/tmlpd-pi-extension/dist/memory/episodicMemory.js.map +1 -0
  530. package/tmlpd-pi-extension/dist/orchestration/haloOrchestrator.d.ts +102 -0
  531. package/tmlpd-pi-extension/dist/orchestration/haloOrchestrator.d.ts.map +1 -0
  532. package/tmlpd-pi-extension/dist/orchestration/haloOrchestrator.js +207 -0
  533. package/tmlpd-pi-extension/dist/orchestration/haloOrchestrator.js.map +1 -0
  534. package/tmlpd-pi-extension/dist/orchestration/mctsWorkflow.d.ts +85 -0
  535. package/tmlpd-pi-extension/dist/orchestration/mctsWorkflow.d.ts.map +1 -0
  536. package/tmlpd-pi-extension/dist/orchestration/mctsWorkflow.js +210 -0
  537. package/tmlpd-pi-extension/dist/orchestration/mctsWorkflow.js.map +1 -0
  538. package/tmlpd-pi-extension/dist/providers/localProvider.d.ts +102 -0
  539. package/tmlpd-pi-extension/dist/providers/localProvider.d.ts.map +1 -0
  540. package/tmlpd-pi-extension/dist/providers/localProvider.js +338 -0
  541. package/tmlpd-pi-extension/dist/providers/localProvider.js.map +1 -0
  542. package/tmlpd-pi-extension/dist/providers/registry.d.ts +55 -0
  543. package/tmlpd-pi-extension/dist/providers/registry.d.ts.map +1 -0
  544. package/tmlpd-pi-extension/dist/providers/registry.js +138 -0
  545. package/tmlpd-pi-extension/dist/providers/registry.js.map +1 -0
  546. package/tmlpd-pi-extension/dist/routing/advancedRouter.d.ts +68 -0
  547. package/tmlpd-pi-extension/dist/routing/advancedRouter.d.ts.map +1 -0
  548. package/tmlpd-pi-extension/dist/routing/advancedRouter.js +332 -0
  549. package/tmlpd-pi-extension/dist/routing/advancedRouter.js.map +1 -0
  550. package/tmlpd-pi-extension/dist/tools/tmlpdTools.d.ts +101 -0
  551. package/tmlpd-pi-extension/dist/tools/tmlpdTools.d.ts.map +1 -0
  552. package/tmlpd-pi-extension/dist/tools/tmlpdTools.js +368 -0
  553. package/tmlpd-pi-extension/dist/tools/tmlpdTools.js.map +1 -0
  554. package/tmlpd-pi-extension/dist/utils/batchProcessor.d.ts +96 -0
  555. package/tmlpd-pi-extension/dist/utils/batchProcessor.d.ts.map +1 -0
  556. package/tmlpd-pi-extension/dist/utils/batchProcessor.js +170 -0
  557. package/tmlpd-pi-extension/dist/utils/batchProcessor.js.map +1 -0
  558. package/tmlpd-pi-extension/dist/utils/compression.d.ts +61 -0
  559. package/tmlpd-pi-extension/dist/utils/compression.d.ts.map +1 -0
  560. package/tmlpd-pi-extension/dist/utils/compression.js +281 -0
  561. package/tmlpd-pi-extension/dist/utils/compression.js.map +1 -0
  562. package/tmlpd-pi-extension/dist/utils/reliability.d.ts +74 -0
  563. package/tmlpd-pi-extension/dist/utils/reliability.d.ts.map +1 -0
  564. package/tmlpd-pi-extension/dist/utils/reliability.js +177 -0
  565. package/tmlpd-pi-extension/dist/utils/reliability.js.map +1 -0
  566. package/tmlpd-pi-extension/dist/utils/speculativeDecoding.d.ts +117 -0
  567. package/tmlpd-pi-extension/dist/utils/speculativeDecoding.d.ts.map +1 -0
  568. package/tmlpd-pi-extension/dist/utils/speculativeDecoding.js +246 -0
  569. package/tmlpd-pi-extension/dist/utils/speculativeDecoding.js.map +1 -0
  570. package/tmlpd-pi-extension/dist/utils/tokenUtils.d.ts +50 -0
  571. package/tmlpd-pi-extension/dist/utils/tokenUtils.d.ts.map +1 -0
  572. package/tmlpd-pi-extension/dist/utils/tokenUtils.js +124 -0
  573. package/tmlpd-pi-extension/dist/utils/tokenUtils.js.map +1 -0
  574. package/tmlpd-pi-extension/examples/QUICKSTART.md +183 -0
  575. package/tmlpd-pi-extension/package-lock.json +79 -0
  576. package/tmlpd-pi-extension/package.json +172 -0
  577. package/tmlpd-pi-extension/python/examples.py +53 -0
  578. package/tmlpd-pi-extension/python/integrations.py +330 -0
  579. package/tmlpd-pi-extension/python/setup.py +28 -0
  580. package/tmlpd-pi-extension/python/tmlpd.py +369 -0
  581. package/tmlpd-pi-extension/qna/REDDIT_GAP_ANALYSIS.md +299 -0
  582. package/tmlpd-pi-extension/qna/TMLPD_QNA.md +751 -0
  583. package/tmlpd-pi-extension/skill/SKILL.md +238 -0
  584. package/tmlpd-pi-extension/src/cache/responseCache.ts +147 -0
  585. package/tmlpd-pi-extension/src/cost/costTracker.ts +302 -0
  586. package/tmlpd-pi-extension/src/index.ts +232 -0
  587. package/tmlpd-pi-extension/src/memory/episodicMemory.ts +257 -0
  588. package/tmlpd-pi-extension/src/orchestration/haloOrchestrator.ts +266 -0
  589. package/tmlpd-pi-extension/src/orchestration/mctsWorkflow.ts +262 -0
  590. package/tmlpd-pi-extension/src/providers/localProvider.ts +406 -0
  591. package/tmlpd-pi-extension/src/providers/registry.ts +164 -0
  592. package/tmlpd-pi-extension/src/routing/ensembleVoting.ts +159 -0
  593. package/tmlpd-pi-extension/src/routing/queryTypePresets.ts +136 -0
  594. package/tmlpd-pi-extension/src/tools/tmlpdTools.ts +433 -0
  595. package/tmlpd-pi-extension/src/utils/batchProcessor.ts +232 -0
  596. package/tmlpd-pi-extension/src/utils/compression.ts +325 -0
  597. package/tmlpd-pi-extension/src/utils/reliability.ts +221 -0
  598. package/tmlpd-pi-extension/src/utils/tokenUtils.ts +145 -0
  599. package/tmlpd-pi-extension/tsconfig.json +18 -0
  600. package/tsconfig.build.json +29 -0
  601. package/tsconfig.json +18 -0
  602. package/README.md.bak +0 -1185
  603. package/src/routing/advancedRouter.ts.bak +0 -650
  604. package/test.js.bak +0 -376
  605. /package/{llms-full.txt.bak → docs/llms-full.txt} +0 -0
@@ -0,0 +1,366 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Quick Start — A3M Router</title>
7
+ <meta name="description" content="Get started with A3M Router in 1 minute. Install via npm or pip, start the proxy, and route your first query.">
8
+ <meta name="keywords" content="LLM router quick start, AI gateway setup, OpenAI proxy, multi-provider routing">
9
+ <meta property="og:title" content="A3M Router — Quick Start">
10
+ <meta property="og:image" content="https://das-rebel.github.io/a3m-router/benchmark-chart.png">
11
+ <link rel="canonical" href="https://das-rebel.github.io/a3m-router/quick-start">
12
+ <link rel="stylesheet" href="../styles.css">
13
+ <script type="application/ld+json">
14
+ {
15
+ "@context": "https://schema.org",
16
+ "@type": "HowTo",
17
+ "name": "How to use A3M Router",
18
+ "description": "Install and configure A3M Router, the open-source LLM gateway.",
19
+ "step": [
20
+ {"@type": "HowToStep", "text": "Install via npm install adaptive-memory-multi-model-router"},
21
+ {"@type": "HowToStep", "text": "Start the proxy with npx a3m-router serve"},
22
+ {"@type": "HowToStep", "text": "Route queries through the OpenAI-compatible API"}
23
+ ]
24
+ }
25
+ </script>
26
+ <script>
27
+ function toggleNav() {
28
+ document.querySelector('.nav-links').classList.toggle('open');
29
+ }
30
+ </script>
31
+ </head>
32
+ <body>
33
+
34
+ <header class="site-header">
35
+ <nav class="nav-container">
36
+ <a href="/a3m-router/" class="nav-brand">
37
+ <span class="nav-brand-icon">&#x1F500;</span>
38
+ A3M Router
39
+ </a>
40
+ <button class="nav-toggle" onclick="toggleNav()" aria-label="Menu">&#x2630;</button>
41
+ <ul class="nav-links">
42
+ <li><a href="/a3m-router/">Home</a></li>
43
+ <li><a href="/a3m-router/quick-start" class="active">Quick Start</a></li>
44
+ <li><a href="/a3m-router/benchmark">Benchmark</a></li>
45
+ <li><a href="/a3m-router/api">API</a></li>
46
+ <li><a href="https://github.com/Das-rebel/a3m-router" class="nav-github-btn" target="_blank" rel="noopener">
47
+ <svg height="16" width="16" viewBox="0 0 16 16" fill="currentColor"><path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"></path></svg>
48
+ GitHub
49
+ </a></li>
50
+ </ul>
51
+ </nav>
52
+ </header>
53
+
54
+ <main class="page">
55
+ <div class="container">
56
+
57
+ <h1>&#x1F680; Quick Start</h1>
58
+ <p>Get A3M Router running in under 1 minute. Everything you need — <strong>TypeScript SDK</strong>, <strong>Python SDK</strong>, <strong>CLI</strong>, and <strong>OpenAI-compatible proxy</strong>.</p>
59
+
60
+ <!-- Installation Cards -->
61
+ <div class="stats-grid">
62
+ <div class="stat-card">
63
+ <div class="stat-value">npm</div>
64
+ <div class="stat-label">npm install adaptive-memory-multi-model-router</div>
65
+ </div>
66
+ <div class="stat-card">
67
+ <div class="stat-value">pip</div>
68
+ <div class="stat-label">pip install a3m-router</div>
69
+ </div>
70
+ <div class="stat-card">
71
+ <div class="stat-value">npx</div>
72
+ <div class="stat-label">npx a3m-router serve</div>
73
+ </div>
74
+ <div class="stat-card">
75
+ <div class="stat-value">curl</div>
76
+ <div class="stat-label">curl localhost:8787/v1/chat/completions</div>
77
+ </div>
78
+ </div>
79
+
80
+ <!-- 1 Minute Setup -->
81
+ <section>
82
+ <h2>&#x23F1; 1 Minute Setup</h2>
83
+
84
+ <h3>1. Install</h3>
85
+ <pre><code><span class="hljs-comment"># TypeScript / Node.js</span>
86
+ npm install adaptive-memory-multi-model-router
87
+
88
+ <span class="hljs-comment"># Or Python</span>
89
+ pip install a3m-router</code></pre>
90
+
91
+ <h3>2. Start the Proxy</h3>
92
+ <pre><code>npx a3m-router serve
93
+ <span class="hljs-comment"># &rarr; Proxy running at http://localhost:8787</span>
94
+ <span class="hljs-comment"># &rarr; Dashboard at http://localhost:8787/dashboard</span></code></pre>
95
+
96
+ <h3>3. Make Your First Request</h3>
97
+ <pre><code>curl http://localhost:8787/v1/chat/completions \
98
+ -H <span class="hljs-string">"Content-Type: application/json"</span> \
99
+ -d <span class="hljs-string">'{"model":"auto","messages":[{"role":"user","content":"Hello!"}]}'</span></code></pre>
100
+
101
+ <div class="callout callout-success">
102
+ &#x2705; Done! Your queries are now being intelligently routed to the cheapest capable model across 47+ providers.
103
+ </div>
104
+ </section>
105
+
106
+ <!-- Drop-in OpenAI Replacement -->
107
+ <section>
108
+ <h2>&#x1F4E6; Drop-in OpenAI Replacement</h2>
109
+ <p>Zero code changes. Point your existing OpenAI SDK at A3M's proxy URL.</p>
110
+
111
+ <h3>Python</h3>
112
+ <pre><code><span class="hljs-keyword">from</span> openai <span class="hljs-keyword">import</span> OpenAI
113
+
114
+ <span class="hljs-comment"># Just change the base_url — everything else stays the same</span>
115
+ client = OpenAI(
116
+ base_url=<span class="hljs-string">"http://localhost:8787/v1"</span>,
117
+ api_key=<span class="hljs-string">"not-needed"</span>
118
+ )
119
+
120
+ <span class="hljs-comment"># All your existing code works — A3M routes to cheapest provider</span>
121
+ response = client.chat.completions.create(
122
+ model=<span class="hljs-string">"auto"</span>,
123
+ messages=[{<span class="hljs-string">"role"</span>: <span class="hljs-string">"user"</span>, <span class="hljs-string">"content"</span>: <span class="hljs-string">"Hello!"</span>}]
124
+ )
125
+ <span class="hljs-built_in">print</span>(response.choices[0].message.content)</code></pre>
126
+
127
+ <h3>TypeScript / Node.js</h3>
128
+ <pre><code><span class="hljs-keyword">import</span> OpenAI <span class="hljs-keyword">from</span> <span class="hljs-string">'openai'</span>;
129
+
130
+ <span class="hljs-keyword">const</span> client = <span class="hljs-keyword">new</span> OpenAI({
131
+ baseURL: <span class="hljs-string">'http://localhost:8787/v1'</span>,
132
+ apiKey: <span class="hljs-string">'not-needed'</span>,
133
+ });
134
+
135
+ <span class="hljs-keyword">const</span> response = <span class="hljs-keyword">await</span> client.chat.completions.create({
136
+ model: <span class="hljs-string">'auto'</span>,
137
+ messages: [{ role: <span class="hljs-string">'user'</span>, content: <span class="hljs-string">'Hello!'</span> }],
138
+ });
139
+
140
+ <span class="hljs-title function_">console</span>.<span class="hljs-title function_">log</span>(response.choices[0].message.content);</code></pre>
141
+ </section>
142
+
143
+ <!-- TypeScript SDK -->
144
+ <section>
145
+ <h2>&#x1F528; TypeScript SDK</h2>
146
+
147
+ <h3>Route a Query</h3>
148
+ <pre><code><span class="hljs-keyword">import</span> { A3MRouter } <span class="hljs-keyword">from</span> <span class="hljs-string">'adaptive-memory-multi-model-router/sdk'</span>;
149
+
150
+ <span class="hljs-keyword">const</span> router = <span class="hljs-keyword">new</span> <span class="hljs-title class_">A3MRouter</span>();
151
+
152
+ <span class="hljs-comment">// Route a query — returns model + tier + cost + complexity</span>
153
+ <span class="hljs-keyword">const</span> decision = router.<span class="hljs-title function_">route</span>(<span class="hljs-string">"Review this contract for liability clauses"</span>);
154
+ <span class="hljs-comment">// &rarr; { model: "anthropic/claude-3.5-sonnet", tier: "premium",</span>
155
+ <span class="hljs-comment">// cost: 0.008, complexity: 0.87, isExpert: true }</span>
156
+
157
+ <span class="hljs-comment">// Analyze why it chose that model</span>
158
+ <span class="hljs-keyword">const</span> features = router.<span class="hljs-title function_">analyze</span>(<span class="hljs-string">"Review this contract for liability clauses"</span>);
159
+ <span class="hljs-comment">// &rarr; { detectedDomain: "legal", domainScore: 0.35, hasCode: false,</span>
160
+ <span class="hljs-comment">// requiresReasoning: true, complexity: 0.87 }</span></code></pre>
161
+
162
+ <h3>Parallel Ensemble Execution</h3>
163
+ <pre><code><span class="hljs-keyword">import</span> { executeEnsemble, recordFeedback } <span class="hljs-keyword">from</span> <span class="hljs-string">'adaptive-memory-multi-model-router/ensemble'</span>;
164
+
165
+ <span class="hljs-comment">// Run against multiple providers simultaneously</span>
166
+ <span class="hljs-keyword">const</span> result = <span class="hljs-keyword">await</span> <span class="hljs-title function_">executeEnsemble</span>(
167
+ <span class="hljs-string">"Explain how vector databases work"</span>,
168
+ systemPrompt,
169
+ context,
170
+ { nvidia: callNvidia, groq: callGroq, openai: callOpenAI },
171
+ { providers: [<span class="hljs-string">'nvidia'</span>, <span class="hljs-string">'groq'</span>, <span class="hljs-string">'openai'</span>], timeoutMs: <span class="hljs-number">30000</span> }
172
+ );
173
+
174
+ <span class="hljs-title function_">console</span>.<span class="hljs-title function_">log</span>(<span class="hljs-string">`Winner: ${result.winner}`</span>); <span class="hljs-comment">// &rarr; nvidia</span>
175
+ <span class="hljs-title function_">console</span>.<span class="hljs-title function_">log</span>(<span class="hljs-string">`Score: ${result.scores.nvidia}`</span>); <span class="hljs-comment">// &rarr; 75</span></code></pre>
176
+
177
+ <h3>Budget Enforcement</h3>
178
+ <pre><code><span class="hljs-keyword">import</span> { BudgetManager } <span class="hljs-keyword">from</span> <span class="hljs-string">'adaptive-memory-multi-model-router/billing'</span>;
179
+
180
+ <span class="hljs-keyword">const</span> budgets = <span class="hljs-keyword">new</span> <span class="hljs-title class_">BudgetManager</span>({
181
+ monthlyLimit: <span class="hljs-number">500</span>, <span class="hljs-comment">// $500/month hard cap</span>
182
+ alerts: [<span class="hljs-number">0.5</span>, <span class="hljs-number">0.8</span>, <span class="hljs-number">1.0</span>],
183
+ perTeamLimits: {
184
+ <span class="hljs-string">'engineering'</span>: <span class="hljs-number">200</span>,
185
+ <span class="hljs-string">'product'</span>: <span class="hljs-number">150</span>,
186
+ }
187
+ });
188
+
189
+ budgets.<span class="hljs-title function_">getSpendBreakdown</span>();
190
+ <span class="hljs-comment">// &rarr; { total: 340.50, byTeam: { engineering: 180, ... }, byProvider: {...} }</span></code></pre>
191
+ </section>
192
+
193
+ <!-- Python SDK -->
194
+ <section>
195
+ <h2>&#x1F40D; Python SDK</h2>
196
+
197
+ <pre><code><span class="hljs-keyword">from</span> a3m <span class="hljs-keyword">import</span> A3MRouter
198
+
199
+ <span class="hljs-keyword">async with</span> A3MRouter() <span class="hljs-keyword">as</span> router:
200
+ <span class="hljs-comment"># Route without executing</span>
201
+ decision = <span class="hljs-keyword">await</span> router.route(<span class="hljs-string">"Write a Python function to sort an array"</span>)
202
+ <span class="hljs-built_in">print</span>(decision.model, decision.tier, decision.cost)
203
+ <span class="hljs-comment"># &rarr; groq/llama-3.3-70b cheap 0.0004</span>
204
+
205
+ <span class="hljs-comment"># Execute via OpenAI-compatible chat</span>
206
+ response = <span class="hljs-keyword">await</span> router.chat(<span class="hljs-string">"What is 2+2?"</span>, model=<span class="hljs-string">"auto"</span>)
207
+ <span class="hljs-built_in">print</span>(response[<span class="hljs-string">"choices"</span>][<span class="hljs-number">0</span>][<span class="hljs-string">"message"</span>][<span class="hljs-string">"content"</span>])</code></pre>
208
+ </section>
209
+
210
+ <!-- CLI -->
211
+ <section>
212
+ <h2>&#x1F5A5;&#xFE0F; CLI</h2>
213
+
214
+ <div class="table-wrapper">
215
+ <table>
216
+ <thead>
217
+ <tr><th>Command</th><th>Description</th></tr>
218
+ </thead>
219
+ <tbody>
220
+ <tr><td><code>npx a3m-router route "Explain quantum computing"</code></td><td>Route a query to the best model</td></tr>
221
+ <tr><td><code>npx a3m-router serve --port 8787</code></td><td>Start the OpenAI-compatible proxy</td></tr>
222
+ <tr><td><code>npx a3m-router benchmark</code></td><td>Run routing accuracy tests</td></tr>
223
+ <tr><td><code>npx a3m-router health</code></td><td>Check all provider health status</td></tr>
224
+ <tr><td><code>npx a3m-router cost</code></td><td>Show cost analytics and budget usage</td></tr>
225
+ <tr><td><code>npx a3m-router compare "What is AI?"</code></td><td>Compare all providers side-by-side</td></tr>
226
+ </tbody>
227
+ </table>
228
+ </div>
229
+
230
+ <pre><code><span class="hljs-comment"># Route a query</span>
231
+ $ npx a3m-router route <span class="hljs-string">"Design a clinical trial for oncology"</span>
232
+
233
+ &#x1F500; Routing Decision:
234
+ Query: <span class="hljs-string">"Design a clinical trial for oncology"</span>
235
+ Complexity: 1.00 (premium)
236
+ Tier: premium
237
+ Route to: openai/gpt-4o ($2.50/1M tokens)
238
+ Signals: medical(+0.35) + design(+0.20) + multi-step(+0.15)
239
+
240
+ <span class="hljs-comment"># Check costs</span>
241
+ $ npx a3m-router cost
242
+
243
+ &#x1F4B0; Cost Analytics
244
+ Total Spend: $127.45 / $500.00 budget
245
+ Groq: $42.30 33%
246
+ DeepSeek: $51.20 40%
247
+ Claude: $28.90 23%</code></pre>
248
+ </section>
249
+
250
+ <!-- REST API -->
251
+ <section>
252
+ <h2>&#x1F310; REST API</h2>
253
+
254
+ <pre><code><span class="hljs-comment"># Get routing decision (no LLM call)</span>
255
+ curl -s http://localhost:8787/v1/route \
256
+ -H <span class="hljs-string">"Content-Type: application/json"</span> \
257
+ -d <span class="hljs-string">'{"query": "Write a Python function"}'</span> | jq .
258
+
259
+ <span class="hljs-comment"># Chat completion (OpenAI format)</span>
260
+ curl -s http://localhost:8787/v1/chat/completions \
261
+ -H <span class="hljs-string">"Content-Type: application/json"</span> \
262
+ -d <span class="hljs-string">'{"model":"auto","messages":[{"role":"user","content":"Hello"}]}'</span></code></pre>
263
+
264
+ <div class="table-wrapper">
265
+ <table>
266
+ <thead>
267
+ <tr><th>Method</th><th>Endpoint</th><th>Description</th></tr>
268
+ </thead>
269
+ <tbody>
270
+ <tr><td>POST</td><td><code>/v1/chat/completions</code></td><td>OpenAI-compatible chat (streaming + non-streaming)</td></tr>
271
+ <tr><td>POST</td><td><code>/v1/completions</code></td><td>OpenAI text completions</td></tr>
272
+ <tr><td>POST</td><td><code>/v1/route</code></td><td>Routing decision without LLM call</td></tr>
273
+ <tr><td>GET</td><td><code>/v1/models</code></td><td>List available models with pricing</td></tr>
274
+ <tr><td>GET</td><td><code>/health</code></td><td>Provider health + cost summary</td></tr>
275
+ <tr><td>GET</td><td><code>/dashboard</code></td><td>Cost analytics dashboard</td></tr>
276
+ </tbody>
277
+ </table>
278
+ </div>
279
+ </section>
280
+
281
+ <!-- Configuration -->
282
+ <section>
283
+ <h2>&#x2699;&#xFE0F; Configuration</h2>
284
+
285
+ <h3>Router Options</h3>
286
+ <div class="table-wrapper">
287
+ <table>
288
+ <thead>
289
+ <tr><th>Option</th><th>Type</th><th>Default</th><th>Description</th></tr>
290
+ </thead>
291
+ <tbody>
292
+ <tr><td><code>defaultModel</code></td><td><code>string</code></td><td>&mdash;</td><td>Fallback model when routing is ambiguous</td></tr>
293
+ <tr><td><code>maxCostPerQuery</code></td><td><code>number</code></td><td>&mdash;</td><td>Max cost per query in USD</td></tr>
294
+ <tr><td><code>preferSpeedOverQuality</code></td><td><code>boolean</code></td><td><code>false</code></td><td>Prefer fast models over higher quality</td></tr>
295
+ <tr><td><code>providers</code></td><td><code>string[]</code></td><td>all</td><td>Restrict routing to these provider IDs</td></tr>
296
+ </tbody>
297
+ </table>
298
+ </div>
299
+
300
+ <h3>Environment Variables</h3>
301
+ <pre><code><span class="hljs-comment"># .env — set your API keys</span>
302
+ OPENAI_API_KEY=sk-...
303
+ ANTHROPIC_API_KEY=sk-...
304
+ GROQ_API_KEY=gsk_...
305
+ DEEPSEEK_API_KEY=sk-...
306
+
307
+ <span class="hljs-comment"># Optional: restrict to specific providers</span>
308
+ A3M_PROVIDERS=groq,openai,deepseek
309
+
310
+ <span class="hljs-comment"># Optional: set a monthly budget</span>
311
+ A3M_MONTHLY_BUDGET=500</code></pre>
312
+ </section>
313
+
314
+ <!-- Next Steps -->
315
+ <section>
316
+ <h2>&#x1F3EB; Next Steps</h2>
317
+
318
+ <div class="card-grid">
319
+ <div class="card">
320
+ <h3>&#x1F4CA; View Benchmarks</h3>
321
+ <p>See the full latency, accuracy, and cost savings data.</p>
322
+ <p><a href="benchmark">Read the benchmarks &rarr;</a></p>
323
+ </div>
324
+ <div class="card">
325
+ <h3>&#x1F4D6; API Reference</h3>
326
+ <p>Complete SDK, CLI, and REST API documentation.</p>
327
+ <p><a href="api">Read the API docs &rarr;</a></p>
328
+ </div>
329
+ <div class="card">
330
+ <h3>&#x1F527; Configuration Guide</h3>
331
+ <p>All configuration options, provider setup, and advanced usage.</p>
332
+ <p><a href="https://github.com/Das-rebel/a3m-router/blob/main/docs/CONFIGURATION.md" target="_blank" rel="noopener">View on GitHub &rarr;</a></p>
333
+ </div>
334
+ </div>
335
+
336
+ <p class="cta-buttons" style="margin-top: 24px;">
337
+ <a href="https://github.com/Das-rebel/a3m-router" class="btn btn-primary" target="_blank" rel="noopener">
338
+ <svg height="16" width="16" viewBox="0 0 16 16" fill="currentColor"><path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"/></svg>
339
+ Star on GitHub
340
+ </a>
341
+ <a href="https://www.npmjs.com/package/adaptive-memory-multi-model-router" class="btn btn-secondary" target="_blank" rel="noopener">&#x1F4E6; npm Package</a>
342
+ <a href="https://pypi.org/project/a3m-router/" class="btn btn-ghost" target="_blank" rel="noopener">&#x1F40D; PyPI Package</a>
343
+ </p>
344
+ </section>
345
+
346
+ </div>
347
+ </main>
348
+
349
+ <footer class="site-footer">
350
+ <div class="footer-content">
351
+ <div class="footer-links">
352
+ <a href="https://github.com/Das-rebel/a3m-router" target="_blank" rel="noopener">GitHub</a>
353
+ <a href="https://www.npmjs.com/package/adaptive-memory-multi-model-router" target="_blank" rel="noopener">npm</a>
354
+ <a href="https://pypi.org/project/a3m-router/" target="_blank" rel="noopener">PyPI</a>
355
+ <a href="https://github.com/Das-rebel/a3m-router/issues" target="_blank" rel="noopener">Issues</a>
356
+ <a href="https://github.com/Das-rebel/a3m-router/discussions" target="_blank" rel="noopener">Discussions</a>
357
+ </div>
358
+ <p class="footer-copyright">
359
+ Open-source LLM Gateway &middot; MIT License &middot; No GPU Required &middot;
360
+ Built by <a href="https://github.com/Das-rebel">Das-rebel</a>
361
+ </p>
362
+ </div>
363
+ </footer>
364
+
365
+ </body>
366
+ </html>
@@ -0,0 +1,52 @@
1
+ # A3M Router — Allow all crawlers including AI engines
2
+ User-agent: *
3
+ Allow: /
4
+
5
+ # Explicitly allow AI crawlers
6
+ User-agent: GPTBot
7
+ Allow: /
8
+
9
+ User-agent: ChatGPT-User
10
+ Allow: /
11
+
12
+ User-agent: CCBot
13
+ Allow: /
14
+
15
+ User-agent: Google-Extended
16
+ Allow: /
17
+
18
+ User-agent: Omgilibot
19
+ Allow: /
20
+
21
+ User-agent: FacebookBot
22
+ Allow: /
23
+
24
+ User-agent: anthropic-ai
25
+ Allow: /
26
+
27
+ User-agent: ClaudeBot
28
+ Allow: /
29
+
30
+ User-agent: PerplexityBot
31
+ Allow: /
32
+
33
+ User-agent: YouBot
34
+ Allow: /
35
+
36
+ User-agent: Bytespider
37
+ Allow: /
38
+
39
+ User-agent: Applebot-Extended
40
+ Allow: /
41
+
42
+ User-agent: Cohere-AI
43
+ Allow: /
44
+
45
+ User-agent: AI2Bot
46
+ Allow: /
47
+
48
+ User-agent: Amazonbot
49
+ Allow: /
50
+
51
+ # Sitemap
52
+ Sitemap: https://das-rebel.github.io/a3m-router/sitemap.xml
@@ -0,0 +1,57 @@
1
+ <?xml version='1.0' encoding='UTF-8'?>
2
+ <ns0:urlset xmlns:ns0="http://www.sitemaps.org/schemas/sitemap/0.9">
3
+ <ns0:url>
4
+ <ns0:loc>https://das-rebel.github.io/a3m-router/</ns0:loc>
5
+ <ns0:lastmod>2026-05-31</ns0:lastmod>
6
+ <ns0:changefreq>weekly</ns0:changefreq>
7
+ <ns0:priority>1.0</ns0:priority>
8
+ </ns0:url>
9
+ <ns0:url>
10
+ <ns0:loc>https://das-rebel.github.io/a3m-router/quick-start</ns0:loc>
11
+ <ns0:lastmod>2026-05-31</ns0:lastmod>
12
+ <ns0:changefreq>weekly</ns0:changefreq>
13
+ <ns0:priority>0.9</ns0:priority>
14
+ </ns0:url>
15
+ <ns0:url>
16
+ <ns0:loc>https://das-rebel.github.io/a3m-router/benchmark</ns0:loc>
17
+ <ns0:lastmod>2026-05-31</ns0:lastmod>
18
+ <ns0:changefreq>weekly</ns0:changefreq>
19
+ <ns0:priority>0.9</ns0:priority>
20
+ </ns0:url>
21
+ <ns0:url>
22
+ <ns0:loc>https://das-rebel.github.io/a3m-router/api</ns0:loc>
23
+ <ns0:lastmod>2026-05-31</ns0:lastmod>
24
+ <ns0:changefreq>monthly</ns0:changefreq>
25
+ <ns0:priority>0.8</ns0:priority>
26
+ </ns0:url>
27
+ <ns0:url>
28
+ <ns0:loc>https://das-rebel.github.io/a3m-router/llms.txt</ns0:loc>
29
+ <ns0:lastmod>2026-05-31</ns0:lastmod>
30
+ <ns0:changefreq>weekly</ns0:changefreq>
31
+ <ns0:priority>0.7</ns0:priority>
32
+ </ns0:url>
33
+ <ns0:url>
34
+ <ns0:loc>https://das-rebel.github.io/a3m-router/llms-full.txt</ns0:loc>
35
+ <ns0:lastmod>2026-05-31</ns0:lastmod>
36
+ <ns0:changefreq>weekly</ns0:changefreq>
37
+ <ns0:priority>0.7</ns0:priority>
38
+ </ns0:url>
39
+ <ns0:url>
40
+ <ns0:loc>https://das-rebel.github.io/a3m-router/docs/ai-plugin.json</ns0:loc>
41
+ <ns0:lastmod>2026-05-31</ns0:lastmod>
42
+ <ns0:changefreq>monthly</ns0:changefreq>
43
+ <ns0:priority>0.6</ns0:priority>
44
+ </ns0:url>
45
+ <ns0:url>
46
+ <ns0:loc>https://github.com/Das-rebel/a3m-router</ns0:loc>
47
+ <ns0:lastmod>2026-05-31</ns0:lastmod>
48
+ <ns0:changefreq>weekly</ns0:changefreq>
49
+ <ns0:priority>0.9</ns0:priority>
50
+ </ns0:url>
51
+ <ns0:url>
52
+ <ns0:loc>https://www.npmjs.com/package/adaptive-memory-multi-model-router</ns0:loc>
53
+ <ns0:lastmod>2026-05-31</ns0:lastmod>
54
+ <ns0:changefreq>weekly</ns0:changefreq>
55
+ <ns0:priority>0.8</ns0:priority>
56
+ </ns0:url>
57
+ </ns0:urlset>