atlas-chat 0.1.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 (256) hide show
  1. atlas_chat-0.1.0/.env.example +253 -0
  2. atlas_chat-0.1.0/PKG-INFO +236 -0
  3. atlas_chat-0.1.0/README.md +176 -0
  4. atlas_chat-0.1.0/atlas/__init__.py +40 -0
  5. atlas_chat-0.1.0/atlas/application/__init__.py +7 -0
  6. atlas_chat-0.1.0/atlas/application/chat/__init__.py +7 -0
  7. atlas_chat-0.1.0/atlas/application/chat/agent/__init__.py +10 -0
  8. atlas_chat-0.1.0/atlas/application/chat/agent/act_loop.py +179 -0
  9. atlas_chat-0.1.0/atlas/application/chat/agent/factory.py +142 -0
  10. atlas_chat-0.1.0/atlas/application/chat/agent/protocols.py +46 -0
  11. atlas_chat-0.1.0/atlas/application/chat/agent/react_loop.py +338 -0
  12. atlas_chat-0.1.0/atlas/application/chat/agent/think_act_loop.py +171 -0
  13. atlas_chat-0.1.0/atlas/application/chat/approval_manager.py +151 -0
  14. atlas_chat-0.1.0/atlas/application/chat/elicitation_manager.py +191 -0
  15. atlas_chat-0.1.0/atlas/application/chat/events/__init__.py +1 -0
  16. atlas_chat-0.1.0/atlas/application/chat/events/agent_event_relay.py +112 -0
  17. atlas_chat-0.1.0/atlas/application/chat/modes/__init__.py +1 -0
  18. atlas_chat-0.1.0/atlas/application/chat/modes/agent.py +125 -0
  19. atlas_chat-0.1.0/atlas/application/chat/modes/plain.py +74 -0
  20. atlas_chat-0.1.0/atlas/application/chat/modes/rag.py +81 -0
  21. atlas_chat-0.1.0/atlas/application/chat/modes/tools.py +179 -0
  22. atlas_chat-0.1.0/atlas/application/chat/orchestrator.py +213 -0
  23. atlas_chat-0.1.0/atlas/application/chat/policies/__init__.py +1 -0
  24. atlas_chat-0.1.0/atlas/application/chat/policies/tool_authorization.py +99 -0
  25. atlas_chat-0.1.0/atlas/application/chat/preprocessors/__init__.py +1 -0
  26. atlas_chat-0.1.0/atlas/application/chat/preprocessors/message_builder.py +92 -0
  27. atlas_chat-0.1.0/atlas/application/chat/preprocessors/prompt_override_service.py +104 -0
  28. atlas_chat-0.1.0/atlas/application/chat/service.py +454 -0
  29. atlas_chat-0.1.0/atlas/application/chat/utilities/__init__.py +6 -0
  30. atlas_chat-0.1.0/atlas/application/chat/utilities/error_handler.py +367 -0
  31. atlas_chat-0.1.0/atlas/application/chat/utilities/event_notifier.py +546 -0
  32. atlas_chat-0.1.0/atlas/application/chat/utilities/file_processor.py +613 -0
  33. atlas_chat-0.1.0/atlas/application/chat/utilities/tool_executor.py +789 -0
  34. atlas_chat-0.1.0/atlas/atlas_chat_cli.py +347 -0
  35. atlas_chat-0.1.0/atlas/atlas_client.py +238 -0
  36. atlas_chat-0.1.0/atlas/core/__init__.py +0 -0
  37. atlas_chat-0.1.0/atlas/core/auth.py +205 -0
  38. atlas_chat-0.1.0/atlas/core/authorization_manager.py +27 -0
  39. atlas_chat-0.1.0/atlas/core/capabilities.py +123 -0
  40. atlas_chat-0.1.0/atlas/core/compliance.py +215 -0
  41. atlas_chat-0.1.0/atlas/core/domain_whitelist.py +147 -0
  42. atlas_chat-0.1.0/atlas/core/domain_whitelist_middleware.py +82 -0
  43. atlas_chat-0.1.0/atlas/core/http_client.py +28 -0
  44. atlas_chat-0.1.0/atlas/core/log_sanitizer.py +102 -0
  45. atlas_chat-0.1.0/atlas/core/metrics_logger.py +59 -0
  46. atlas_chat-0.1.0/atlas/core/middleware.py +131 -0
  47. atlas_chat-0.1.0/atlas/core/otel_config.py +242 -0
  48. atlas_chat-0.1.0/atlas/core/prompt_risk.py +200 -0
  49. atlas_chat-0.1.0/atlas/core/rate_limit.py +0 -0
  50. atlas_chat-0.1.0/atlas/core/rate_limit_middleware.py +64 -0
  51. atlas_chat-0.1.0/atlas/core/security_headers_middleware.py +51 -0
  52. atlas_chat-0.1.0/atlas/domain/__init__.py +37 -0
  53. atlas_chat-0.1.0/atlas/domain/chat/__init__.py +1 -0
  54. atlas_chat-0.1.0/atlas/domain/chat/dtos.py +85 -0
  55. atlas_chat-0.1.0/atlas/domain/errors.py +96 -0
  56. atlas_chat-0.1.0/atlas/domain/messages/__init__.py +12 -0
  57. atlas_chat-0.1.0/atlas/domain/messages/models.py +160 -0
  58. atlas_chat-0.1.0/atlas/domain/rag_mcp_service.py +664 -0
  59. atlas_chat-0.1.0/atlas/domain/sessions/__init__.py +7 -0
  60. atlas_chat-0.1.0/atlas/domain/sessions/models.py +36 -0
  61. atlas_chat-0.1.0/atlas/domain/unified_rag_service.py +371 -0
  62. atlas_chat-0.1.0/atlas/infrastructure/__init__.py +10 -0
  63. atlas_chat-0.1.0/atlas/infrastructure/app_factory.py +135 -0
  64. atlas_chat-0.1.0/atlas/infrastructure/events/__init__.py +1 -0
  65. atlas_chat-0.1.0/atlas/infrastructure/events/cli_event_publisher.py +140 -0
  66. atlas_chat-0.1.0/atlas/infrastructure/events/websocket_publisher.py +140 -0
  67. atlas_chat-0.1.0/atlas/infrastructure/sessions/in_memory_repository.py +56 -0
  68. atlas_chat-0.1.0/atlas/infrastructure/transport/__init__.py +7 -0
  69. atlas_chat-0.1.0/atlas/infrastructure/transport/websocket_connection_adapter.py +33 -0
  70. atlas_chat-0.1.0/atlas/init_cli.py +226 -0
  71. atlas_chat-0.1.0/atlas/interfaces/__init__.py +15 -0
  72. atlas_chat-0.1.0/atlas/interfaces/events.py +134 -0
  73. atlas_chat-0.1.0/atlas/interfaces/llm.py +54 -0
  74. atlas_chat-0.1.0/atlas/interfaces/rag.py +40 -0
  75. atlas_chat-0.1.0/atlas/interfaces/sessions.py +75 -0
  76. atlas_chat-0.1.0/atlas/interfaces/tools.py +57 -0
  77. atlas_chat-0.1.0/atlas/interfaces/transport.py +24 -0
  78. atlas_chat-0.1.0/atlas/main.py +564 -0
  79. atlas_chat-0.1.0/atlas/mcp/api_key_demo/README.md +76 -0
  80. atlas_chat-0.1.0/atlas/mcp/api_key_demo/main.py +172 -0
  81. atlas_chat-0.1.0/atlas/mcp/api_key_demo/run.sh +56 -0
  82. atlas_chat-0.1.0/atlas/mcp/basictable/main.py +147 -0
  83. atlas_chat-0.1.0/atlas/mcp/calculator/main.py +149 -0
  84. atlas_chat-0.1.0/atlas/mcp/code-executor/execution_engine.py +98 -0
  85. atlas_chat-0.1.0/atlas/mcp/code-executor/execution_environment.py +95 -0
  86. atlas_chat-0.1.0/atlas/mcp/code-executor/main.py +528 -0
  87. atlas_chat-0.1.0/atlas/mcp/code-executor/result_processing.py +276 -0
  88. atlas_chat-0.1.0/atlas/mcp/code-executor/script_generation.py +195 -0
  89. atlas_chat-0.1.0/atlas/mcp/code-executor/security_checker.py +140 -0
  90. atlas_chat-0.1.0/atlas/mcp/corporate_cars/main.py +437 -0
  91. atlas_chat-0.1.0/atlas/mcp/csv_reporter/main.py +545 -0
  92. atlas_chat-0.1.0/atlas/mcp/duckduckgo/main.py +182 -0
  93. atlas_chat-0.1.0/atlas/mcp/elicitation_demo/README.md +171 -0
  94. atlas_chat-0.1.0/atlas/mcp/elicitation_demo/main.py +262 -0
  95. atlas_chat-0.1.0/atlas/mcp/env-demo/README.md +158 -0
  96. atlas_chat-0.1.0/atlas/mcp/env-demo/main.py +199 -0
  97. atlas_chat-0.1.0/atlas/mcp/file_size_test/main.py +284 -0
  98. atlas_chat-0.1.0/atlas/mcp/filesystem/main.py +348 -0
  99. atlas_chat-0.1.0/atlas/mcp/image_demo/main.py +113 -0
  100. atlas_chat-0.1.0/atlas/mcp/image_demo/requirements.txt +4 -0
  101. atlas_chat-0.1.0/atlas/mcp/logging_demo/README.md +72 -0
  102. atlas_chat-0.1.0/atlas/mcp/logging_demo/main.py +103 -0
  103. atlas_chat-0.1.0/atlas/mcp/many_tools_demo/main.py +50 -0
  104. atlas_chat-0.1.0/atlas/mcp/order_database/__init__.py +0 -0
  105. atlas_chat-0.1.0/atlas/mcp/order_database/main.py +369 -0
  106. atlas_chat-0.1.0/atlas/mcp/order_database/signal_data.csv +1001 -0
  107. atlas_chat-0.1.0/atlas/mcp/pdfbasic/main.py +394 -0
  108. atlas_chat-0.1.0/atlas/mcp/pptx_generator/main.py +760 -0
  109. atlas_chat-0.1.0/atlas/mcp/pptx_generator/requirements.txt +13 -0
  110. atlas_chat-0.1.0/atlas/mcp/pptx_generator/run_test.sh +1 -0
  111. atlas_chat-0.1.0/atlas/mcp/pptx_generator/test_pptx_generator_security.py +169 -0
  112. atlas_chat-0.1.0/atlas/mcp/progress_demo/main.py +167 -0
  113. atlas_chat-0.1.0/atlas/mcp/progress_updates_demo/QUICKSTART.md +273 -0
  114. atlas_chat-0.1.0/atlas/mcp/progress_updates_demo/README.md +120 -0
  115. atlas_chat-0.1.0/atlas/mcp/progress_updates_demo/main.py +497 -0
  116. atlas_chat-0.1.0/atlas/mcp/prompts/main.py +222 -0
  117. atlas_chat-0.1.0/atlas/mcp/public_demo/main.py +189 -0
  118. atlas_chat-0.1.0/atlas/mcp/sampling_demo/README.md +169 -0
  119. atlas_chat-0.1.0/atlas/mcp/sampling_demo/main.py +234 -0
  120. atlas_chat-0.1.0/atlas/mcp/thinking/main.py +77 -0
  121. atlas_chat-0.1.0/atlas/mcp/tool_planner/main.py +240 -0
  122. atlas_chat-0.1.0/atlas/mcp/ui-demo/badmesh.png +0 -0
  123. atlas_chat-0.1.0/atlas/mcp/ui-demo/main.py +383 -0
  124. atlas_chat-0.1.0/atlas/mcp/ui-demo/templates/button_demo.html +32 -0
  125. atlas_chat-0.1.0/atlas/mcp/ui-demo/templates/data_visualization.html +32 -0
  126. atlas_chat-0.1.0/atlas/mcp/ui-demo/templates/form_demo.html +28 -0
  127. atlas_chat-0.1.0/atlas/mcp/username-override-demo/README.md +320 -0
  128. atlas_chat-0.1.0/atlas/mcp/username-override-demo/main.py +308 -0
  129. atlas_chat-0.1.0/atlas/modules/__init__.py +0 -0
  130. atlas_chat-0.1.0/atlas/modules/config/__init__.py +34 -0
  131. atlas_chat-0.1.0/atlas/modules/config/cli.py +231 -0
  132. atlas_chat-0.1.0/atlas/modules/config/config_manager.py +1096 -0
  133. atlas_chat-0.1.0/atlas/modules/file_storage/__init__.py +22 -0
  134. atlas_chat-0.1.0/atlas/modules/file_storage/cli.py +330 -0
  135. atlas_chat-0.1.0/atlas/modules/file_storage/content_extractor.py +290 -0
  136. atlas_chat-0.1.0/atlas/modules/file_storage/manager.py +295 -0
  137. atlas_chat-0.1.0/atlas/modules/file_storage/mock_s3_client.py +402 -0
  138. atlas_chat-0.1.0/atlas/modules/file_storage/s3_client.py +417 -0
  139. atlas_chat-0.1.0/atlas/modules/llm/__init__.py +19 -0
  140. atlas_chat-0.1.0/atlas/modules/llm/caller.py +287 -0
  141. atlas_chat-0.1.0/atlas/modules/llm/litellm_caller.py +675 -0
  142. atlas_chat-0.1.0/atlas/modules/llm/models.py +19 -0
  143. atlas_chat-0.1.0/atlas/modules/mcp_tools/__init__.py +17 -0
  144. atlas_chat-0.1.0/atlas/modules/mcp_tools/client.py +2123 -0
  145. atlas_chat-0.1.0/atlas/modules/mcp_tools/token_storage.py +556 -0
  146. atlas_chat-0.1.0/atlas/modules/prompts/prompt_provider.py +130 -0
  147. atlas_chat-0.1.0/atlas/modules/rag/__init__.py +24 -0
  148. atlas_chat-0.1.0/atlas/modules/rag/atlas_rag_client.py +336 -0
  149. atlas_chat-0.1.0/atlas/modules/rag/client.py +129 -0
  150. atlas_chat-0.1.0/atlas/routes/admin_routes.py +865 -0
  151. atlas_chat-0.1.0/atlas/routes/config_routes.py +484 -0
  152. atlas_chat-0.1.0/atlas/routes/feedback_routes.py +361 -0
  153. atlas_chat-0.1.0/atlas/routes/files_routes.py +274 -0
  154. atlas_chat-0.1.0/atlas/routes/health_routes.py +40 -0
  155. atlas_chat-0.1.0/atlas/routes/mcp_auth_routes.py +223 -0
  156. atlas_chat-0.1.0/atlas/server_cli.py +164 -0
  157. atlas_chat-0.1.0/atlas/tests/conftest.py +20 -0
  158. atlas_chat-0.1.0/atlas/tests/integration/test_mcp_auth_integration.py +152 -0
  159. atlas_chat-0.1.0/atlas/tests/manual_test_sampling.py +87 -0
  160. atlas_chat-0.1.0/atlas/tests/modules/mcp_tools/test_client_auth.py +226 -0
  161. atlas_chat-0.1.0/atlas/tests/modules/mcp_tools/test_client_env.py +191 -0
  162. atlas_chat-0.1.0/atlas/tests/test_admin_mcp_server_management_routes.py +141 -0
  163. atlas_chat-0.1.0/atlas/tests/test_agent_roa.py +135 -0
  164. atlas_chat-0.1.0/atlas/tests/test_app_factory_smoke.py +47 -0
  165. atlas_chat-0.1.0/atlas/tests/test_approval_manager.py +439 -0
  166. atlas_chat-0.1.0/atlas/tests/test_atlas_client.py +188 -0
  167. atlas_chat-0.1.0/atlas/tests/test_atlas_rag_client.py +447 -0
  168. atlas_chat-0.1.0/atlas/tests/test_atlas_rag_integration.py +224 -0
  169. atlas_chat-0.1.0/atlas/tests/test_attach_file_flow.py +287 -0
  170. atlas_chat-0.1.0/atlas/tests/test_auth_utils.py +165 -0
  171. atlas_chat-0.1.0/atlas/tests/test_backend_public_url.py +185 -0
  172. atlas_chat-0.1.0/atlas/tests/test_banner_logging.py +287 -0
  173. atlas_chat-0.1.0/atlas/tests/test_capability_tokens_and_injection.py +203 -0
  174. atlas_chat-0.1.0/atlas/tests/test_compliance_level.py +54 -0
  175. atlas_chat-0.1.0/atlas/tests/test_compliance_manager.py +253 -0
  176. atlas_chat-0.1.0/atlas/tests/test_config_manager.py +617 -0
  177. atlas_chat-0.1.0/atlas/tests/test_config_manager_paths.py +12 -0
  178. atlas_chat-0.1.0/atlas/tests/test_core_auth.py +18 -0
  179. atlas_chat-0.1.0/atlas/tests/test_core_utils.py +190 -0
  180. atlas_chat-0.1.0/atlas/tests/test_docker_env_sync.py +202 -0
  181. atlas_chat-0.1.0/atlas/tests/test_domain_errors.py +329 -0
  182. atlas_chat-0.1.0/atlas/tests/test_domain_whitelist.py +359 -0
  183. atlas_chat-0.1.0/atlas/tests/test_elicitation_manager.py +408 -0
  184. atlas_chat-0.1.0/atlas/tests/test_elicitation_routing.py +296 -0
  185. atlas_chat-0.1.0/atlas/tests/test_env_demo_server.py +88 -0
  186. atlas_chat-0.1.0/atlas/tests/test_error_classification.py +113 -0
  187. atlas_chat-0.1.0/atlas/tests/test_error_flow_integration.py +116 -0
  188. atlas_chat-0.1.0/atlas/tests/test_feedback_routes.py +333 -0
  189. atlas_chat-0.1.0/atlas/tests/test_file_content_extraction.py +1134 -0
  190. atlas_chat-0.1.0/atlas/tests/test_file_extraction_routes.py +158 -0
  191. atlas_chat-0.1.0/atlas/tests/test_file_library.py +107 -0
  192. atlas_chat-0.1.0/atlas/tests/test_file_manager_unit.py +18 -0
  193. atlas_chat-0.1.0/atlas/tests/test_health_route.py +49 -0
  194. atlas_chat-0.1.0/atlas/tests/test_http_client_stub.py +8 -0
  195. atlas_chat-0.1.0/atlas/tests/test_imports_smoke.py +30 -0
  196. atlas_chat-0.1.0/atlas/tests/test_interfaces_llm_response.py +9 -0
  197. atlas_chat-0.1.0/atlas/tests/test_issue_access_denied_fix.py +136 -0
  198. atlas_chat-0.1.0/atlas/tests/test_llm_env_expansion.py +836 -0
  199. atlas_chat-0.1.0/atlas/tests/test_log_level_sensitive_data.py +285 -0
  200. atlas_chat-0.1.0/atlas/tests/test_mcp_auth_routes.py +341 -0
  201. atlas_chat-0.1.0/atlas/tests/test_mcp_client_auth.py +331 -0
  202. atlas_chat-0.1.0/atlas/tests/test_mcp_data_injection.py +270 -0
  203. atlas_chat-0.1.0/atlas/tests/test_mcp_get_authorized_servers.py +95 -0
  204. atlas_chat-0.1.0/atlas/tests/test_mcp_hot_reload.py +512 -0
  205. atlas_chat-0.1.0/atlas/tests/test_mcp_image_content.py +424 -0
  206. atlas_chat-0.1.0/atlas/tests/test_mcp_logging.py +172 -0
  207. atlas_chat-0.1.0/atlas/tests/test_mcp_progress_updates.py +313 -0
  208. atlas_chat-0.1.0/atlas/tests/test_mcp_prompt_override_system_prompt.py +102 -0
  209. atlas_chat-0.1.0/atlas/tests/test_mcp_prompts_server.py +39 -0
  210. atlas_chat-0.1.0/atlas/tests/test_mcp_tool_result_parsing.py +296 -0
  211. atlas_chat-0.1.0/atlas/tests/test_metrics_logger.py +56 -0
  212. atlas_chat-0.1.0/atlas/tests/test_middleware_auth.py +379 -0
  213. atlas_chat-0.1.0/atlas/tests/test_prompt_risk_and_acl.py +141 -0
  214. atlas_chat-0.1.0/atlas/tests/test_rag_mcp_aggregator.py +204 -0
  215. atlas_chat-0.1.0/atlas/tests/test_rag_mcp_service.py +224 -0
  216. atlas_chat-0.1.0/atlas/tests/test_rate_limit_middleware.py +45 -0
  217. atlas_chat-0.1.0/atlas/tests/test_routes_config_smoke.py +60 -0
  218. atlas_chat-0.1.0/atlas/tests/test_routes_files_download_token.py +41 -0
  219. atlas_chat-0.1.0/atlas/tests/test_routes_files_health.py +18 -0
  220. atlas_chat-0.1.0/atlas/tests/test_runtime_imports.py +53 -0
  221. atlas_chat-0.1.0/atlas/tests/test_sampling_integration.py +482 -0
  222. atlas_chat-0.1.0/atlas/tests/test_security_admin_routes.py +61 -0
  223. atlas_chat-0.1.0/atlas/tests/test_security_capability_tokens.py +65 -0
  224. atlas_chat-0.1.0/atlas/tests/test_security_file_stats_scope.py +21 -0
  225. atlas_chat-0.1.0/atlas/tests/test_security_header_injection.py +191 -0
  226. atlas_chat-0.1.0/atlas/tests/test_security_headers_and_filename.py +63 -0
  227. atlas_chat-0.1.0/atlas/tests/test_shared_session_repository.py +101 -0
  228. atlas_chat-0.1.0/atlas/tests/test_system_prompt_loading.py +181 -0
  229. atlas_chat-0.1.0/atlas/tests/test_token_storage.py +505 -0
  230. atlas_chat-0.1.0/atlas/tests/test_tool_approval_config.py +93 -0
  231. atlas_chat-0.1.0/atlas/tests/test_tool_approval_utils.py +356 -0
  232. atlas_chat-0.1.0/atlas/tests/test_tool_authorization_group_filtering.py +223 -0
  233. atlas_chat-0.1.0/atlas/tests/test_tool_details_in_config.py +108 -0
  234. atlas_chat-0.1.0/atlas/tests/test_tool_planner.py +300 -0
  235. atlas_chat-0.1.0/atlas/tests/test_unified_rag_service.py +398 -0
  236. atlas_chat-0.1.0/atlas/tests/test_username_override_in_approval.py +258 -0
  237. atlas_chat-0.1.0/atlas/tests/test_websocket_auth_header.py +168 -0
  238. atlas_chat-0.1.0/atlas/version.py +6 -0
  239. atlas_chat-0.1.0/atlas_chat.egg-info/PKG-INFO +236 -0
  240. atlas_chat-0.1.0/atlas_chat.egg-info/SOURCES.txt +254 -0
  241. atlas_chat-0.1.0/atlas_chat.egg-info/dependency_links.txt +1 -0
  242. atlas_chat-0.1.0/atlas_chat.egg-info/entry_points.txt +4 -0
  243. atlas_chat-0.1.0/atlas_chat.egg-info/requires.txt +39 -0
  244. atlas_chat-0.1.0/atlas_chat.egg-info/top_level.txt +1 -0
  245. atlas_chat-0.1.0/config/defaults/compliance-levels.json +44 -0
  246. atlas_chat-0.1.0/config/defaults/domain-whitelist.json +123 -0
  247. atlas_chat-0.1.0/config/defaults/file-extractors.json +74 -0
  248. atlas_chat-0.1.0/config/defaults/help-config.json +198 -0
  249. atlas_chat-0.1.0/config/defaults/llmconfig-buggy.yml +11 -0
  250. atlas_chat-0.1.0/config/defaults/llmconfig.yml +19 -0
  251. atlas_chat-0.1.0/config/defaults/mcp.json +138 -0
  252. atlas_chat-0.1.0/config/defaults/rag-sources.json +17 -0
  253. atlas_chat-0.1.0/config/defaults/splash-config.json +16 -0
  254. atlas_chat-0.1.0/pyproject.toml +112 -0
  255. atlas_chat-0.1.0/setup.cfg +4 -0
  256. atlas_chat-0.1.0/test/test_mcp_api_key_e2e.py +388 -0
