LMMs 2.0.0__tar.gz

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 (244) hide show
  1. lmms-2.0.0/LICENSE +176 -0
  2. lmms-2.0.0/LMMs.egg-info/PKG-INFO +355 -0
  3. lmms-2.0.0/LMMs.egg-info/SOURCES.txt +242 -0
  4. lmms-2.0.0/LMMs.egg-info/dependency_links.txt +1 -0
  5. lmms-2.0.0/LMMs.egg-info/entry_points.txt +4 -0
  6. lmms-2.0.0/LMMs.egg-info/requires.txt +35 -0
  7. lmms-2.0.0/LMMs.egg-info/top_level.txt +4 -0
  8. lmms-2.0.0/PKG-INFO +355 -0
  9. lmms-2.0.0/README.md +304 -0
  10. lmms-2.0.0/gui.py +112 -0
  11. lmms-2.0.0/launcher.py +266 -0
  12. lmms-2.0.0/lmms/__init__.py +1 -0
  13. lmms-2.0.0/lmms/api/__init__.py +0 -0
  14. lmms-2.0.0/lmms/api/client.py +41 -0
  15. lmms-2.0.0/lmms/api/server.py +935 -0
  16. lmms-2.0.0/lmms/backend/__init__.py +3 -0
  17. lmms-2.0.0/lmms/backend/agents/__init__.py +0 -0
  18. lmms-2.0.0/lmms/backend/agents/base/__init__.py +0 -0
  19. lmms-2.0.0/lmms/backend/agents/base/agent.py +30 -0
  20. lmms-2.0.0/lmms/backend/agents/context.py +0 -0
  21. lmms-2.0.0/lmms/backend/agents/core_agents/__init__.py +0 -0
  22. lmms-2.0.0/lmms/backend/agents/core_agents/agents/__init__.py +0 -0
  23. lmms-2.0.0/lmms/backend/agents/core_agents/agents/base.py +41 -0
  24. lmms-2.0.0/lmms/backend/agents/core_agents/agents/context.py +34 -0
  25. lmms-2.0.0/lmms/backend/agents/core_agents/agents/history.py +88 -0
  26. lmms-2.0.0/lmms/backend/agents/core_agents/agents/manager.py +137 -0
  27. lmms-2.0.0/lmms/backend/agents/core_agents/agents/specialized/__init__.py +0 -0
  28. lmms-2.0.0/lmms/backend/agents/core_agents/agents/specialized/chat.py +72 -0
  29. lmms-2.0.0/lmms/backend/agents/core_agents/agents/specialized/coding.py +210 -0
  30. lmms-2.0.0/lmms/backend/agents/core_agents/agents/specialized/git.py +10 -0
  31. lmms-2.0.0/lmms/backend/agents/core_agents/agents/specialized/orchestrator.py +195 -0
  32. lmms-2.0.0/lmms/backend/agents/core_agents/agents/specialized/reviewer.py +101 -0
  33. lmms-2.0.0/lmms/backend/agents/core_agents/agents/specialized/tasks.py +19 -0
  34. lmms-2.0.0/lmms/backend/agents/core_agents/agents/specialized/tester.py +116 -0
  35. lmms-2.0.0/lmms/backend/agents/core_agents/agents/specialized/universal.py +208 -0
  36. lmms-2.0.0/lmms/backend/agents/core_agents/agents/specialized/vision.py +49 -0
  37. lmms-2.0.0/lmms/backend/agents/execution.py +0 -0
  38. lmms-2.0.0/lmms/backend/agents/manager.py +87 -0
  39. lmms-2.0.0/lmms/backend/agents/memory.py +0 -0
  40. lmms-2.0.0/lmms/backend/agents/permissions.py +63 -0
  41. lmms-2.0.0/lmms/backend/agents/policies.py +0 -0
  42. lmms-2.0.0/lmms/backend/agents/registry.py +32 -0
  43. lmms-2.0.0/lmms/backend/agents/router_hooks/__init__.py +0 -0
  44. lmms-2.0.0/lmms/backend/agents/router_hooks/rule_based.py +22 -0
  45. lmms-2.0.0/lmms/backend/agents/states.py +11 -0
  46. lmms-2.0.0/lmms/backend/cli/__init__.py +0 -0
  47. lmms-2.0.0/lmms/backend/cli/checkpoints.py +187 -0
  48. lmms-2.0.0/lmms/backend/cli/cli.py +503 -0
  49. lmms-2.0.0/lmms/backend/cli/cli_commands.py +49 -0
  50. lmms-2.0.0/lmms/backend/cli/diagnostics.py +63 -0
  51. lmms-2.0.0/lmms/backend/cli/review.py +48 -0
  52. lmms-2.0.0/lmms/backend/cli/scope_cli.py +136 -0
  53. lmms-2.0.0/lmms/backend/cli/tools_cli.py +24 -0
  54. lmms-2.0.0/lmms/backend/context/__init__.py +0 -0
  55. lmms-2.0.0/lmms/backend/context/assembler.py +31 -0
  56. lmms-2.0.0/lmms/backend/context/budgeting.py +47 -0
  57. lmms-2.0.0/lmms/backend/context/builder.py +79 -0
  58. lmms-2.0.0/lmms/backend/context/capabilities.py +46 -0
  59. lmms-2.0.0/lmms/backend/context/intents.py +39 -0
  60. lmms-2.0.0/lmms/backend/context/ranking.py +18 -0
  61. lmms-2.0.0/lmms/backend/context/retrieval.py +34 -0
  62. lmms-2.0.0/lmms/backend/context/workspace_rules.py +29 -0
  63. lmms-2.0.0/lmms/backend/contracts/__init__.py +21 -0
  64. lmms-2.0.0/lmms/backend/contracts/cache.py +13 -0
  65. lmms-2.0.0/lmms/backend/contracts/generation.py +55 -0
  66. lmms-2.0.0/lmms/backend/contracts/inference.py +12 -0
  67. lmms-2.0.0/lmms/backend/contracts/loader.py +10 -0
  68. lmms-2.0.0/lmms/backend/contracts/memory.py +13 -0
  69. lmms-2.0.0/lmms/backend/contracts/profile.py +11 -0
  70. lmms-2.0.0/lmms/backend/contracts/provider.py +17 -0
  71. lmms-2.0.0/lmms/backend/contracts/runtime.py +22 -0
  72. lmms-2.0.0/lmms/backend/contracts/scheduler.py +14 -0
  73. lmms-2.0.0/lmms/backend/contracts/workspace.py +13 -0
  74. lmms-2.0.0/lmms/backend/core/__init__.py +0 -0
  75. lmms-2.0.0/lmms/backend/core/agent.py +814 -0
  76. lmms-2.0.0/lmms/backend/core/capabilities/__init__.py +3 -0
  77. lmms-2.0.0/lmms/backend/core/capabilities/registry.py +29 -0
  78. lmms-2.0.0/lmms/backend/core/commands.py +346 -0
  79. lmms-2.0.0/lmms/backend/core/context.py +28 -0
  80. lmms-2.0.0/lmms/backend/core/migration.py +101 -0
  81. lmms-2.0.0/lmms/backend/core/registry/__init__.py +4 -0
  82. lmms-2.0.0/lmms/backend/core/registry/model_registry.py +174 -0
  83. lmms-2.0.0/lmms/backend/core/registry/provider_registry.py +115 -0
  84. lmms-2.0.0/lmms/backend/core/registry/service.py +90 -0
  85. lmms-2.0.0/lmms/backend/dummy_bug.py +4 -0
  86. lmms-2.0.0/lmms/backend/dummy_test_bug.py +6 -0
  87. lmms-2.0.0/lmms/backend/git/__init__.py +0 -0
  88. lmms-2.0.0/lmms/backend/git/branches.py +3 -0
  89. lmms-2.0.0/lmms/backend/git/commits.py +3 -0
  90. lmms-2.0.0/lmms/backend/git/diff.py +11 -0
  91. lmms-2.0.0/lmms/backend/git/git_manager.py +97 -0
  92. lmms-2.0.0/lmms/backend/git/hooks.py +15 -0
  93. lmms-2.0.0/lmms/backend/git/manager.py +52 -0
  94. lmms-2.0.0/lmms/backend/git/memory.py +6 -0
  95. lmms-2.0.0/lmms/backend/git/repository.py +3 -0
  96. lmms-2.0.0/lmms/backend/git/timeline.py +10 -0
  97. lmms-2.0.0/lmms/backend/git/worktrees.py +3 -0
  98. lmms-2.0.0/lmms/backend/main.py +2316 -0
  99. lmms-2.0.0/lmms/backend/models.py +24 -0
  100. lmms-2.0.0/lmms/backend/providers/__init__.py +3 -0
  101. lmms-2.0.0/lmms/backend/providers/manager.py +51 -0
  102. lmms-2.0.0/lmms/backend/providers/native/__init__.py +0 -0
  103. lmms-2.0.0/lmms/backend/providers/native/provider.py +52 -0
  104. lmms-2.0.0/lmms/backend/research/__init__.py +0 -0
  105. lmms-2.0.0/lmms/backend/research/engine.py +125 -0
  106. lmms-2.0.0/lmms/backend/research/events.py +101 -0
  107. lmms-2.0.0/lmms/backend/research/evidence.py +64 -0
  108. lmms-2.0.0/lmms/backend/research/fetcher.py +104 -0
  109. lmms-2.0.0/lmms/backend/research/history.py +64 -0
  110. lmms-2.0.0/lmms/backend/research/result.py +28 -0
  111. lmms-2.0.0/lmms/backend/research/search_manager.py +98 -0
  112. lmms-2.0.0/lmms/backend/router/__init__.py +0 -0
  113. lmms-2.0.0/lmms/backend/router/execution_graph.py +31 -0
  114. lmms-2.0.0/lmms/backend/router/fallback.py +33 -0
  115. lmms-2.0.0/lmms/backend/router/llm_router.py +21 -0
  116. lmms-2.0.0/lmms/backend/router/manager.py +65 -0
  117. lmms-2.0.0/lmms/backend/router/memory.py +0 -0
  118. lmms-2.0.0/lmms/backend/router/pairs.py +74 -0
  119. lmms-2.0.0/lmms/backend/router/planner.py +129 -0
  120. lmms-2.0.0/lmms/backend/router/rule_router.py +19 -0
  121. lmms-2.0.0/lmms/backend/router/validator.py +22 -0
  122. lmms-2.0.0/lmms/backend/security/__init__.py +1 -0
  123. lmms-2.0.0/lmms/backend/security/command_parser.py +72 -0
  124. lmms-2.0.0/lmms/backend/security/defensive.py +119 -0
  125. lmms-2.0.0/lmms/backend/security/evidence.py +49 -0
  126. lmms-2.0.0/lmms/backend/security/executor.py +46 -0
  127. lmms-2.0.0/lmms/backend/security/models.py +40 -0
  128. lmms-2.0.0/lmms/backend/security/permission_manager.py +101 -0
  129. lmms-2.0.0/lmms/backend/security/report.py +99 -0
  130. lmms-2.0.0/lmms/backend/security/scope.py +51 -0
  131. lmms-2.0.0/lmms/backend/security/target_validator.py +55 -0
  132. lmms-2.0.0/lmms/backend/security/tool_registry.py +74 -0
  133. lmms-2.0.0/lmms/backend/services/__init__.py +0 -0
  134. lmms-2.0.0/lmms/backend/services/chat_event.py +46 -0
  135. lmms-2.0.0/lmms/backend/services/chat_service.py +342 -0
  136. lmms-2.0.0/lmms/backend/services/model_cache.py +159 -0
  137. lmms-2.0.0/lmms/backend/services/model_registry.py +4 -0
  138. lmms-2.0.0/lmms/backend/services/workspace_service.py +61 -0
  139. lmms-2.0.0/lmms/backend/tasks/__init__.py +0 -0
  140. lmms-2.0.0/lmms/backend/tasks/graph.py +20 -0
  141. lmms-2.0.0/lmms/backend/tasks/hooks.py +17 -0
  142. lmms-2.0.0/lmms/backend/tasks/manager.py +62 -0
  143. lmms-2.0.0/lmms/backend/tasks/memory.py +18 -0
  144. lmms-2.0.0/lmms/backend/tasks/timeline.py +20 -0
  145. lmms-2.0.0/lmms/backend/telemetry/__init__.py +0 -0
  146. lmms-2.0.0/lmms/backend/telemetry/metrics.py +0 -0
  147. lmms-2.0.0/lmms/backend/tools/__init__.py +8 -0
  148. lmms-2.0.0/lmms/backend/tools/boundaries.py +22 -0
  149. lmms-2.0.0/lmms/backend/tools/browser.py +516 -0
  150. lmms-2.0.0/lmms/backend/tools/core/__init__.py +10 -0
  151. lmms-2.0.0/lmms/backend/tools/core/definitions.py +21 -0
  152. lmms-2.0.0/lmms/backend/tools/core/executor.py +78 -0
  153. lmms-2.0.0/lmms/backend/tools/core/registry.py +20 -0
  154. lmms-2.0.0/lmms/backend/tools/core/result.py +26 -0
  155. lmms-2.0.0/lmms/backend/tools/files.py +175 -0
  156. lmms-2.0.0/lmms/backend/tools/kali_knowledge.py +68 -0
  157. lmms-2.0.0/lmms/backend/tools/rag.py +154 -0
  158. lmms-2.0.0/lmms/backend/tools/search.py +41 -0
  159. lmms-2.0.0/lmms/backend/tools/search_provider.py +31 -0
  160. lmms-2.0.0/lmms/backend/tools/terminal.py +119 -0
  161. lmms-2.0.0/lmms/backend/tools/vision.py +21 -0
  162. lmms-2.0.0/lmms/contracts/__init__.py +21 -0
  163. lmms-2.0.0/lmms/contracts/cache.py +13 -0
  164. lmms-2.0.0/lmms/contracts/inference.py +12 -0
  165. lmms-2.0.0/lmms/contracts/loader.py +10 -0
  166. lmms-2.0.0/lmms/contracts/memory.py +13 -0
  167. lmms-2.0.0/lmms/contracts/profile.py +11 -0
  168. lmms-2.0.0/lmms/contracts/provider.py +11 -0
  169. lmms-2.0.0/lmms/contracts/runtime.py +23 -0
  170. lmms-2.0.0/lmms/contracts/scheduler.py +14 -0
  171. lmms-2.0.0/lmms/contracts/workspace.py +13 -0
  172. lmms-2.0.0/lmms/engine/__init__.py +0 -0
  173. lmms-2.0.0/lmms/engine/air/__init__.py +6 -0
  174. lmms-2.0.0/lmms/engine/air/cache.py +1 -0
  175. lmms-2.0.0/lmms/engine/air/guardrails.py +12 -0
  176. lmms-2.0.0/lmms/engine/air/loader.py +65 -0
  177. lmms-2.0.0/lmms/engine/air/memory_map.py +0 -0
  178. lmms-2.0.0/lmms/engine/air/monitor.py +18 -0
  179. lmms-2.0.0/lmms/engine/air/pager.py +100 -0
  180. lmms-2.0.0/lmms/engine/air/prefetch.py +0 -0
  181. lmms-2.0.0/lmms/engine/air/quantization.py +0 -0
  182. lmms-2.0.0/lmms/engine/air/ram_cache.py +26 -0
  183. lmms-2.0.0/lmms/engine/air/runtime.py +81 -0
  184. lmms-2.0.0/lmms/engine/air/scheduler.py +37 -0
  185. lmms-2.0.0/lmms/engine/air/stats.py +31 -0
  186. lmms-2.0.0/lmms/engine/air/swapper.py +63 -0
  187. lmms-2.0.0/lmms/engine/benchmark.py +62 -0
  188. lmms-2.0.0/lmms/engine/cache_manager.py +102 -0
  189. lmms-2.0.0/lmms/engine/connection.py +53 -0
  190. lmms-2.0.0/lmms/engine/downloads_manager.py +43 -0
  191. lmms-2.0.0/lmms/engine/hardware.py +17 -0
  192. lmms-2.0.0/lmms/engine/manager.py +39 -0
  193. lmms-2.0.0/lmms/engine/modelfile.py +113 -0
  194. lmms-2.0.0/lmms/engine/profiles.py +95 -0
  195. lmms-2.0.0/lmms/engine/registry.py +117 -0
  196. lmms-2.0.0/lmms/engine/response_cleaner.py +81 -0
  197. lmms-2.0.0/lmms/engine/runtime_matrix.py +20 -0
  198. lmms-2.0.0/lmms/engine/runtimes/__init__.py +0 -0
  199. lmms-2.0.0/lmms/engine/runtimes/air.py +21 -0
  200. lmms-2.0.0/lmms/engine/runtimes/base.py +36 -0
  201. lmms-2.0.0/lmms/engine/runtimes/hf_vision.py +167 -0
  202. lmms-2.0.0/lmms/engine/runtimes/llama_cpp.py +387 -0
  203. lmms-2.0.0/lmms/engine/runtimes/universal_pytorch.py +251 -0
  204. lmms-2.0.0/lmms/engine/runtimes/vllm.py +0 -0
  205. lmms-2.0.0/lmms/engine/scheduler.py +146 -0
  206. lmms-2.0.0/lmms/engine/smart_scheduler.py +25 -0
  207. lmms-2.0.0/lmms/extensions/__init__.py +4 -0
  208. lmms-2.0.0/lmms/extensions/commands.py +76 -0
  209. lmms-2.0.0/lmms/extensions/host.py +190 -0
  210. lmms-2.0.0/lmms/extensions/installer.py +228 -0
  211. lmms-2.0.0/lmms/extensions/manager.py +311 -0
  212. lmms-2.0.0/lmms/extensions/models.py +160 -0
  213. lmms-2.0.0/lmms/extensions/vscode_api.py +289 -0
  214. lmms-2.0.0/lmms/gui/__init__.py +0 -0
  215. lmms-2.0.0/lmms/gui/dialogs/__init__.py +0 -0
  216. lmms-2.0.0/lmms/gui/dialogs/extension_permissions_dialog.py +116 -0
  217. lmms-2.0.0/lmms/gui/dialogs/github_auth_dialog.py +65 -0
  218. lmms-2.0.0/lmms/gui/dialogs/settings_dialog.py +96 -0
  219. lmms-2.0.0/lmms/providers/__init__.py +3 -0
  220. lmms-2.0.0/lmms/providers/manager.py +7 -0
  221. lmms-2.0.0/lmms/ui.py +222 -0
  222. lmms-2.0.0/setup.cfg +4 -0
  223. lmms-2.0.0/setup.py +64 -0
  224. lmms-2.0.0/tests/__init__.py +0 -0
  225. lmms-2.0.0/tests/test_checkpoints.py +114 -0
  226. lmms-2.0.0/tests/test_cli_response_contract.py +67 -0
  227. lmms-2.0.0/tests/test_command_parser.py +28 -0
  228. lmms-2.0.0/tests/test_diagnostics.py +27 -0
  229. lmms-2.0.0/tests/test_executor.py +40 -0
  230. lmms-2.0.0/tests/test_gui_chat.py +106 -0
  231. lmms-2.0.0/tests/test_launcher.py +15 -0
  232. lmms-2.0.0/tests/test_parser_edge_cases.py +49 -0
  233. lmms-2.0.0/tests/test_permission_manager.py +53 -0
  234. lmms-2.0.0/tests/test_planner.py +110 -0
  235. lmms-2.0.0/tests/test_pty.py +24 -0
  236. lmms-2.0.0/tests/test_report.py +50 -0
  237. lmms-2.0.0/tests/test_research.py +231 -0
  238. lmms-2.0.0/tests/test_review.py +44 -0
  239. lmms-2.0.0/tests/test_scope.py +92 -0
  240. lmms-2.0.0/tests/test_streaming_leak.py +84 -0
  241. lmms-2.0.0/tests/test_target_validator.py +29 -0
  242. lmms-2.0.0/tests/test_tools.py +121 -0
  243. lmms-2.0.0/tests/test_workspace_boundaries.py +26 -0
  244. lmms-2.0.0/tests/test_workspace_rules.py +19 -0
