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.
- lmms-2.0.0/LICENSE +176 -0
- lmms-2.0.0/LMMs.egg-info/PKG-INFO +355 -0
- lmms-2.0.0/LMMs.egg-info/SOURCES.txt +242 -0
- lmms-2.0.0/LMMs.egg-info/dependency_links.txt +1 -0
- lmms-2.0.0/LMMs.egg-info/entry_points.txt +4 -0
- lmms-2.0.0/LMMs.egg-info/requires.txt +35 -0
- lmms-2.0.0/LMMs.egg-info/top_level.txt +4 -0
- lmms-2.0.0/PKG-INFO +355 -0
- lmms-2.0.0/README.md +304 -0
- lmms-2.0.0/gui.py +112 -0
- lmms-2.0.0/launcher.py +266 -0
- lmms-2.0.0/lmms/__init__.py +1 -0
- lmms-2.0.0/lmms/api/__init__.py +0 -0
- lmms-2.0.0/lmms/api/client.py +41 -0
- lmms-2.0.0/lmms/api/server.py +935 -0
- lmms-2.0.0/lmms/backend/__init__.py +3 -0
- lmms-2.0.0/lmms/backend/agents/__init__.py +0 -0
- lmms-2.0.0/lmms/backend/agents/base/__init__.py +0 -0
- lmms-2.0.0/lmms/backend/agents/base/agent.py +30 -0
- lmms-2.0.0/lmms/backend/agents/context.py +0 -0
- lmms-2.0.0/lmms/backend/agents/core_agents/__init__.py +0 -0
- lmms-2.0.0/lmms/backend/agents/core_agents/agents/__init__.py +0 -0
- lmms-2.0.0/lmms/backend/agents/core_agents/agents/base.py +41 -0
- lmms-2.0.0/lmms/backend/agents/core_agents/agents/context.py +34 -0
- lmms-2.0.0/lmms/backend/agents/core_agents/agents/history.py +88 -0
- lmms-2.0.0/lmms/backend/agents/core_agents/agents/manager.py +137 -0
- lmms-2.0.0/lmms/backend/agents/core_agents/agents/specialized/__init__.py +0 -0
- lmms-2.0.0/lmms/backend/agents/core_agents/agents/specialized/chat.py +72 -0
- lmms-2.0.0/lmms/backend/agents/core_agents/agents/specialized/coding.py +210 -0
- lmms-2.0.0/lmms/backend/agents/core_agents/agents/specialized/git.py +10 -0
- lmms-2.0.0/lmms/backend/agents/core_agents/agents/specialized/orchestrator.py +195 -0
- lmms-2.0.0/lmms/backend/agents/core_agents/agents/specialized/reviewer.py +101 -0
- lmms-2.0.0/lmms/backend/agents/core_agents/agents/specialized/tasks.py +19 -0
- lmms-2.0.0/lmms/backend/agents/core_agents/agents/specialized/tester.py +116 -0
- lmms-2.0.0/lmms/backend/agents/core_agents/agents/specialized/universal.py +208 -0
- lmms-2.0.0/lmms/backend/agents/core_agents/agents/specialized/vision.py +49 -0
- lmms-2.0.0/lmms/backend/agents/execution.py +0 -0
- lmms-2.0.0/lmms/backend/agents/manager.py +87 -0
- lmms-2.0.0/lmms/backend/agents/memory.py +0 -0
- lmms-2.0.0/lmms/backend/agents/permissions.py +63 -0
- lmms-2.0.0/lmms/backend/agents/policies.py +0 -0
- lmms-2.0.0/lmms/backend/agents/registry.py +32 -0
- lmms-2.0.0/lmms/backend/agents/router_hooks/__init__.py +0 -0
- lmms-2.0.0/lmms/backend/agents/router_hooks/rule_based.py +22 -0
- lmms-2.0.0/lmms/backend/agents/states.py +11 -0
- lmms-2.0.0/lmms/backend/cli/__init__.py +0 -0
- lmms-2.0.0/lmms/backend/cli/checkpoints.py +187 -0
- lmms-2.0.0/lmms/backend/cli/cli.py +503 -0
- lmms-2.0.0/lmms/backend/cli/cli_commands.py +49 -0
- lmms-2.0.0/lmms/backend/cli/diagnostics.py +63 -0
- lmms-2.0.0/lmms/backend/cli/review.py +48 -0
- lmms-2.0.0/lmms/backend/cli/scope_cli.py +136 -0
- lmms-2.0.0/lmms/backend/cli/tools_cli.py +24 -0
- lmms-2.0.0/lmms/backend/context/__init__.py +0 -0
- lmms-2.0.0/lmms/backend/context/assembler.py +31 -0
- lmms-2.0.0/lmms/backend/context/budgeting.py +47 -0
- lmms-2.0.0/lmms/backend/context/builder.py +79 -0
- lmms-2.0.0/lmms/backend/context/capabilities.py +46 -0
- lmms-2.0.0/lmms/backend/context/intents.py +39 -0
- lmms-2.0.0/lmms/backend/context/ranking.py +18 -0
- lmms-2.0.0/lmms/backend/context/retrieval.py +34 -0
- lmms-2.0.0/lmms/backend/context/workspace_rules.py +29 -0
- lmms-2.0.0/lmms/backend/contracts/__init__.py +21 -0
- lmms-2.0.0/lmms/backend/contracts/cache.py +13 -0
- lmms-2.0.0/lmms/backend/contracts/generation.py +55 -0
- lmms-2.0.0/lmms/backend/contracts/inference.py +12 -0
- lmms-2.0.0/lmms/backend/contracts/loader.py +10 -0
- lmms-2.0.0/lmms/backend/contracts/memory.py +13 -0
- lmms-2.0.0/lmms/backend/contracts/profile.py +11 -0
- lmms-2.0.0/lmms/backend/contracts/provider.py +17 -0
- lmms-2.0.0/lmms/backend/contracts/runtime.py +22 -0
- lmms-2.0.0/lmms/backend/contracts/scheduler.py +14 -0
- lmms-2.0.0/lmms/backend/contracts/workspace.py +13 -0
- lmms-2.0.0/lmms/backend/core/__init__.py +0 -0
- lmms-2.0.0/lmms/backend/core/agent.py +814 -0
- lmms-2.0.0/lmms/backend/core/capabilities/__init__.py +3 -0
- lmms-2.0.0/lmms/backend/core/capabilities/registry.py +29 -0
- lmms-2.0.0/lmms/backend/core/commands.py +346 -0
- lmms-2.0.0/lmms/backend/core/context.py +28 -0
- lmms-2.0.0/lmms/backend/core/migration.py +101 -0
- lmms-2.0.0/lmms/backend/core/registry/__init__.py +4 -0
- lmms-2.0.0/lmms/backend/core/registry/model_registry.py +174 -0
- lmms-2.0.0/lmms/backend/core/registry/provider_registry.py +115 -0
- lmms-2.0.0/lmms/backend/core/registry/service.py +90 -0
- lmms-2.0.0/lmms/backend/dummy_bug.py +4 -0
- lmms-2.0.0/lmms/backend/dummy_test_bug.py +6 -0
- lmms-2.0.0/lmms/backend/git/__init__.py +0 -0
- lmms-2.0.0/lmms/backend/git/branches.py +3 -0
- lmms-2.0.0/lmms/backend/git/commits.py +3 -0
- lmms-2.0.0/lmms/backend/git/diff.py +11 -0
- lmms-2.0.0/lmms/backend/git/git_manager.py +97 -0
- lmms-2.0.0/lmms/backend/git/hooks.py +15 -0
- lmms-2.0.0/lmms/backend/git/manager.py +52 -0
- lmms-2.0.0/lmms/backend/git/memory.py +6 -0
- lmms-2.0.0/lmms/backend/git/repository.py +3 -0
- lmms-2.0.0/lmms/backend/git/timeline.py +10 -0
- lmms-2.0.0/lmms/backend/git/worktrees.py +3 -0
- lmms-2.0.0/lmms/backend/main.py +2316 -0
- lmms-2.0.0/lmms/backend/models.py +24 -0
- lmms-2.0.0/lmms/backend/providers/__init__.py +3 -0
- lmms-2.0.0/lmms/backend/providers/manager.py +51 -0
- lmms-2.0.0/lmms/backend/providers/native/__init__.py +0 -0
- lmms-2.0.0/lmms/backend/providers/native/provider.py +52 -0
- lmms-2.0.0/lmms/backend/research/__init__.py +0 -0
- lmms-2.0.0/lmms/backend/research/engine.py +125 -0
- lmms-2.0.0/lmms/backend/research/events.py +101 -0
- lmms-2.0.0/lmms/backend/research/evidence.py +64 -0
- lmms-2.0.0/lmms/backend/research/fetcher.py +104 -0
- lmms-2.0.0/lmms/backend/research/history.py +64 -0
- lmms-2.0.0/lmms/backend/research/result.py +28 -0
- lmms-2.0.0/lmms/backend/research/search_manager.py +98 -0
- lmms-2.0.0/lmms/backend/router/__init__.py +0 -0
- lmms-2.0.0/lmms/backend/router/execution_graph.py +31 -0
- lmms-2.0.0/lmms/backend/router/fallback.py +33 -0
- lmms-2.0.0/lmms/backend/router/llm_router.py +21 -0
- lmms-2.0.0/lmms/backend/router/manager.py +65 -0
- lmms-2.0.0/lmms/backend/router/memory.py +0 -0
- lmms-2.0.0/lmms/backend/router/pairs.py +74 -0
- lmms-2.0.0/lmms/backend/router/planner.py +129 -0
- lmms-2.0.0/lmms/backend/router/rule_router.py +19 -0
- lmms-2.0.0/lmms/backend/router/validator.py +22 -0
- lmms-2.0.0/lmms/backend/security/__init__.py +1 -0
- lmms-2.0.0/lmms/backend/security/command_parser.py +72 -0
- lmms-2.0.0/lmms/backend/security/defensive.py +119 -0
- lmms-2.0.0/lmms/backend/security/evidence.py +49 -0
- lmms-2.0.0/lmms/backend/security/executor.py +46 -0
- lmms-2.0.0/lmms/backend/security/models.py +40 -0
- lmms-2.0.0/lmms/backend/security/permission_manager.py +101 -0
- lmms-2.0.0/lmms/backend/security/report.py +99 -0
- lmms-2.0.0/lmms/backend/security/scope.py +51 -0
- lmms-2.0.0/lmms/backend/security/target_validator.py +55 -0
- lmms-2.0.0/lmms/backend/security/tool_registry.py +74 -0
- lmms-2.0.0/lmms/backend/services/__init__.py +0 -0
- lmms-2.0.0/lmms/backend/services/chat_event.py +46 -0
- lmms-2.0.0/lmms/backend/services/chat_service.py +342 -0
- lmms-2.0.0/lmms/backend/services/model_cache.py +159 -0
- lmms-2.0.0/lmms/backend/services/model_registry.py +4 -0
- lmms-2.0.0/lmms/backend/services/workspace_service.py +61 -0
- lmms-2.0.0/lmms/backend/tasks/__init__.py +0 -0
- lmms-2.0.0/lmms/backend/tasks/graph.py +20 -0
- lmms-2.0.0/lmms/backend/tasks/hooks.py +17 -0
- lmms-2.0.0/lmms/backend/tasks/manager.py +62 -0
- lmms-2.0.0/lmms/backend/tasks/memory.py +18 -0
- lmms-2.0.0/lmms/backend/tasks/timeline.py +20 -0
- lmms-2.0.0/lmms/backend/telemetry/__init__.py +0 -0
- lmms-2.0.0/lmms/backend/telemetry/metrics.py +0 -0
- lmms-2.0.0/lmms/backend/tools/__init__.py +8 -0
- lmms-2.0.0/lmms/backend/tools/boundaries.py +22 -0
- lmms-2.0.0/lmms/backend/tools/browser.py +516 -0
- lmms-2.0.0/lmms/backend/tools/core/__init__.py +10 -0
- lmms-2.0.0/lmms/backend/tools/core/definitions.py +21 -0
- lmms-2.0.0/lmms/backend/tools/core/executor.py +78 -0
- lmms-2.0.0/lmms/backend/tools/core/registry.py +20 -0
- lmms-2.0.0/lmms/backend/tools/core/result.py +26 -0
- lmms-2.0.0/lmms/backend/tools/files.py +175 -0
- lmms-2.0.0/lmms/backend/tools/kali_knowledge.py +68 -0
- lmms-2.0.0/lmms/backend/tools/rag.py +154 -0
- lmms-2.0.0/lmms/backend/tools/search.py +41 -0
- lmms-2.0.0/lmms/backend/tools/search_provider.py +31 -0
- lmms-2.0.0/lmms/backend/tools/terminal.py +119 -0
- lmms-2.0.0/lmms/backend/tools/vision.py +21 -0
- lmms-2.0.0/lmms/contracts/__init__.py +21 -0
- lmms-2.0.0/lmms/contracts/cache.py +13 -0
- lmms-2.0.0/lmms/contracts/inference.py +12 -0
- lmms-2.0.0/lmms/contracts/loader.py +10 -0
- lmms-2.0.0/lmms/contracts/memory.py +13 -0
- lmms-2.0.0/lmms/contracts/profile.py +11 -0
- lmms-2.0.0/lmms/contracts/provider.py +11 -0
- lmms-2.0.0/lmms/contracts/runtime.py +23 -0
- lmms-2.0.0/lmms/contracts/scheduler.py +14 -0
- lmms-2.0.0/lmms/contracts/workspace.py +13 -0
- lmms-2.0.0/lmms/engine/__init__.py +0 -0
- lmms-2.0.0/lmms/engine/air/__init__.py +6 -0
- lmms-2.0.0/lmms/engine/air/cache.py +1 -0
- lmms-2.0.0/lmms/engine/air/guardrails.py +12 -0
- lmms-2.0.0/lmms/engine/air/loader.py +65 -0
- lmms-2.0.0/lmms/engine/air/memory_map.py +0 -0
- lmms-2.0.0/lmms/engine/air/monitor.py +18 -0
- lmms-2.0.0/lmms/engine/air/pager.py +100 -0
- lmms-2.0.0/lmms/engine/air/prefetch.py +0 -0
- lmms-2.0.0/lmms/engine/air/quantization.py +0 -0
- lmms-2.0.0/lmms/engine/air/ram_cache.py +26 -0
- lmms-2.0.0/lmms/engine/air/runtime.py +81 -0
- lmms-2.0.0/lmms/engine/air/scheduler.py +37 -0
- lmms-2.0.0/lmms/engine/air/stats.py +31 -0
- lmms-2.0.0/lmms/engine/air/swapper.py +63 -0
- lmms-2.0.0/lmms/engine/benchmark.py +62 -0
- lmms-2.0.0/lmms/engine/cache_manager.py +102 -0
- lmms-2.0.0/lmms/engine/connection.py +53 -0
- lmms-2.0.0/lmms/engine/downloads_manager.py +43 -0
- lmms-2.0.0/lmms/engine/hardware.py +17 -0
- lmms-2.0.0/lmms/engine/manager.py +39 -0
- lmms-2.0.0/lmms/engine/modelfile.py +113 -0
- lmms-2.0.0/lmms/engine/profiles.py +95 -0
- lmms-2.0.0/lmms/engine/registry.py +117 -0
- lmms-2.0.0/lmms/engine/response_cleaner.py +81 -0
- lmms-2.0.0/lmms/engine/runtime_matrix.py +20 -0
- lmms-2.0.0/lmms/engine/runtimes/__init__.py +0 -0
- lmms-2.0.0/lmms/engine/runtimes/air.py +21 -0
- lmms-2.0.0/lmms/engine/runtimes/base.py +36 -0
- lmms-2.0.0/lmms/engine/runtimes/hf_vision.py +167 -0
- lmms-2.0.0/lmms/engine/runtimes/llama_cpp.py +387 -0
- lmms-2.0.0/lmms/engine/runtimes/universal_pytorch.py +251 -0
- lmms-2.0.0/lmms/engine/runtimes/vllm.py +0 -0
- lmms-2.0.0/lmms/engine/scheduler.py +146 -0
- lmms-2.0.0/lmms/engine/smart_scheduler.py +25 -0
- lmms-2.0.0/lmms/extensions/__init__.py +4 -0
- lmms-2.0.0/lmms/extensions/commands.py +76 -0
- lmms-2.0.0/lmms/extensions/host.py +190 -0
- lmms-2.0.0/lmms/extensions/installer.py +228 -0
- lmms-2.0.0/lmms/extensions/manager.py +311 -0
- lmms-2.0.0/lmms/extensions/models.py +160 -0
- lmms-2.0.0/lmms/extensions/vscode_api.py +289 -0
- lmms-2.0.0/lmms/gui/__init__.py +0 -0
- lmms-2.0.0/lmms/gui/dialogs/__init__.py +0 -0
- lmms-2.0.0/lmms/gui/dialogs/extension_permissions_dialog.py +116 -0
- lmms-2.0.0/lmms/gui/dialogs/github_auth_dialog.py +65 -0
- lmms-2.0.0/lmms/gui/dialogs/settings_dialog.py +96 -0
- lmms-2.0.0/lmms/providers/__init__.py +3 -0
- lmms-2.0.0/lmms/providers/manager.py +7 -0
- lmms-2.0.0/lmms/ui.py +222 -0
- lmms-2.0.0/setup.cfg +4 -0
- lmms-2.0.0/setup.py +64 -0
- lmms-2.0.0/tests/__init__.py +0 -0
- lmms-2.0.0/tests/test_checkpoints.py +114 -0
- lmms-2.0.0/tests/test_cli_response_contract.py +67 -0
- lmms-2.0.0/tests/test_command_parser.py +28 -0
- lmms-2.0.0/tests/test_diagnostics.py +27 -0
- lmms-2.0.0/tests/test_executor.py +40 -0
- lmms-2.0.0/tests/test_gui_chat.py +106 -0
- lmms-2.0.0/tests/test_launcher.py +15 -0
- lmms-2.0.0/tests/test_parser_edge_cases.py +49 -0
- lmms-2.0.0/tests/test_permission_manager.py +53 -0
- lmms-2.0.0/tests/test_planner.py +110 -0
- lmms-2.0.0/tests/test_pty.py +24 -0
- lmms-2.0.0/tests/test_report.py +50 -0
- lmms-2.0.0/tests/test_research.py +231 -0
- lmms-2.0.0/tests/test_review.py +44 -0
- lmms-2.0.0/tests/test_scope.py +92 -0
- lmms-2.0.0/tests/test_streaming_leak.py +84 -0
- lmms-2.0.0/tests/test_target_validator.py +29 -0
- lmms-2.0.0/tests/test_tools.py +121 -0
- lmms-2.0.0/tests/test_workspace_boundaries.py +26 -0
- 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.
|