@@ -0,0 +1,253 @@
1
+ #############################################
2
+ # Core / Development
3
+ #############################################
4
+ # Development mode - skip authentication when true
5
+ DEBUG_MODE=true
6
+
7
+ #############################################
8
+ # RAG Configuration
9
+ # Enable RAG (Retrieval-Augmented Generation) feature
10
+ # Configure RAG sources in config/overrides/rag-sources.json
11
+ # See docs/admin/external-rag-api.md for configuration details
12
+ #############################################
13
+ FEATURE_RAG_ENABLED=false
14
+
15
+ # RAG source secrets (referenced in rag-sources.json via ${ENV_VAR} syntax)
16
+ # ATLAS_RAG_URL=https://your-atlas-rag-api.example.com
17
+ # ATLAS_RAG_BEARER_TOKEN=your-api-key-here
18
+
19
+ # Server configuration
20
+ PORT=8000
21
+ APP_NAME=ATLAS
22
+
23
+ # Network binding configuration
24
+ # ATLAS_HOST controls which network interface the server binds to
25
+ # Default: 127.0.0.1 (localhost only, secure)
26
+ # Set to 0.0.0.0 for production deployments that need external access
27
+ # ATLAS_HOST=127.0.0.1
28
+
29
+ # Authentication configuration
30
+ # Header name to extract authenticated username from reverse proxy
31
+ # Different reverse proxy setups use different header names (e.g., X-User-Email, X-Authenticated-User, X-Remote-User)
32
+ # Default: X-User-Email
33
+ # AUTH_USER_HEADER=X-User-Email
34
+
35
+ # Proxy secret authentication (optional security layer)
36
+ # When enabled, the reverse proxy must include a secret header to authenticate itself
37
+ # This ensures the application only accepts requests from the trusted reverse proxy
38
+ # FEATURE_PROXY_SECRET_ENABLED=false
39
+ # PROXY_SECRET_HEADER=X-Proxy-Secret
40
+ # PROXY_SECRET=your-secure-random-secret-here
41
+ # AUTH_REDIRECT_URL=/a
42
+ # API Keys for LLM services
43
+ OPENAI_API_KEY=sk-pro
44
+ ANTHROPIC_API_KEY=your_anthropic_api_key_here
45
+ GOOGLE_API_KEY=your_google_api_key_here
46
+ OPENROUTER_API_KEY=sk-or
47
+ CEREBRAS_API_KEY=your_cerebras_api_key_here
48
+ GROQ_API_KEY=your-groq_api_key_here
49
+
50
+
51
+ # Banner system configuration
52
+ BANNER_ENABLED=true
53
+
54
+
55
+ # Example .env configuration for OpenTelemetry logging
56
+
57
+ # Environment mode (development or production)
58
+ ENVIRONMENT=development
59
+
60
+ #############################################
61
+ # UI / Frontend
62
+ #############################################
63
+
64
+ # Frontend build-time app name (Vite will inject this into index.html)
65
+ VITE_APP_NAME=ATLAS
66
+
67
+ # Frontend build-time flag to show the "Powered By Sandia ATLAS" badge
68
+ # on the welcome screen. Other deployments can set this to false
69
+ # to hide the badge while still customizing the main logo.
70
+ VITE_FEATURE_POWERED_BY_ATLAS=false
71
+
72
+ # OpenTelemetry configuration (optional - for future use)
73
+ # OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317
74
+ # OTEL_SERVICE_NAME=atlas-ui-3-backend
75
+ # OTEL_SERVICE_VERSION=1.0.0
76
+
77
+ # Log level configuration (DEBUG, INFO, WARNING, ERROR, CRITICAL)
78
+ # Controls verbosity of application logs and sensitive data logging
79
+ # - DEBUG: Verbose logging including user input/output content (for development/testing only)
80
+ # - INFO: Standard logging with metrics and counts, but no sensitive content (recommended for production)
81
+ # - WARNING/ERROR/CRITICAL: Minimal logging, errors and warnings only
82
+ LOG_LEVEL=INFO
83
+
84
+ # Metrics logging configuration
85
+ # Enable tracking of user activities without capturing sensitive data
86
+ # When enabled, logs contain only metadata (counts, sizes, types)
87
+ # Excludes prompts, tool arguments, file names, and error details
88
+ FEATURE_METRICS_LOGGING_ENABLED=false
89
+
90
+ # Suppress LiteLLM verbose logging (independent of LOG_LEVEL)
91
+ # When true, sets LITELLM_LOG=ERROR to silence LiteLLM's noisy stdout/debug output
92
+ # When false, LiteLLM uses its default logging behavior
93
+ FEATURE_SUPPRESS_LITELLM_LOGGING=true
94
+
95
+ USE_NEW_FRONTEND=true
96
+
97
+ #############################################
98
+ # Feature Flags (rollout controls)
99
+ # Toggle advanced capabilities without changing code.
100
+ # Set to true to enable in UI + API; false hides & suppresses data.
101
+ # These are initialized to reflect your current enabled features.
102
+ #############################################
103
+ # Workspace selector (none configured yet)
104
+ FEATURE_WORKSPACES_ENABLED=false
105
+ # Note: RAG is controlled by RAG_PROVIDER setting (see above)
106
+ # MCP / tools panel
107
+ FEATURE_TOOLS_ENABLED=true
108
+ # Marketplace browsing (disabled)
109
+ FEATURE_MARKETPLACE_ENABLED=true
110
+ # Uploaded/session files panel
111
+ FEATURE_FILES_PANEL_ENABLED=true
112
+ # Previous chat history list
113
+ FEATURE_CHAT_HISTORY_ENABLED=false
114
+ # Compliance level filtering for MCP servers and data sources
115
+ FEATURE_COMPLIANCE_LEVELS_ENABLED=false
116
+ # Startup splash screen for displaying policies and information
117
+ FEATURE_SPLASH_SCREEN_ENABLED=false
118
+ # Restrict access to whitelisted email domains (config/defaults/domain-whitelist.json)
119
+ FEATURE_DOMAIN_WHITELIST_ENABLED=false
120
+ # Enable automatic reconnection to failed MCP servers with exponential backoff
121
+ FEATURE_MCP_AUTO_RECONNECT_ENABLED=false
122
+ # Enable automatic file content extraction for uploaded PDFs/images
123
+ # Requires running the file extractor mock service: python mocks/file-extractor-mock/main.py
124
+ FEATURE_FILE_CONTENT_EXTRACTION_ENABLED=false
125
+
126
+ #############################################
127
+ # File Content Extraction Service Configuration
128
+ # These are optional - only needed when using external extraction services
129
+ # The mock extractor service works without these credentials
130
+ #############################################
131
+ # PDF extractor service credentials (optional for mock service)
132
+ # PDF_EXTRACTOR_API_KEY=your_pdf_extractor_api_key_here
133
+ # PDF_EXTRACTOR_CLIENT_ID=your_pdf_extractor_client_id_here
134
+ # Image vision extractor service credentials (optional for mock service)
135
+ # IMAGE_EXTRACTOR_API_KEY=your_image_extractor_api_key_here
136
+ # OCR extractor service credentials (optional for mock service)
137
+ # OCR_EXTRACTOR_API_KEY=your_ocr_extractor_api_key_here
138
+
139
+ # (Adjust above to stage rollouts. For a bare-bones chat set them all to false.)
140
+
141
+ #############################################
142
+ # MCP Auto-Reconnect Settings
143
+ # These settings control the automatic reconnection behavior for failed MCP servers.
144
+ # Only active when FEATURE_MCP_AUTO_RECONNECT_ENABLED=true
145
+ #############################################
146
+ # Base interval in seconds between reconnect attempts (default: 60)
147
+ # MCP_RECONNECT_INTERVAL=60
148
+ # Maximum interval in seconds (caps exponential backoff, default: 300)
149
+ # MCP_RECONNECT_MAX_INTERVAL=300
150
+ # Multiplier for exponential backoff (default: 2.0)
151
+ # MCP_RECONNECT_BACKOFF_MULTIPLIER=2.0
152
+
153
+ #############################################
154
+ # MCP Timeouts
155
+ # Timeout in seconds for MCP discovery calls - list_tools, list_prompts (default: 30)
156
+ MCP_DISCOVERY_TIMEOUT=30
157
+ # Timeout in seconds for MCP tool calls (default: 120)
158
+ MCP_CALL_TIMEOUT=120
159
+ #############################################
160
+
161
+ #############################################
162
+ # MCP Per-User Token Storage
163
+ # Encryption key for storing user API keys/tokens for MCP servers
164
+ # If not set, an ephemeral key is generated and tokens won't persist across restarts
165
+ #############################################
166
+ # MCP_TOKEN_ENCRYPTION_KEY=your-random-string-at-least-32-chars
167
+ # Directory to store encrypted tokens (default: config/secure/)
168
+ # MCP_TOKEN_STORAGE_DIR=config/secure
169
+
170
+ #############################################
171
+ # Configuration File Names
172
+ # Override the default names for configuration files.
173
+ # Useful for testing or managing multiple configurations.
174
+ #############################################
175
+ # Splash screen configuration file name
176
+ # SPLASH_CONFIG_FILE=splash-config.json
177
+ # MCP servers configuration file name
178
+ # MCP_CONFIG_FILE=mcp.json
179
+ # LLM models configuration file name
180
+ # LLM_CONFIG_FILE=llmconfig.yml
181
+ # Help page configuration file name
182
+ # HELP_CONFIG_FILE=help-config.json
183
+
184
+
185
+ # ths might be need for mcp serves to know where to download the files.
186
+ # CHATUI_BACKEND_BASE_URL=http://127.0.0.1:8000
187
+
188
+ #############################################
189
+ # File Access for Remote MCP Servers
190
+ #############################################
191
+ # Public URL of the backend API for file downloads by remote MCP servers
192
+ # This should be the publicly accessible URL (including protocol and port if non-standard)
193
+ # Examples:
194
+ # - Production: https://atlas-ui.example.com
195
+ # - Development: http://localhost:8000
196
+ # - With non-standard port: https://atlas-ui.example.com:8443
197
+ # If not set, relative URLs will be used (only works for local/stdio servers on the same machine)
198
+ # BACKEND_PUBLIC_URL=https://atlas-ui.example.com
199
+
200
+ # Whether to include base64 encoded file content as fallback in tool arguments
201
+ # This allows MCP servers to access files even if they cannot reach the backend URL
202
+ # WARNING: Enabling this can significantly increase message sizes for large files
203
+ # Default: false (recommended - use URL-based access instead)
204
+ # INCLUDE_FILE_CONTENT_BASE64=false
205
+
206
+
207
+ # Agent mode configuration
208
+ AGENT_MAX_STEPS=30
209
+ AGENT_DEFAULT_ENABLED=true
210
+ # Agent mode availability (renamed to align with other FEATURE_* flags)
211
+ FEATURE_AGENT_MODE_AVAILABLE=true
212
+ # Agent loop strategy: react (structured reasoning) or think-act (faster, concise)
213
+ AGENT_LOOP_STRATEGY=think-act
214
+
215
+ # Tool approval configuration
216
+ # Require approval by default for all tools (can be overridden per-tool in mcp.json)
217
+ REQUIRE_TOOL_APPROVAL_BY_DEFAULT=false
218
+ # Force approval for all tools (admin-enforced) regardless of per-tool or default settings
219
+ # Set to true to require approval for every tool call
220
+ FORCE_TOOL_APPROVAL_GLOBALLY=false
221
+
222
+ # APP_LOG_DIR defaults to <project_root>/logs when unset
223
+ # APP_LOG_DIR=/path/to/logs
224
+
225
+ CAPABILITY_TOKEN_SECRET=blablah
226
+
227
+ #############################################
228
+ # S3/MinIO Storage Configuration
229
+ #############################################
230
+ # Choose ONE option below (comment out the other)
231
+
232
+ # --- Option 1: Mock S3 (Default - No Docker required) ---
233
+ USE_MOCK_S3=true
234
+
235
+ # --- Option 2: MinIO (Requires Docker) ---
236
+ # Uncomment below and set USE_MOCK_S3=false to use MinIO
237
+ # USE_MOCK_S3=false
238
+ # S3_ENDPOINT=http://localhost:9000
239
+ # # Must match bucket created in docker-compose.yml
240
+ # S3_BUCKET_NAME=atlas-files
241
+ # S3_ACCESS_KEY=minioadmin
242
+ # S3_SECRET_KEY=minioadmin
243
+ # S3_REGION=us-east-1
244
+ # S3_TIMEOUT=30
245
+ # S3_USE_SSL=false
246
+
247
+
248
+ # Content Security Policy (CSP) configuration
249
+ # IMPORTANT: To allow external URLs in iframes (for MCP tools that use iframe display),
250
+ # add the URLs to the frame-src directive. Example:
251
+ # SECURITY_CSP_VALUE="... frame-src 'self' blob: data: https://example.com https://dashboard.example.com; ..."
252
+ # HERE the www.sandia.gov is added as an allowed iframe source.
253
+ SECURITY_CSP_VALUE="default-src 'self'; img-src 'self' data: blob:; script-src 'self'; style-src 'self' 'unsafe-inline'; connect-src 'self'; frame-src 'self' blob: data: https://www.sandia.gov; frame-ancestors 'self'"
@@ -0,0 +1,236 @@
1
+ Metadata-Version: 2.4
2
+ Name: atlas-chat
3
+ Version: 0.1.0
4
+ Summary: Full-stack LLM chat interface with Model Context Protocol (MCP) integration
5
+ Author: Sandia National Laboratories
6
+ License: MIT
7
+ Project-URL: Homepage, https://github.com/sandialabs/atlas
8
+ Project-URL: Documentation, https://github.com/sandialabs/atlas/tree/main/docs
9
+ Project-URL: Repository, https://github.com/sandialabs/atlas
10
+ Project-URL: Issues, https://github.com/sandialabs/atlas/issues
11
+ Keywords: llm,chat,mcp,ai,anthropic,openai,gemini
12
+ Classifier: Development Status :: 4 - Beta
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: License :: OSI Approved :: MIT License
15
+ Classifier: Operating System :: OS Independent
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Programming Language :: Python :: 3.11
18
+ Classifier: Programming Language :: Python :: 3.12
19
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
20
+ Requires-Python: >=3.11
21
+ Description-Content-Type: text/markdown
22
+ Requires-Dist: beautifulsoup4
23
+ Requires-Dist: boto3>=1.34.0
24
+ Requires-Dist: bs4
25
+ Requires-Dist: cryptography
26
+ Requires-Dist: duckduckgo-search
27
+ Requires-Dist: fastapi
28
+ Requires-Dist: fastmcp>=2.10.0
29
+ Requires-Dist: httpx
30
+ Requires-Dist: litellm
31
+ Requires-Dist: matplotlib
32
+ Requires-Dist: numpy
33
+ Requires-Dist: openpyxl
34
+ Requires-Dist: opentelemetry-api
35
+ Requires-Dist: opentelemetry-exporter-otlp
36
+ Requires-Dist: opentelemetry-instrumentation-fastapi
37
+ Requires-Dist: opentelemetry-instrumentation-httpx
38
+ Requires-Dist: opentelemetry-instrumentation-logging
39
+ Requires-Dist: opentelemetry-sdk
40
+ Requires-Dist: pandas
41
+ Requires-Dist: pydantic
42
+ Requires-Dist: PyJWT
43
+ Requires-Dist: PyPDF2
44
+ Requires-Dist: python-dotenv
45
+ Requires-Dist: python-multipart
46
+ Requires-Dist: python-pptx
47
+ Requires-Dist: pyyaml
48
+ Requires-Dist: reportlab
49
+ Requires-Dist: requests
50
+ Requires-Dist: scikit-learn
51
+ Requires-Dist: scipy
52
+ Requires-Dist: seaborn
53
+ Requires-Dist: uvicorn[standard]
54
+ Requires-Dist: websockets
55
+ Provides-Extra: dev
56
+ Requires-Dist: pytest; extra == "dev"
57
+ Requires-Dist: pytest-asyncio; extra == "dev"
58
+ Requires-Dist: pytest-mock; extra == "dev"
59
+ Requires-Dist: ruff; extra == "dev"
60
+
61
+ # Atlas UI 3
62
+
63
+ [![CI/CD Pipeline](https://github.com/sandialabs/atlas-ui-3/actions/workflows/ci.yml/badge.svg)](https://github.com/sandialabs/atlas-ui-3/actions/workflows/ci.yml)
64
+ [![Security Checks](https://github.com/sandialabs/atlas-ui-3/actions/workflows/security.yml/badge.svg)](https://github.com/sandialabs/atlas-ui-3/actions/workflows/security.yml)
65
+ [![Docker Image](https://ghcr-badge.egpl.dev/sandialabs/atlas-ui-3/latest_tag?trim=major&label=latest)](https://github.com/sandialabs/atlas-ui-3/pkgs/container/atlas-ui-3)
66
+ [![PyPI version](https://badge.fury.io/py/atlas-chat.svg)](https://badge.fury.io/py/atlas-chat)
67
+ ![Python 3.11+](https://img.shields.io/badge/python-3.11+-blue.svg)
68
+ ![React 19](https://img.shields.io/badge/react-19.2-blue.svg)
69
+ ![License MIT](https://img.shields.io/badge/license-MIT-blue.svg)
70
+
71
+ Atlas UI 3 is a secure chat application with MCP (Model Context Protocol) integration, developed by Sandia National Laboratories -- a U.S. Department of Energy national laboratory -- to support U.S. Government customers.
72
+
73
+
74
+
75
+ ![Screenshot](docs/readme_img/screenshot-11-6-2025image.png)
76
+
77
+ ## About the Project
78
+
79
+ **Atlas UI 3** is a full-stack LLM chat interface that supports multiple AI models, including those from OpenAI, Anthropic, and Google. Its core feature is the integration with the Model Context Protocol (MCP), which allows the AI assistant to connect to external tools and data sources, enabling complex, real-time workflows.
80
+
81
+ ### Features
82
+
83
+ * **Multi-LLM Support**: Connect to various LLM providers.
84
+ * **MCP Integration**: Extend the AI's capabilities with custom tools.
85
+ * **RAG Support**: Enhance responses with Retrieval-Augmented Generation.
86
+ * **Secure and Configurable**: Features group-based access control, compliance levels, and a tool approval system.
87
+ * **Modern Stack**: Built with React 19, FastAPI, and WebSockets.
88
+ * **Python Package**: Install and use as a library or CLI tool.
89
+
90
+ ## Installation
91
+
92
+ ### Install from PyPI (Recommended for Users)
93
+
94
+ ```bash
95
+ # Install the package
96
+ pip install atlas-chat
97
+
98
+ # Or with uv (faster)
99
+ uv pip install atlas-chat
100
+ ```
101
+
102
+ ### CLI Usage
103
+
104
+ After installation, three CLI tools are available:
105
+
106
+ ```bash
107
+ # Set up configuration (run this first!)
108
+ atlas-init # Creates .env and config/ in current directory
109
+ atlas-init --minimal # Creates just a minimal .env file
110
+
111
+ # Chat with an LLM
112
+ atlas-chat "Hello, how are you?" --model gpt-4o
113
+ atlas-chat "Use the search tool" --tools server_tool1
114
+ atlas-chat --list-tools
115
+
116
+ # Start the server
117
+ atlas-server --port 8000
118
+ atlas-server --env /path/to/.env --config-folder /path/to/config
119
+ ```
120
+
121
+ ### Python API Usage
122
+
123
+ ```python
124
+ from atlas import AtlasClient, ChatResult
125
+
126
+ # Async usage
127
+ client = AtlasClient()
128
+ result = await client.chat("Hello, how are you?")
129
+ print(result.message)
130
+
131
+ # With options
132
+ result = await client.chat(
133
+ "Analyze this data",
134
+ model="gpt-4o",
135
+ selected_tools=["calculator", "search"],
136
+ agent_mode=True
137
+ )
138
+
139
+ # Sync wrapper
140
+ result = client.chat_sync("Hello!")
141
+ ```
142
+
143
+ ## Quick Start (Development)
144
+
145
+ ### Prerequisites
146
+
147
+ ```bash
148
+ # Install uv package manager (one-time)
149
+ curl -LsSf https://astral.sh/uv/install.sh | sh
150
+
151
+ # Create virtual environment and install dependencies
152
+ uv venv && source .venv/bin/activate
153
+ uv pip install -r requirements.txt
154
+ ```
155
+
156
+ ### Development Installation (Editable Mode)
157
+
158
+ For development, install the package in **editable mode**. This creates a link from your Python environment to your local source code, so any changes you make to the code are immediately available without reinstalling.
159
+
160
+ ```bash
161
+ # Install in editable mode with uv (recommended)
162
+ uv pip install -e .
163
+
164
+ # Or with pip
165
+ pip install -e .
166
+ ```
167
+
168
+ **What editable mode gives you:**
169
+ - Edit any Python file in `atlas/` and changes take effect immediately
170
+ - CLI commands (`atlas-chat`, `atlas-server`) use your local code
171
+ - Import `from atlas import AtlasClient` in scripts and get your local version
172
+ - No need to reinstall after making changes
173
+
174
+ **Example workflow:**
175
+ ```bash
176
+ # Install once in editable mode
177
+ uv pip install -e .
178
+
179
+ # Edit code
180
+ vim atlas/atlas_client.py
181
+
182
+ # Run immediately with your changes - no reinstall needed
183
+ atlas-chat "test my changes"
184
+ python my_script.py # uses updated AtlasClient
185
+ ```
186
+
187
+ **Alternative: PYTHONPATH (if you can't use editable install)**
188
+ ```bash
189
+ # Set PYTHONPATH manually when running
190
+ PYTHONPATH=/path/to/atlas-ui-3 python atlas/main.py
191
+ ```
192
+
193
+ ### Running the Application
194
+
195
+ **Linux/macOS:**
196
+ ```bash
197
+ bash agent_start.sh
198
+ ```
199
+
200
+ **Windows:**
201
+ ```powershell
202
+ .\ps_agent_start.ps1
203
+ ```
204
+
205
+ **Note for Windows users**: If you encounter frontend build errors related to Rollup dependencies, delete `frontend/package-lock.json` and `frontend/node_modules`, then run the script again.
206
+
207
+ Both scripts automatically detect and work with Docker or Podman. The `agent_start.sh` script builds the frontend, starts necessary services, and launches the backend server.
208
+
209
+ ## Documentation
210
+
211
+ We have created a set of comprehensive guides to help you get the most out of Atlas UI 3.
212
+
213
+ * **[Getting Started](./docs/getting-started/installation.md)**: The perfect starting point for all users. This guide covers how to get the application running with Docker or on your local machine.
214
+
215
+ * **[Administrator's Guide](./docs/admin/README.md)**: For those who will deploy and manage the application. This guide details configuration, security settings, access control, and other operational topics.
216
+
217
+ * **[Developer's Guide](./docs/developer/README.md)**: For developers who want to contribute to the project. It provides an overview of the architecture and instructions for creating new MCP servers.
218
+
219
+ ## Container Images
220
+
221
+ Pre-built container images are available at `quay.io/agarlan-snl/atlas-ui-3:latest` (pushes automatically from main branch).
222
+
223
+ ## For AI Agent Contributors
224
+
225
+ If you are an AI agent working on this repository, please refer to the following documents for the most current and concise guidance:
226
+
227
+ * **[CLAUDE.md](./CLAUDE.md)**: Detailed architecture, workflows, and conventions.
228
+ * **[GEMINI.md](./GEMINI.md)**: Gemini-specific instructions.
229
+ * **[.github/copilot-instructions.md](./.github/copilot-instructions.md)**: A compact guide for getting productive quickly.
230
+
231
+ ## License
232
+
233
+ Copyright 2025 National Technology & Engineering Solutions of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with NTESS, the U.S. Government retains certain rights in this software
234
+
235
+ MIT License
236
+
@@ -0,0 +1,176 @@
1
+ # Atlas UI 3
2
+
3
+ [![CI/CD Pipeline](https://github.com/sandialabs/atlas-ui-3/actions/workflows/ci.yml/badge.svg)](https://github.com/sandialabs/atlas-ui-3/actions/workflows/ci.yml)
4
+ [![Security Checks](https://github.com/sandialabs/atlas-ui-3/actions/workflows/security.yml/badge.svg)](https://github.com/sandialabs/atlas-ui-3/actions/workflows/security.yml)
5
+ [![Docker Image](https://ghcr-badge.egpl.dev/sandialabs/atlas-ui-3/latest_tag?trim=major&label=latest)](https://github.com/sandialabs/atlas-ui-3/pkgs/container/atlas-ui-3)
6
+ [![PyPI version](https://badge.fury.io/py/atlas-chat.svg)](https://badge.fury.io/py/atlas-chat)
7
+ ![Python 3.11+](https://img.shields.io/badge/python-3.11+-blue.svg)
8
+ ![React 19](https://img.shields.io/badge/react-19.2-blue.svg)
9
+ ![License MIT](https://img.shields.io/badge/license-MIT-blue.svg)
10
+
11
+ Atlas UI 3 is a secure chat application with MCP (Model Context Protocol) integration, developed by Sandia National Laboratories -- a U.S. Department of Energy national laboratory -- to support U.S. Government customers.
12
+
13
+
14
+
15
+ ![Screenshot](docs/readme_img/screenshot-11-6-2025image.png)
16
+
17
+ ## About the Project
18
+
19
+ **Atlas UI 3** is a full-stack LLM chat interface that supports multiple AI models, including those from OpenAI, Anthropic, and Google. Its core feature is the integration with the Model Context Protocol (MCP), which allows the AI assistant to connect to external tools and data sources, enabling complex, real-time workflows.
20
+
21
+ ### Features
22
+
23
+ * **Multi-LLM Support**: Connect to various LLM providers.
24
+ * **MCP Integration**: Extend the AI's capabilities with custom tools.
25
+ * **RAG Support**: Enhance responses with Retrieval-Augmented Generation.
26
+ * **Secure and Configurable**: Features group-based access control, compliance levels, and a tool approval system.
27
+ * **Modern Stack**: Built with React 19, FastAPI, and WebSockets.
28
+ * **Python Package**: Install and use as a library or CLI tool.
29
+
30
+ ## Installation
31
+
32
+ ### Install from PyPI (Recommended for Users)
33
+
34
+ ```bash
35
+ # Install the package
36
+ pip install atlas-chat
37
+
38
+ # Or with uv (faster)
39
+ uv pip install atlas-chat
40
+ ```
41
+
42
+ ### CLI Usage
43
+
44
+ After installation, three CLI tools are available:
45
+
46
+ ```bash
47
+ # Set up configuration (run this first!)
48
+ atlas-init # Creates .env and config/ in current directory
49
+ atlas-init --minimal # Creates just a minimal .env file
50
+
51
+ # Chat with an LLM
52
+ atlas-chat "Hello, how are you?" --model gpt-4o
53
+ atlas-chat "Use the search tool" --tools server_tool1
54
+ atlas-chat --list-tools
55
+
56
+ # Start the server
57
+ atlas-server --port 8000
58
+ atlas-server --env /path/to/.env --config-folder /path/to/config
59
+ ```
60
+
61
+ ### Python API Usage
62
+
63
+ ```python
64
+ from atlas import AtlasClient, ChatResult
65
+
66
+ # Async usage
67
+ client = AtlasClient()
68
+ result = await client.chat("Hello, how are you?")
69
+ print(result.message)
70
+
71
+ # With options
72
+ result = await client.chat(
73
+ "Analyze this data",
74
+ model="gpt-4o",
75
+ selected_tools=["calculator", "search"],
76
+ agent_mode=True
77
+ )
78
+
79
+ # Sync wrapper
80
+ result = client.chat_sync("Hello!")
81
+ ```
82
+
83
+ ## Quick Start (Development)
84
+
85
+ ### Prerequisites
86
+
87
+ ```bash
88
+ # Install uv package manager (one-time)
89
+ curl -LsSf https://astral.sh/uv/install.sh | sh
90
+
91
+ # Create virtual environment and install dependencies
92
+ uv venv && source .venv/bin/activate
93
+ uv pip install -r requirements.txt
94
+ ```
95
+
96
+ ### Development Installation (Editable Mode)
97
+
98
+ For development, install the package in **editable mode**. This creates a link from your Python environment to your local source code, so any changes you make to the code are immediately available without reinstalling.
99
+
100
+ ```bash
101
+ # Install in editable mode with uv (recommended)
102
+ uv pip install -e .
103
+
104
+ # Or with pip
105
+ pip install -e .
106
+ ```
107
+
108
+ **What editable mode gives you:**
109
+ - Edit any Python file in `atlas/` and changes take effect immediately
110
+ - CLI commands (`atlas-chat`, `atlas-server`) use your local code
111
+ - Import `from atlas import AtlasClient` in scripts and get your local version
112
+ - No need to reinstall after making changes
113
+
114
+ **Example workflow:**
115
+ ```bash
116
+ # Install once in editable mode
117
+ uv pip install -e .
118
+
119
+ # Edit code
120
+ vim atlas/atlas_client.py
121
+
122
+ # Run immediately with your changes - no reinstall needed
123
+ atlas-chat "test my changes"
124
+ python my_script.py # uses updated AtlasClient
125
+ ```
126
+
127
+ **Alternative: PYTHONPATH (if you can't use editable install)**
128
+ ```bash
129
+ # Set PYTHONPATH manually when running
130
+ PYTHONPATH=/path/to/atlas-ui-3 python atlas/main.py
131
+ ```
132
+
133
+ ### Running the Application
134
+
135
+ **Linux/macOS:**
136
+ ```bash
137
+ bash agent_start.sh
138
+ ```
139
+
140
+ **Windows:**
141
+ ```powershell
142
+ .\ps_agent_start.ps1
143
+ ```
144
+
145
+ **Note for Windows users**: If you encounter frontend build errors related to Rollup dependencies, delete `frontend/package-lock.json` and `frontend/node_modules`, then run the script again.
146
+
147
+ Both scripts automatically detect and work with Docker or Podman. The `agent_start.sh` script builds the frontend, starts necessary services, and launches the backend server.
148
+
149
+ ## Documentation
150
+
151
+ We have created a set of comprehensive guides to help you get the most out of Atlas UI 3.
152
+
153
+ * **[Getting Started](./docs/getting-started/installation.md)**: The perfect starting point for all users. This guide covers how to get the application running with Docker or on your local machine.
154
+
155
+ * **[Administrator's Guide](./docs/admin/README.md)**: For those who will deploy and manage the application. This guide details configuration, security settings, access control, and other operational topics.
156
+
157
+ * **[Developer's Guide](./docs/developer/README.md)**: For developers who want to contribute to the project. It provides an overview of the architecture and instructions for creating new MCP servers.
158
+
159
+ ## Container Images
160
+
161
+ Pre-built container images are available at `quay.io/agarlan-snl/atlas-ui-3:latest` (pushes automatically from main branch).
162
+
163
+ ## For AI Agent Contributors
164
+
165
+ If you are an AI agent working on this repository, please refer to the following documents for the most current and concise guidance:
166
+
167
+ * **[CLAUDE.md](./CLAUDE.md)**: Detailed architecture, workflows, and conventions.
168
+ * **[GEMINI.md](./GEMINI.md)**: Gemini-specific instructions.
169
+ * **[.github/copilot-instructions.md](./.github/copilot-instructions.md)**: A compact guide for getting productive quickly.
170
+
171
+ ## License
172
+
173
+ Copyright 2025 National Technology & Engineering Solutions of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with NTESS, the U.S. Government retains certain rights in this software
174
+
175
+ MIT License
176
+