lmms-2.0.0/LICENSE ADDED
@@ -0,0 +1,176 @@
1
+ Apache License
2
+ Version 2.0, January 2004
3
+ http://www.apache.org/licenses/
4
+
5
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6
+
7
+ 1. Definitions.
8
+
9
+ "License" shall mean the terms and conditions for use, reproduction,
10
+ and distribution as defined by Sections 1 through 9 of this document.
11
+
12
+ "Licensor" shall mean the copyright owner or entity authorized by
13
+ the copyright owner that is granting the License.
14
+
15
+ "Legal Entity" shall mean the union of the acting entity and all
16
+ other entities that control, are controlled by, or are under common
17
+ control with that entity. For the purposes of this definition,
18
+ "control" means (i) the power, direct or indirect, to cause the
19
+ direction or management of such entity, whether by contract or
20
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
21
+ outstanding shares, or (iii) beneficial ownership of such entity.
22
+
23
+ "You" (or "Your") shall mean an individual or Legal Entity
24
+ exercising permissions granted by this License.
25
+
26
+ "Source" form shall mean the preferred form for making modifications,
27
+ including but not limited to software source code, documentation
28
+ source, and configuration files.
29
+
30
+ "Object" form shall mean any form resulting from mechanical
31
+ transformation or translation of a Source form, including but
32
+ not limited to compiled object code, generated documentation,
33
+ and conversions to other media types.
34
+
35
+ "Work" shall mean the work of authorship, whether in Source or
36
+ Object form, made available under the License, as indicated by a
37
+ copyright notice that is included in or attached to the work
38
+ (an example is provided in the Appendix below).
39
+
40
+ "Derivative Works" shall mean any work, whether in Source or Object
41
+ form, that is based on (or derived from) the Work and for which the
42
+ editorial revisions, annotations, elaborations, or other modifications
43
+ represent, as a whole, an original work of authorship. For the purposes
44
+ of this License, Derivative Works shall not include works that remain
45
+ separable from, or merely link (or bind by name) to the interfaces of,
46
+ the Work and Derivative Works thereof.
47
+
48
+ "Contribution" shall mean any work of authorship, including
49
+ the original version of the Work and any modifications or additions
50
+ to that Work or Derivative Works thereof, that is intentionally
51
+ submitted to Licensor for inclusion in the Work by the copyright owner
52
+ or by an individual or Legal Entity authorized to submit on behalf of
53
+ the copyright owner. For the purposes of this definition, "submitted"
54
+ means any form of electronic, verbal, or written communication sent
55
+ to the Licensor or its representatives, including but not limited to
56
+ communication on electronic mailing lists, source code control systems,
57
+ and issue tracking systems that are managed by, or on behalf of, the
58
+ Licensor for the purpose of discussing and improving the Work, but
59
+ excluding communication that is conspicuously marked or otherwise
60
+ designated in writing by the copyright owner as "Not a Contribution."
61
+
62
+ "Contributor" shall mean Licensor and any individual or Legal Entity
63
+ on behalf of whom a Contribution has been received by Licensor and
64
+ subsequently incorporated within the Work.
65
+
66
+ 2. Grant of Copyright License. Subject to the terms and conditions of
67
+ this License, each Contributor hereby grants to You a perpetual,
68
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69
+ copyright license to reproduce, prepare Derivative Works of,
70
+ publicly display, publicly perform, sublicense, and distribute the
71
+ Work and such Derivative Works in Source or Object form.
72
+
73
+ 3. Grant of Patent License. Subject to the terms and conditions of
74
+ this License, each Contributor hereby grants to You a perpetual,
75
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76
+ (except as stated in this section) patent license to make, have made,
77
+ use, offer to sell, sell, import, and otherwise transfer the Work,
78
+ where such license applies only to those patent claims licensable
79
+ by such Contributor that are necessarily infringed by their
80
+ Contribution(s) alone or by combination of their Contribution(s)
81
+ with the Work to which such Contribution(s) was submitted. If You
82
+ institute patent litigation against any entity (including a
83
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
84
+ or a Contribution incorporated within the Work constitutes direct
85
+ or contributory patent infringement, then any patent licenses
86
+ granted to You under this License for that Work shall terminate
87
+ as of the date such litigation is filed.
88
+
89
+ 4. Redistribution. You may reproduce and distribute copies of the
90
+ Work or Derivative Works thereof in any medium, with or without
91
+ modifications, and in Source or Object form, provided that You
92
+ meet the following conditions:
93
+
94
+ (a) You must give any other recipients of the Work or
95
+ Derivative Works a copy of this License; and
96
+
97
+ (b) You must cause any modified files to carry prominent notices
98
+ stating that You changed the files; and
99
+
100
+ (c) You must retain, in the Source form of any Derivative Works
101
+ that You distribute, all copyright, patent, trademark, and
102
+ attribution notices from the Source form of the Work,
103
+ excluding those notices that do not pertain to any part of
104
+ the Derivative Works; and
105
+
106
+ (d) If the Work includes a "NOTICE" text file as part of its
107
+ distribution, then any Derivative Works that You distribute must
108
+ include a readable copy of the attribution notices contained
109
+ within such NOTICE file, excluding those notices that do not
110
+ pertain to any part of the Derivative Works, in at least one
111
+ of the following places: within a NOTICE text file distributed
112
+ as part of the Derivative Works; within the Source form or
113
+ documentation, if provided along with the Derivative Works; or,
114
+ within a display generated by the Derivative Works, if and
115
+ wherever such third-party notices normally appear. The contents
116
+ of the NOTICE file are for informational purposes only and
117
+ do not modify the License. You may add Your own attribution
118
+ notices within Derivative Works that You distribute, alongside
119
+ or as an addendum to the NOTICE text from the Work, provided
120
+ that such additional attribution notices cannot be construed
121
+ as modifying the License.
122
+
123
+ You may add Your own copyright statement to Your modifications and
124
+ may provide additional or different license terms and conditions
125
+ for use, reproduction, or distribution of Your modifications, or
126
+ for any such Derivative Works as a whole, provided Your use,
127
+ reproduction, and distribution of the Work otherwise complies with
128
+ the conditions stated in this License.
129
+
130
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
131
+ any Contribution intentionally submitted for inclusion in the Work
132
+ by You to the Licensor shall be under the terms and conditions of
133
+ this License, without any additional terms or conditions.
134
+ Notwithstanding the above, nothing herein shall supersede or modify
135
+ the terms of any separate license agreement you may have executed
136
+ with Licensor regarding such Contributions.
137
+
138
+ 6. Trademarks. This License does not grant permission to use the trade
139
+ names, trademarks, service marks, or product names of the Licensor,
140
+ except as required for reasonable and customary use in describing the
141
+ origin of the Work and reproducing the content of the NOTICE file.
142
+
143
+ 7. Disclaimer of Warranty. Unless required by applicable law or
144
+ agreed to in writing, Licensor provides the Work (and each
145
+ Contributor provides its Contributions) on an "AS IS" BASIS,
146
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147
+ implied, including, without limitation, any warranties or conditions
148
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149
+ PARTICULAR PURPOSE. You are solely responsible for determining the
150
+ appropriateness of using or redistributing the Work and assume any
151
+ risks associated with Your exercise of permissions under this License.
152
+
153
+ 8. Limitation of Liability. In no event and under no legal theory,
154
+ whether in tort (including negligence), contract, or otherwise,
155
+ unless required by applicable law (such as deliberate and grossly
156
+ negligent acts) or agreed to in writing, shall any Contributor be
157
+ liable to You for damages, including any direct, indirect, special,
158
+ incidental, or consequential damages of any character arising as a
159
+ result of this License or out of the use or inability to use the
160
+ Work (including but not limited to damages for loss of goodwill,
161
+ work stoppage, computer failure or malfunction, or any and all
162
+ other commercial damages or losses), even if such Contributor
163
+ has been advised of the possibility of such damages.
164
+
165
+ 9. Accepting Warranty or Additional Liability. While redistributing
166
+ the Work or Derivative Works thereof, You may choose to offer,
167
+ and charge a fee for, acceptance of support, warranty, indemnity,
168
+ or other liability obligations and/or rights consistent with this
169
+ License. However, in accepting such obligations, You may act only
170
+ on Your own behalf and on Your sole responsibility, not on behalf
171
+ of any other Contributor, and only if You agree to indemnify,
172
+ defend, and hold each Contributor harmless for any liability
173
+ incurred by, or claims asserted against, such Contributor by reason
174
+ of your accepting any such warranty or additional liability.
175
+
176
+ END OF TERMS AND CONDITIONS
@@ -0,0 +1,355 @@
1
+ Metadata-Version: 2.4
2
+ Name: LMMs
3
+ Version: 2.0.0
4
+ Summary: Local Multi-Model AI System β€” open style agent
5
+ Author: MarkanM Team (Developer: Raj Singh)
6
+ Requires-Python: >=3.10
7
+ Description-Content-Type: text/markdown
8
+ License-File: LICENSE
9
+ Requires-Dist: ollama
10
+ Requires-Dist: rich
11
+ Requires-Dist: duckduckgo-search
12
+ Requires-Dist: playwright
13
+ Requires-Dist: requests
14
+ Requires-Dist: click
15
+ Requires-Dist: prompt_toolkit
16
+ Requires-Dist: openai
17
+ Requires-Dist: anthropic
18
+ Requires-Dist: pathspec
19
+ Requires-Dist: plotext
20
+ Requires-Dist: textual
21
+ Requires-Dist: huggingface_hub
22
+ Requires-Dist: watchdog
23
+ Requires-Dist: transformers
24
+ Requires-Dist: airllm
25
+ Requires-Dist: PyQt6
26
+ Requires-Dist: PyQt6-Qt6
27
+ Requires-Dist: PyQt6-sip
28
+ Requires-Dist: qasync
29
+ Requires-Dist: PyQt6-WebEngine
30
+ Requires-Dist: python-lsp-server
31
+ Requires-Dist: fastapi
32
+ Requires-Dist: uvicorn[standard]
33
+ Requires-Dist: httpx[http2]
34
+ Requires-Dist: websockets
35
+ Requires-Dist: pydantic
36
+ Requires-Dist: nest_asyncio
37
+ Requires-Dist: psutil
38
+ Requires-Dist: sentence-transformers
39
+ Requires-Dist: numpy
40
+ Requires-Dist: markdown
41
+ Requires-Dist: sqlite-vec
42
+ Requires-Dist: keyring
43
+ Requires-Dist: debugpy>=1.8.0
44
+ Dynamic: author
45
+ Dynamic: description
46
+ Dynamic: description-content-type
47
+ Dynamic: license-file
48
+ Dynamic: requires-dist
49
+ Dynamic: requires-python
50
+ Dynamic: summary
51
+
52
+ # LMMs Unified Architecture
53
+
54
+ ```
55
+ β–ˆβ–ˆβ•— β–ˆβ–ˆβ–ˆβ•— β–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ–ˆβ•— β–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—
56
+ β–ˆβ–ˆβ•‘ β–ˆβ–ˆβ–ˆβ–ˆβ•— β–ˆβ–ˆβ–ˆβ–ˆβ•‘β–ˆβ–ˆβ–ˆβ–ˆβ•— β–ˆβ–ˆβ–ˆβ–ˆβ•‘β–ˆβ–ˆβ•”β•β•β•β•β•
57
+ β–ˆβ–ˆβ•‘ β–ˆβ–ˆβ•”β–ˆβ–ˆβ–ˆβ–ˆβ•”β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•”β–ˆβ–ˆβ–ˆβ–ˆβ•”β–ˆβ–ˆβ•‘β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—
58
+ β–ˆβ–ˆβ•‘ β–ˆβ–ˆβ•‘β•šβ–ˆβ–ˆβ•”β•β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘β•šβ–ˆβ–ˆβ•”β•β–ˆβ–ˆβ•‘β•šβ•β•β•β•β–ˆβ–ˆβ•‘
59
+ β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ•‘ β•šβ•β• β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘ β•šβ•β• β–ˆβ–ˆβ•‘β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•‘
60
+ β•šβ•β•β•β•β•β•β•β•šβ•β• β•šβ•β•β•šβ•β• β•šβ•β•β•šβ•β•β•β•β•β•β•
61
+ ```
62
+
63
+ <div align="center">
64
+ <a href="https://LMMs.MarkanM.com">
65
+ 🌐 Visit Our Official Website: LMMs.MarkanM.com
66
+ </a>
67
+ </div>
68
+
69
+ <br>
70
+
71
+ **LMMs** is an advanced, multi-component agentic AI ecosystem designed to run any open-source language model β€” from 1B to 350B+ parameters β€” and instantly equip it with autonomous agent capabilities like web search, code execution, API calling, file management, vector memory, and state tracking. We never modify the model itself. Instead, our Engine and Backend layer wraps around any model and gives it superpowers.
72
+
73
+ ---
74
+
75
+ ## πŸ‘‘ Founders
76
+
77
+ | Role | Name |
78
+ |------|------|
79
+ | Founder | **Raj Singh** |
80
+ | Co-Founder | **Adarsh Singh** |
81
+
82
+ ---
83
+
84
+ ## πŸ—οΈ How LMMs Works β€” Deep Architecture Overview
85
+
86
+ LMMs is built around a core philosophy: **the model should never need to be modified or fine-tuned to gain new capabilities**. Instead, all intelligence is injected through the architecture itself. Here is a deep breakdown of every layer:
87
+
88
+ ---
89
+
90
+ ### βš™οΈ Layer 1: LMMs Engine β€” The Execution Core
91
+
92
+ The Engine is the lowest level of LMMs. It is responsible for actually loading and running the AI model on your hardware. Because AI models come in wildly different sizes and architectures β€” from tiny 1B models to massive 350B behemoths β€” LMMs uses a **Dual Engine Architecture** to handle all of them efficiently:
93
+
94
+ #### πŸ¦™ Engine A: `llama.cpp` Runtime
95
+ - **Core Mechanism:** Utilizes zero-copy memory mapping (`mmap`) to load model weights directly from disk into RAM/VRAM without duplication.
96
+ - **Quantization Logic:** Converts standard 16-bit float (fp16) weights into 4-bit or 8-bit integers (GGUF format) using block-wise quantization. This reduces memory footprint by 75% while maintaining ~95% of the model's reasoning capability.
97
+ - **KV Caching:** Employs an optimized Key-Value (KV) cache matrix to store past token attention states, allowing ultra-fast generation of subsequent tokens without re-evaluating the entire prompt.
98
+ - **Best for:** Running highly optimized models (Llama 3, Mistral) on consumer hardware with limited VRAM.
99
+
100
+ #### πŸ”₯ Engine B: `PyTorch` Runtime
101
+ - **Core Mechanism:** Natively loads standard HuggingFace `safetensors`. It utilizes dynamic graph execution and highly optimized CUDA kernels (like Flash Attention 2) to compute multi-head attention blocks faster on modern GPUs.
102
+ - **Memory Management:** Automatically splits the model layers across available GPUs (Tensor Parallelism) or shifts non-active layers to CPU RAM (Model Offloading) to prevent Out of Memory (OOM) errors.
103
+ - **Best for:** Multimodal models (Vision + Text), frontier models with custom attention mechanisms, and unquantized precision tasks.
104
+
105
+ #### 🌬️ Engine C: `AirLLM` (Air Engine) β€” Distributed / Disk-Offloading
106
+ - **Core Mechanism:** Traditional engines load the *entire* model into RAM/VRAM before generating a single token. AirLLM uses a **Layer-by-Layer Streaming** logic. It keeps only a small subset of the neural network layers in GPU memory at any given millisecond. As the forward pass reaches layer N, layer N+1 is pre-fetched from the SSD, and layer N-1 is evicted.
107
+ - **Impact:** Allows a standard 16GB RAM PC to run massive 70B parameter models by bottlenecking on disk read-speed rather than memory capacity.
108
+
109
+ > **Key Insight:** You can select which engine to use at model load time using `lmms run <model> -use l` (llama.cpp) or `lmms run <model> -use p` (PyTorch). The Engine auto-detects the best runtime if you omit the flag.
110
+
111
+ ---
112
+
113
+ ### 🧠 Layer 2: LMMs Backend β€” The Brain of the Agent
114
+
115
+ The Backend is the most important layer. It sits between the user and the Engine, intercepting every message and response. It is what transforms a plain language model into a fully autonomous AI agent β€” without touching the model's weights at all.
116
+
117
+ Here is what the Backend injects into every session:
118
+
119
+ #### πŸ’» Autonomous Code Execution (The Tool Interceptor)
120
+ - **Logic & Mechanics:** When the user asks for code, the Backend injects a strict "System Prompt" defining available tools. As the model streams tokens, the Backend constantly scans the stream using AST/Regex parsers for `<tool_call>` boundaries.
121
+ - **Execution Sandbox:** If the model emits a tool call (e.g., `execute_python`), the Backend pauses model inference immediately. It extracts the code payload, spawns a heavily monitored isolated OS subprocess, captures the `stdout` and `stderr` (output and errors), and forcefully terminates runaway loops using strict timeouts.
122
+ - **The Feedback Loop:** The captured output is wrapped in an `<observation>` block and appended to the context. The model is then resumed, allowing it to read its own output, realize if its code failed, and autonomously rewrite it until it passes.
123
+
124
+ #### πŸ—‚οΈ Vector DB & RAG (Retrieval-Augmented Generation)
125
+ - **Ingestion Pipeline:** When a user attaches a folder (`/folder src`), the Backend reads all text/code files. It uses a **Recursive Character Text Splitter** to chop the files into smaller overlapping chunks (e.g., 500 tokens).
126
+ - **Embedding & Indexing:** Each chunk is passed through a lightweight Sentence Transformer model (e.g., `all-MiniLM-L6-v2`) which converts the text into a dense mathematical vector (an array of numbers). These vectors are stored in **FAISS (Facebook AI Similarity Search)**.
127
+ - **Query Retrieval:** When the user asks a question, their prompt is also vectorized. The FAISS database calculates the **Cosine Similarity** between the prompt's vector and the document chunks, fetching only the Top-K most relevant chunks and injecting them into the LLM's context window. This allows the model to "know" entire codebases without overflowing its context limit.
128
+
129
+ #### πŸ” Web Search & API Routing
130
+ - **Search Mechanics:** Upon needing live data, the Backend halts inference and executes a headless query to search APIs (like DuckDuckGo or Google). It parses the raw DOM/HTML of the top 3 results, strips out the noise (ads/scripts), extracts the core text, and feeds a summarized factual snippet back to the model.
131
+ - **Dynamic API Calling:** The Backend can parse REST API schemas dynamically. It allows the model to map natural language intents directly into structured HTTP GET/POST requests with appropriate headers and JSON payloads.
132
+
133
+ #### πŸ“‹ Sliding Window State & Session Memory
134
+ - **Context Eviction Logic:** LLMs crash if they exceed their maximum context window (e.g., 8192 tokens). The Backend tracks every single token using a `tiktoken` tokenizer. When the session nears the limit, the Backend activates a **Sliding Window Algorithm**: it safely evicts the oldest middle-conversation pairs while permanently pinning the System Prompt and critical tool observations at the top.
135
+ - **Undo/Redo Graph:** Every step (user input, model response, tool execution) is saved as an immutable node in a JSON state tree. Using `/undo` simply resets the pointer to the previous node and reverts associated filesystem changes.
136
+
137
+ #### πŸ”„ Intelligent Orchestration
138
+ - **Dynamic Routing:** For complex workflows, the Backend orchestrator monitors the token load. If a task requires massive context (e.g., summarizing 5 large files), the orchestrator dynamically routes the request to the PyTorch runtime; for rapid, short conversational bursts, it routes to the `llama.cpp` engine to save battery and compute cycles.
139
+
140
+ > **The Big Picture:** Because all of this complex tool-calling and memory management lives in the Backend β€” not the model's weights β€” you can swap the underlying model at any time. A user can start a conversation with a 1B model for speed, switch mid-chat to a 70B model using `/ml -s <modelname>`, and the entire agentic toolset carries over instantly.
141
+
142
+ ---
143
+
144
+ ### πŸ–₯️ Layer 3: LMMs CLI β€” The Smart Terminal *(Beta β€” Ready for Use)*
145
+
146
+ The CLI is the primary interface for LMMs. It is **fully functional** and considered ready for general use in its current beta state. It gives you a rich, interactive terminal session where you can chat with any model, switch models live, and orchestrate the full backend toolset.
147
+
148
+ **Status: βœ… Beta β€” Stable & Ready**
149
+
150
+ ---
151
+
152
+ ### πŸ–ΌοΈ Layer 4: LMMs GUI β€” The AI Workspace IDE *(Under Active Development)*
153
+
154
+ The GUI is a PyQt6-based graphical AI Workspace IDE. It is designed to be a visual environment where you can:
155
+
156
+ - **Download models** directly from HuggingFace or the LMMs model hub with one click.
157
+ - **Run and test models** with a visual chat interface.
158
+ - **Browse and manage** your local model library.
159
+ - **Monitor VRAM, CPU, and RAM** usage in real time.
160
+ - **Configure the Backend** tools, vector DB indexes, and session settings visually.
161
+ - **View session state** and conversation history in a structured graph view.
162
+ - **Edit and run code** generated by the AI in an integrated editor.
163
+
164
+ > **Status: 🚧 Under Active Development** β€” The GUI is currently in an early development phase. Core features like model downloading and basic chat are being built. It is not yet ready for production use, but it is available in the repository as a sandbox for contributors.
165
+
166
+ ---
167
+
168
+ ## πŸ“¦ Component Summary
169
+
170
+ | Component | Description | Status |
171
+ |---|---|---|
172
+ | **LMMs Engine** | AI execution layer (llama.cpp + PyTorch + AirLLM) | βœ… Stable |
173
+ | **LMMs Backend** | Agentic brain: tools, RAG, web search, state tracking | βœ… Stable |
174
+ | **LMMs CLI** | Smart terminal interface for all interactions | βœ… Beta |
175
+ | **LMMs GUI** | PyQt6 graphical AI Workspace IDE | 🚧 In Development |
176
+
177
+ ---
178
+
179
+ ## πŸ› οΈ Installation
180
+
181
+ LMMs now uses a standard Python package structure.
182
+
183
+ ```bash
184
+ # Step 1: Clone the repository
185
+ git clone https://github.com/Rajsingh18110/LMMs.git
186
+ cd LMMs
187
+
188
+ # Step 2: Install dependencies
189
+ pip install -r requirements.txt
190
+
191
+ # Step 3: Run the setup to configure LMMs
192
+ python setup.py install
193
+ ```
194
+
195
+ ---
196
+
197
+ ## πŸ’» Commands Reference
198
+
199
+ ### LMMs Core Launcher Commands
200
+
201
+ | Command | Description |
202
+ |---|---|
203
+ | `LMMs` | Launch your configured default interface |
204
+ | `LMMs --gui` <br> `LMMs --cli` <br> `LMMs --engine` | Directly runs the specified component |
205
+ | `LMMs set --cli` | Set CLI as your permanent default |
206
+ | `LMMs set --engine` | Set Engine as your permanent default |
207
+ | `LMMs stop` | Stop the LMMs background engine |
208
+ | `LMMs -check` | Hardware Profiler & Prerequisites check |
209
+ | `LMMs install --all` | Install Entire Ecosystem (main branch) |
210
+ | `LMMs install --gui` | Install GUI + Backend + Engine only (gui branch) |
211
+ | `LMMs install --cli` | Install CLI + Backend + Engine only (cli branch) |
212
+ | `LMMs update` | Smart update (auto-pulls from your installed branch) |
213
+ | `LMMs update --all` | Force Update Entire Ecosystem from GitHub |
214
+ | `LMMs-uninstall -all` | Remove Source Code (Data Safe) |
215
+ | `LMMs-uninstall -all --purge` | Total Purge (Factory Reset) |
216
+ | `LMMs --help` | Show launcher help |
217
+
218
+ ---
219
+
220
+ ## 🧠 CLI Slash Commands *(Inside the LMMs Terminal)*
221
+
222
+ These commands are typed inside an active LMMs CLI chat session.
223
+
224
+ | Command | Description |
225
+ |---|---|
226
+ | `/fast` | Switch to **FAST** mode β€” quick responses with no tool use |
227
+ | `/deep` | Switch to **DEEP** mode β€” full reasoning loop with all tools enabled (default) |
228
+ | `/model <name>` | Switch to a different model for this session (e.g., `/model llama3`) |
229
+ | `/ml -l` | List all models downloaded on your system |
230
+ | `/ml -s <modelname>` | **Live model switch** β€” swap the active model mid-conversation without losing context |
231
+ | `/folder <name>` | Attach an entire folder to the agent's context (e.g., `/folder src`) |
232
+ | `/code` | Enter focused code generation and editing mode for complex programming tasks |
233
+ | `/chat` | Show a list of all your past chat sessions |
234
+ | `/newchat` | Start a brand new empty chat session |
235
+ | `/chat -r <id> <name>` | Rename a specific chat by its ID |
236
+ | `/chat -d <id>` | Delete a specific chat history by its ID |
237
+ | `/undo` | Undo the last AI action or file edit |
238
+ | `/redo` | Redo the last undone action |
239
+ | `/exit` | Exit the LMMs CLI session |
240
+ | `/reboot` | Reboot the LMMs engine and exit the session |
241
+ | `/mic` | Record audio from the microphone and transcribe it as input |
242
+ | `/vision` (or `/image`) | Switch to VISION mode to analyze images with multimodal models |
243
+ | `/research` | Switch to RESEARCH mode for in-depth web search and data aggregation |
244
+ | `/read <file>` | Quickly read a file's contents into the context |
245
+ | `/task` | Manage background tasks or subagent goals |
246
+ | `/git` | Execute safe Git operations through the agent |
247
+ | `/scope init\|status` | Manage strict workspace boundaries and check scope rules |
248
+ | `/tools list` | List all available system and terminal tools for the agent |
249
+ | `/report` | Generate a detailed security audit report of AI actions |
250
+ | `/checkpoint` | Save a manual checkpoint of the current session state |
251
+ | `/checkpoints` | List all saved session checkpoints |
252
+ | `/rollback` | Rollback the session and file state to a previous checkpoint |
253
+ | `/status` | Check the overall system health and engine status |
254
+ | `/doctor` | Run automated diagnostics and repair engine issues |
255
+ | `/pair` | Enter Pair Programming mode for interactive coding |
256
+ | `/perm <level>` | Change the permission level for AI tool execution |
257
+ | `/agent` | Spawn and manage autonomous subagents |
258
+ | `/orchestrate` | Manage multi-agent orchestration for complex workflows |
259
+
260
+ > **Note:** Only the commands listed above are currently implemented and functional. Legacy or planned commands (e.g. `/cyber`) that are not yet fully available have been removed or are in development.
261
+
262
+ ---
263
+
264
+ ## βš™οΈ Engine Terminal Commands
265
+
266
+ These commands are run directly in your system terminal (not inside the chat session) to manage models and the engine.
267
+
268
+ ### Core Model Management
269
+
270
+ | Command | Description |
271
+ |---|---|
272
+ | `lmms pull <model>` | Auto-detect the best quantization and download a model |
273
+ | `lmms run <model>` | Load and start a chat with a model (auto-selects engine) |
274
+ | `lmms run <model> -use l` | Force llama.cpp engine |
275
+ | `lmms run <model> -use p` | Force PyTorch engine |
276
+ | `lmms stop <model>` | Unload a model from memory |
277
+ | `lmms ps` | Show all currently loaded models |
278
+ | `lmms list` | List all locally downloaded models |
279
+ | `lmms info <model>` | Show metadata, parameter count, and quant info for a model |
280
+ | `lmms rm <model>` | Delete a model from disk |
281
+ | `lmms search <query>` | Search the model hub |
282
+ | `lmms benchmark <model>` | Run a speed test on a model |
283
+ | `lmms doctor [--fix]` | Diagnose and optionally repair engine health |
284
+ | `lmms create <model> -f <file>` | Create a custom model from a Modelfile |
285
+ | `lmms server` | Start the LMMs API server / webhook dashboard |
286
+
287
+ ### Air Engine (AirLLM β€” Disk Offloading for 70B+ Models)
288
+
289
+ | Command | Description |
290
+ |---|---|
291
+ | `lmms -air run <model>` | Run a large model using disk-offloading via AirLLM |
292
+ | `lmms --air run <m1> <m2>` | Run two models in cluster/scheduled mode |
293
+ | `lmms air ps` | Show Air Engine active sessions |
294
+ | `lmms air cache` | Show disk cache usage |
295
+ | `lmms air stats` | Show memory and throughput metrics |
296
+ | `lmms air unload` | Unload Air Engine models from memory |
297
+ | `lmms air benchmark` | Benchmark a model under Air Engine |
298
+
299
+ ---
300
+
301
+ ## πŸš€ CI/CD Pipeline (GitHub Actions)
302
+
303
+ Every push to the `main` branch automatically triggers the LMMs build pipeline. It:
304
+
305
+ 1. Compiles the Python source into standalone binaries using PyInstaller:
306
+ - **Windows:** `.exe` files
307
+ - **Linux:** Native ELF binaries
308
+ - **macOS:** `.app` bundles
309
+ 2. Produces **12 build artifacts** (one per component per platform).
310
+ 3. Publishes all artifacts directly to the **GitHub Releases** page.
311
+ 4. You can download the latest standalone binaries directly from the Releases page β€” no Git required.
312
+
313
+ ---
314
+
315
+ ## 🀝 Join the Revolution: Open Source Contributions & Learning
316
+
317
+ LMMs is an **open-source AI ecosystem**, and we believe that the best software is built collaboratively. We are actively looking for passionate, serious developers, AI enthusiasts, and visionaries to join our community and contribute to the future of agentic AI.
318
+
319
+ Whether you are a seasoned software engineer or just starting your coding journey, there is a place for you here!
320
+
321
+ ### πŸŽ“ Why Students Should Contribute to LMMs
322
+ For computer science students and tech enthusiasts, contributing to LMMs is an unparalleled opportunity to bridge the gap between academic theory and real-world software engineering.
323
+ - **Hands-on AI Experience:** Work directly with cutting-edge Large Language Models (LLMs), RAG pipelines, autonomous agents, and vector databases (FAISS).
324
+ - **Build Your Portfolio:** Open-source contributions to a complex, multi-layered AI architecture like LMMs serve as a powerful resume builder that stands out to top tech recruiters.
325
+ - **Learn Industry Best Practices:** Experience first-hand how an enterprise-grade AI architecture is designed, tested, and maintained at scale.
326
+ - **Networking:** Collaborate with other passionate students, AI researchers, and professional developers globally.
327
+
328
+ ### 🌱 A Playground for Beginner Developers
329
+ Are you a beginner looking for a welcoming open-source project to learn from? LMMs is the perfect training ground!
330
+ - **Mentorship & Guidance:** Our community is extremely welcoming. We love guiding beginners through their first Pull Requests (PRs), code reviews, and architecture discussions.
331
+ - **Modular Codebase:** The project is clearly separated into Engine, Backend, CLI, and GUI layers. You can pick the exact area you are most interested inβ€”whether it's building a PyQt6 user interface or tweaking API routing in Python.
332
+ - **"Good First Issues":** We regularly tag easy, beginner-friendly tasks that help you learn the ropes without feeling overwhelmed.
333
+ - **AI-Powered Learning:** Using LMMs' autonomous coding and pair-programming capabilities (`/pair`, `/code`), you can actually use the AI itself to help you understand and contribute to the codebase!
334
+
335
+ ### 🎯 Who Can Join?
336
+ **Anyone who is serious about learning and building can join us.** You do not need a PhD in Machine Learning to contribute. We need help in various areas:
337
+ - **Python Developers** (Backend, CLI, Tool integration, Agentic loops)
338
+ - **UI/UX Designers & PyQt6 Devs** (LMMs GUI IDE)
339
+ - **Documentation Writers** (Tutorials, API references, SEO optimization, Guides)
340
+ - **QA Testers & Bug Hunters** (Help us find edge cases and improve stability)
341
+ - **AI Enthusiasts** (Prompt engineering, testing new GGUF/PyTorch models)
342
+
343
+ ### πŸš€ How to Get Started?
344
+ 1. **Fork the Repository:** Click the 'Fork' button at the top of this GitHub page.
345
+ 2. **Clone & Install:** Follow the Installation guide above to get LMMs running locally.
346
+ 3. **Pick an Issue:** Check out our GitHub Issues tab, filter by `good first issue` or `help wanted`.
347
+ 4. **Submit a Pull Request:** Write your code, push to your fork, and open a PR! We will review it and guide you.
348
+
349
+ *Join us today, and let's build the ultimate autonomous AI ecosystem together!*
350
+
351
+ ---
352
+
353
+ ## πŸ“„ License
354
+
355
+ This project is licensed under the **Apache License 2.0**. See the [LICENSE](LICENSE) file for full details.