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.
- atlas_chat-0.1.0/.env.example +253 -0
- atlas_chat-0.1.0/PKG-INFO +236 -0
- atlas_chat-0.1.0/README.md +176 -0
- atlas_chat-0.1.0/atlas/__init__.py +40 -0
- atlas_chat-0.1.0/atlas/application/__init__.py +7 -0
- atlas_chat-0.1.0/atlas/application/chat/__init__.py +7 -0
- atlas_chat-0.1.0/atlas/application/chat/agent/__init__.py +10 -0
- atlas_chat-0.1.0/atlas/application/chat/agent/act_loop.py +179 -0
- atlas_chat-0.1.0/atlas/application/chat/agent/factory.py +142 -0
- atlas_chat-0.1.0/atlas/application/chat/agent/protocols.py +46 -0
- atlas_chat-0.1.0/atlas/application/chat/agent/react_loop.py +338 -0
- atlas_chat-0.1.0/atlas/application/chat/agent/think_act_loop.py +171 -0
- atlas_chat-0.1.0/atlas/application/chat/approval_manager.py +151 -0
- atlas_chat-0.1.0/atlas/application/chat/elicitation_manager.py +191 -0
- atlas_chat-0.1.0/atlas/application/chat/events/__init__.py +1 -0
- atlas_chat-0.1.0/atlas/application/chat/events/agent_event_relay.py +112 -0
- atlas_chat-0.1.0/atlas/application/chat/modes/__init__.py +1 -0
- atlas_chat-0.1.0/atlas/application/chat/modes/agent.py +125 -0
- atlas_chat-0.1.0/atlas/application/chat/modes/plain.py +74 -0
- atlas_chat-0.1.0/atlas/application/chat/modes/rag.py +81 -0
- atlas_chat-0.1.0/atlas/application/chat/modes/tools.py +179 -0
- atlas_chat-0.1.0/atlas/application/chat/orchestrator.py +213 -0
- atlas_chat-0.1.0/atlas/application/chat/policies/__init__.py +1 -0
- atlas_chat-0.1.0/atlas/application/chat/policies/tool_authorization.py +99 -0
- atlas_chat-0.1.0/atlas/application/chat/preprocessors/__init__.py +1 -0
- atlas_chat-0.1.0/atlas/application/chat/preprocessors/message_builder.py +92 -0
- atlas_chat-0.1.0/atlas/application/chat/preprocessors/prompt_override_service.py +104 -0
- atlas_chat-0.1.0/atlas/application/chat/service.py +454 -0
- atlas_chat-0.1.0/atlas/application/chat/utilities/__init__.py +6 -0
- atlas_chat-0.1.0/atlas/application/chat/utilities/error_handler.py +367 -0
- atlas_chat-0.1.0/atlas/application/chat/utilities/event_notifier.py +546 -0
- atlas_chat-0.1.0/atlas/application/chat/utilities/file_processor.py +613 -0
- atlas_chat-0.1.0/atlas/application/chat/utilities/tool_executor.py +789 -0
- atlas_chat-0.1.0/atlas/atlas_chat_cli.py +347 -0
- atlas_chat-0.1.0/atlas/atlas_client.py +238 -0
- atlas_chat-0.1.0/atlas/core/__init__.py +0 -0
- atlas_chat-0.1.0/atlas/core/auth.py +205 -0
- atlas_chat-0.1.0/atlas/core/authorization_manager.py +27 -0
- atlas_chat-0.1.0/atlas/core/capabilities.py +123 -0
- atlas_chat-0.1.0/atlas/core/compliance.py +215 -0
- atlas_chat-0.1.0/atlas/core/domain_whitelist.py +147 -0
- atlas_chat-0.1.0/atlas/core/domain_whitelist_middleware.py +82 -0
- atlas_chat-0.1.0/atlas/core/http_client.py +28 -0
- atlas_chat-0.1.0/atlas/core/log_sanitizer.py +102 -0
- atlas_chat-0.1.0/atlas/core/metrics_logger.py +59 -0
- atlas_chat-0.1.0/atlas/core/middleware.py +131 -0
- atlas_chat-0.1.0/atlas/core/otel_config.py +242 -0
- atlas_chat-0.1.0/atlas/core/prompt_risk.py +200 -0
- atlas_chat-0.1.0/atlas/core/rate_limit.py +0 -0
- atlas_chat-0.1.0/atlas/core/rate_limit_middleware.py +64 -0
- atlas_chat-0.1.0/atlas/core/security_headers_middleware.py +51 -0
- atlas_chat-0.1.0/atlas/domain/__init__.py +37 -0
- atlas_chat-0.1.0/atlas/domain/chat/__init__.py +1 -0
- atlas_chat-0.1.0/atlas/domain/chat/dtos.py +85 -0
- atlas_chat-0.1.0/atlas/domain/errors.py +96 -0
- atlas_chat-0.1.0/atlas/domain/messages/__init__.py +12 -0
- atlas_chat-0.1.0/atlas/domain/messages/models.py +160 -0
- atlas_chat-0.1.0/atlas/domain/rag_mcp_service.py +664 -0
- atlas_chat-0.1.0/atlas/domain/sessions/__init__.py +7 -0
- atlas_chat-0.1.0/atlas/domain/sessions/models.py +36 -0
- atlas_chat-0.1.0/atlas/domain/unified_rag_service.py +371 -0
- atlas_chat-0.1.0/atlas/infrastructure/__init__.py +10 -0
- atlas_chat-0.1.0/atlas/infrastructure/app_factory.py +135 -0
- atlas_chat-0.1.0/atlas/infrastructure/events/__init__.py +1 -0
- atlas_chat-0.1.0/atlas/infrastructure/events/cli_event_publisher.py +140 -0
- atlas_chat-0.1.0/atlas/infrastructure/events/websocket_publisher.py +140 -0
- atlas_chat-0.1.0/atlas/infrastructure/sessions/in_memory_repository.py +56 -0
- atlas_chat-0.1.0/atlas/infrastructure/transport/__init__.py +7 -0
- atlas_chat-0.1.0/atlas/infrastructure/transport/websocket_connection_adapter.py +33 -0
- atlas_chat-0.1.0/atlas/init_cli.py +226 -0
- atlas_chat-0.1.0/atlas/interfaces/__init__.py +15 -0
- atlas_chat-0.1.0/atlas/interfaces/events.py +134 -0
- atlas_chat-0.1.0/atlas/interfaces/llm.py +54 -0
- atlas_chat-0.1.0/atlas/interfaces/rag.py +40 -0
- atlas_chat-0.1.0/atlas/interfaces/sessions.py +75 -0
- atlas_chat-0.1.0/atlas/interfaces/tools.py +57 -0
- atlas_chat-0.1.0/atlas/interfaces/transport.py +24 -0
- atlas_chat-0.1.0/atlas/main.py +564 -0
- atlas_chat-0.1.0/atlas/mcp/api_key_demo/README.md +76 -0
- atlas_chat-0.1.0/atlas/mcp/api_key_demo/main.py +172 -0
- atlas_chat-0.1.0/atlas/mcp/api_key_demo/run.sh +56 -0
- atlas_chat-0.1.0/atlas/mcp/basictable/main.py +147 -0
- atlas_chat-0.1.0/atlas/mcp/calculator/main.py +149 -0
- atlas_chat-0.1.0/atlas/mcp/code-executor/execution_engine.py +98 -0
- atlas_chat-0.1.0/atlas/mcp/code-executor/execution_environment.py +95 -0
- atlas_chat-0.1.0/atlas/mcp/code-executor/main.py +528 -0
- atlas_chat-0.1.0/atlas/mcp/code-executor/result_processing.py +276 -0
- atlas_chat-0.1.0/atlas/mcp/code-executor/script_generation.py +195 -0
- atlas_chat-0.1.0/atlas/mcp/code-executor/security_checker.py +140 -0
- atlas_chat-0.1.0/atlas/mcp/corporate_cars/main.py +437 -0
- atlas_chat-0.1.0/atlas/mcp/csv_reporter/main.py +545 -0
- atlas_chat-0.1.0/atlas/mcp/duckduckgo/main.py +182 -0
- atlas_chat-0.1.0/atlas/mcp/elicitation_demo/README.md +171 -0
- atlas_chat-0.1.0/atlas/mcp/elicitation_demo/main.py +262 -0
- atlas_chat-0.1.0/atlas/mcp/env-demo/README.md +158 -0
- atlas_chat-0.1.0/atlas/mcp/env-demo/main.py +199 -0
- atlas_chat-0.1.0/atlas/mcp/file_size_test/main.py +284 -0
- atlas_chat-0.1.0/atlas/mcp/filesystem/main.py +348 -0
- atlas_chat-0.1.0/atlas/mcp/image_demo/main.py +113 -0
- atlas_chat-0.1.0/atlas/mcp/image_demo/requirements.txt +4 -0
- atlas_chat-0.1.0/atlas/mcp/logging_demo/README.md +72 -0
- atlas_chat-0.1.0/atlas/mcp/logging_demo/main.py +103 -0
- atlas_chat-0.1.0/atlas/mcp/many_tools_demo/main.py +50 -0
- atlas_chat-0.1.0/atlas/mcp/order_database/__init__.py +0 -0
- atlas_chat-0.1.0/atlas/mcp/order_database/main.py +369 -0
- atlas_chat-0.1.0/atlas/mcp/order_database/signal_data.csv +1001 -0
- atlas_chat-0.1.0/atlas/mcp/pdfbasic/main.py +394 -0
- atlas_chat-0.1.0/atlas/mcp/pptx_generator/main.py +760 -0
- atlas_chat-0.1.0/atlas/mcp/pptx_generator/requirements.txt +13 -0
- atlas_chat-0.1.0/atlas/mcp/pptx_generator/run_test.sh +1 -0
- atlas_chat-0.1.0/atlas/mcp/pptx_generator/test_pptx_generator_security.py +169 -0
- atlas_chat-0.1.0/atlas/mcp/progress_demo/main.py +167 -0
- atlas_chat-0.1.0/atlas/mcp/progress_updates_demo/QUICKSTART.md +273 -0
- atlas_chat-0.1.0/atlas/mcp/progress_updates_demo/README.md +120 -0
- atlas_chat-0.1.0/atlas/mcp/progress_updates_demo/main.py +497 -0
- atlas_chat-0.1.0/atlas/mcp/prompts/main.py +222 -0
- atlas_chat-0.1.0/atlas/mcp/public_demo/main.py +189 -0
- atlas_chat-0.1.0/atlas/mcp/sampling_demo/README.md +169 -0
- atlas_chat-0.1.0/atlas/mcp/sampling_demo/main.py +234 -0
- atlas_chat-0.1.0/atlas/mcp/thinking/main.py +77 -0
- atlas_chat-0.1.0/atlas/mcp/tool_planner/main.py +240 -0
- atlas_chat-0.1.0/atlas/mcp/ui-demo/badmesh.png +0 -0
- atlas_chat-0.1.0/atlas/mcp/ui-demo/main.py +383 -0
- atlas_chat-0.1.0/atlas/mcp/ui-demo/templates/button_demo.html +32 -0
- atlas_chat-0.1.0/atlas/mcp/ui-demo/templates/data_visualization.html +32 -0
- atlas_chat-0.1.0/atlas/mcp/ui-demo/templates/form_demo.html +28 -0
- atlas_chat-0.1.0/atlas/mcp/username-override-demo/README.md +320 -0
- atlas_chat-0.1.0/atlas/mcp/username-override-demo/main.py +308 -0
- atlas_chat-0.1.0/atlas/modules/__init__.py +0 -0
- atlas_chat-0.1.0/atlas/modules/config/__init__.py +34 -0
- atlas_chat-0.1.0/atlas/modules/config/cli.py +231 -0
- atlas_chat-0.1.0/atlas/modules/config/config_manager.py +1096 -0
- atlas_chat-0.1.0/atlas/modules/file_storage/__init__.py +22 -0
- atlas_chat-0.1.0/atlas/modules/file_storage/cli.py +330 -0
- atlas_chat-0.1.0/atlas/modules/file_storage/content_extractor.py +290 -0
- atlas_chat-0.1.0/atlas/modules/file_storage/manager.py +295 -0
- atlas_chat-0.1.0/atlas/modules/file_storage/mock_s3_client.py +402 -0
- atlas_chat-0.1.0/atlas/modules/file_storage/s3_client.py +417 -0
- atlas_chat-0.1.0/atlas/modules/llm/__init__.py +19 -0
- atlas_chat-0.1.0/atlas/modules/llm/caller.py +287 -0
- atlas_chat-0.1.0/atlas/modules/llm/litellm_caller.py +675 -0
- atlas_chat-0.1.0/atlas/modules/llm/models.py +19 -0
- atlas_chat-0.1.0/atlas/modules/mcp_tools/__init__.py +17 -0
- atlas_chat-0.1.0/atlas/modules/mcp_tools/client.py +2123 -0
- atlas_chat-0.1.0/atlas/modules/mcp_tools/token_storage.py +556 -0
- atlas_chat-0.1.0/atlas/modules/prompts/prompt_provider.py +130 -0
- atlas_chat-0.1.0/atlas/modules/rag/__init__.py +24 -0
- atlas_chat-0.1.0/atlas/modules/rag/atlas_rag_client.py +336 -0
- atlas_chat-0.1.0/atlas/modules/rag/client.py +129 -0
- atlas_chat-0.1.0/atlas/routes/admin_routes.py +865 -0
- atlas_chat-0.1.0/atlas/routes/config_routes.py +484 -0
- atlas_chat-0.1.0/atlas/routes/feedback_routes.py +361 -0
- atlas_chat-0.1.0/atlas/routes/files_routes.py +274 -0
- atlas_chat-0.1.0/atlas/routes/health_routes.py +40 -0
- atlas_chat-0.1.0/atlas/routes/mcp_auth_routes.py +223 -0
- atlas_chat-0.1.0/atlas/server_cli.py +164 -0
- atlas_chat-0.1.0/atlas/tests/conftest.py +20 -0
- atlas_chat-0.1.0/atlas/tests/integration/test_mcp_auth_integration.py +152 -0
- atlas_chat-0.1.0/atlas/tests/manual_test_sampling.py +87 -0
- atlas_chat-0.1.0/atlas/tests/modules/mcp_tools/test_client_auth.py +226 -0
- atlas_chat-0.1.0/atlas/tests/modules/mcp_tools/test_client_env.py +191 -0
- atlas_chat-0.1.0/atlas/tests/test_admin_mcp_server_management_routes.py +141 -0
- atlas_chat-0.1.0/atlas/tests/test_agent_roa.py +135 -0
- atlas_chat-0.1.0/atlas/tests/test_app_factory_smoke.py +47 -0
- atlas_chat-0.1.0/atlas/tests/test_approval_manager.py +439 -0
- atlas_chat-0.1.0/atlas/tests/test_atlas_client.py +188 -0
- atlas_chat-0.1.0/atlas/tests/test_atlas_rag_client.py +447 -0
- atlas_chat-0.1.0/atlas/tests/test_atlas_rag_integration.py +224 -0
- atlas_chat-0.1.0/atlas/tests/test_attach_file_flow.py +287 -0
- atlas_chat-0.1.0/atlas/tests/test_auth_utils.py +165 -0
- atlas_chat-0.1.0/atlas/tests/test_backend_public_url.py +185 -0
- atlas_chat-0.1.0/atlas/tests/test_banner_logging.py +287 -0
- atlas_chat-0.1.0/atlas/tests/test_capability_tokens_and_injection.py +203 -0
- atlas_chat-0.1.0/atlas/tests/test_compliance_level.py +54 -0
- atlas_chat-0.1.0/atlas/tests/test_compliance_manager.py +253 -0
- atlas_chat-0.1.0/atlas/tests/test_config_manager.py +617 -0
- atlas_chat-0.1.0/atlas/tests/test_config_manager_paths.py +12 -0
- atlas_chat-0.1.0/atlas/tests/test_core_auth.py +18 -0
- atlas_chat-0.1.0/atlas/tests/test_core_utils.py +190 -0
- atlas_chat-0.1.0/atlas/tests/test_docker_env_sync.py +202 -0
- atlas_chat-0.1.0/atlas/tests/test_domain_errors.py +329 -0
- atlas_chat-0.1.0/atlas/tests/test_domain_whitelist.py +359 -0
- atlas_chat-0.1.0/atlas/tests/test_elicitation_manager.py +408 -0
- atlas_chat-0.1.0/atlas/tests/test_elicitation_routing.py +296 -0
- atlas_chat-0.1.0/atlas/tests/test_env_demo_server.py +88 -0
- atlas_chat-0.1.0/atlas/tests/test_error_classification.py +113 -0
- atlas_chat-0.1.0/atlas/tests/test_error_flow_integration.py +116 -0
- atlas_chat-0.1.0/atlas/tests/test_feedback_routes.py +333 -0
- atlas_chat-0.1.0/atlas/tests/test_file_content_extraction.py +1134 -0
- atlas_chat-0.1.0/atlas/tests/test_file_extraction_routes.py +158 -0
- atlas_chat-0.1.0/atlas/tests/test_file_library.py +107 -0
- atlas_chat-0.1.0/atlas/tests/test_file_manager_unit.py +18 -0
- atlas_chat-0.1.0/atlas/tests/test_health_route.py +49 -0
- atlas_chat-0.1.0/atlas/tests/test_http_client_stub.py +8 -0
- atlas_chat-0.1.0/atlas/tests/test_imports_smoke.py +30 -0
- atlas_chat-0.1.0/atlas/tests/test_interfaces_llm_response.py +9 -0
- atlas_chat-0.1.0/atlas/tests/test_issue_access_denied_fix.py +136 -0
- atlas_chat-0.1.0/atlas/tests/test_llm_env_expansion.py +836 -0
- atlas_chat-0.1.0/atlas/tests/test_log_level_sensitive_data.py +285 -0
- atlas_chat-0.1.0/atlas/tests/test_mcp_auth_routes.py +341 -0
- atlas_chat-0.1.0/atlas/tests/test_mcp_client_auth.py +331 -0
- atlas_chat-0.1.0/atlas/tests/test_mcp_data_injection.py +270 -0
- atlas_chat-0.1.0/atlas/tests/test_mcp_get_authorized_servers.py +95 -0
- atlas_chat-0.1.0/atlas/tests/test_mcp_hot_reload.py +512 -0
- atlas_chat-0.1.0/atlas/tests/test_mcp_image_content.py +424 -0
- atlas_chat-0.1.0/atlas/tests/test_mcp_logging.py +172 -0
- atlas_chat-0.1.0/atlas/tests/test_mcp_progress_updates.py +313 -0
- atlas_chat-0.1.0/atlas/tests/test_mcp_prompt_override_system_prompt.py +102 -0
- atlas_chat-0.1.0/atlas/tests/test_mcp_prompts_server.py +39 -0
- atlas_chat-0.1.0/atlas/tests/test_mcp_tool_result_parsing.py +296 -0
- atlas_chat-0.1.0/atlas/tests/test_metrics_logger.py +56 -0
- atlas_chat-0.1.0/atlas/tests/test_middleware_auth.py +379 -0
- atlas_chat-0.1.0/atlas/tests/test_prompt_risk_and_acl.py +141 -0
- atlas_chat-0.1.0/atlas/tests/test_rag_mcp_aggregator.py +204 -0
- atlas_chat-0.1.0/atlas/tests/test_rag_mcp_service.py +224 -0
- atlas_chat-0.1.0/atlas/tests/test_rate_limit_middleware.py +45 -0
- atlas_chat-0.1.0/atlas/tests/test_routes_config_smoke.py +60 -0
- atlas_chat-0.1.0/atlas/tests/test_routes_files_download_token.py +41 -0
- atlas_chat-0.1.0/atlas/tests/test_routes_files_health.py +18 -0
- atlas_chat-0.1.0/atlas/tests/test_runtime_imports.py +53 -0
- atlas_chat-0.1.0/atlas/tests/test_sampling_integration.py +482 -0
- atlas_chat-0.1.0/atlas/tests/test_security_admin_routes.py +61 -0
- atlas_chat-0.1.0/atlas/tests/test_security_capability_tokens.py +65 -0
- atlas_chat-0.1.0/atlas/tests/test_security_file_stats_scope.py +21 -0
- atlas_chat-0.1.0/atlas/tests/test_security_header_injection.py +191 -0
- atlas_chat-0.1.0/atlas/tests/test_security_headers_and_filename.py +63 -0
- atlas_chat-0.1.0/atlas/tests/test_shared_session_repository.py +101 -0
- atlas_chat-0.1.0/atlas/tests/test_system_prompt_loading.py +181 -0
- atlas_chat-0.1.0/atlas/tests/test_token_storage.py +505 -0
- atlas_chat-0.1.0/atlas/tests/test_tool_approval_config.py +93 -0
- atlas_chat-0.1.0/atlas/tests/test_tool_approval_utils.py +356 -0
- atlas_chat-0.1.0/atlas/tests/test_tool_authorization_group_filtering.py +223 -0
- atlas_chat-0.1.0/atlas/tests/test_tool_details_in_config.py +108 -0
- atlas_chat-0.1.0/atlas/tests/test_tool_planner.py +300 -0
- atlas_chat-0.1.0/atlas/tests/test_unified_rag_service.py +398 -0
- atlas_chat-0.1.0/atlas/tests/test_username_override_in_approval.py +258 -0
- atlas_chat-0.1.0/atlas/tests/test_websocket_auth_header.py +168 -0
- atlas_chat-0.1.0/atlas/version.py +6 -0
- atlas_chat-0.1.0/atlas_chat.egg-info/PKG-INFO +236 -0
- atlas_chat-0.1.0/atlas_chat.egg-info/SOURCES.txt +254 -0
- atlas_chat-0.1.0/atlas_chat.egg-info/dependency_links.txt +1 -0
- atlas_chat-0.1.0/atlas_chat.egg-info/entry_points.txt +4 -0
- atlas_chat-0.1.0/atlas_chat.egg-info/requires.txt +39 -0
- atlas_chat-0.1.0/atlas_chat.egg-info/top_level.txt +1 -0
- atlas_chat-0.1.0/config/defaults/compliance-levels.json +44 -0
- atlas_chat-0.1.0/config/defaults/domain-whitelist.json +123 -0
- atlas_chat-0.1.0/config/defaults/file-extractors.json +74 -0
- atlas_chat-0.1.0/config/defaults/help-config.json +198 -0
- atlas_chat-0.1.0/config/defaults/llmconfig-buggy.yml +11 -0
- atlas_chat-0.1.0/config/defaults/llmconfig.yml +19 -0
- atlas_chat-0.1.0/config/defaults/mcp.json +138 -0
- atlas_chat-0.1.0/config/defaults/rag-sources.json +17 -0
- atlas_chat-0.1.0/config/defaults/splash-config.json +16 -0
- atlas_chat-0.1.0/pyproject.toml +112 -0
- atlas_chat-0.1.0/setup.cfg +4 -0
- 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
|
+
[](https://github.com/sandialabs/atlas-ui-3/actions/workflows/ci.yml)
|
|
64
|
+
[](https://github.com/sandialabs/atlas-ui-3/actions/workflows/security.yml)
|
|
65
|
+
[](https://github.com/sandialabs/atlas-ui-3/pkgs/container/atlas-ui-3)
|
|
66
|
+
[](https://badge.fury.io/py/atlas-chat)
|
|
67
|
+

|
|
68
|
+

|
|
69
|
+

|
|
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
|
+

|
|
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
|
+
[](https://github.com/sandialabs/atlas-ui-3/actions/workflows/ci.yml)
|
|
4
|
+
[](https://github.com/sandialabs/atlas-ui-3/actions/workflows/security.yml)
|
|
5
|
+
[](https://github.com/sandialabs/atlas-ui-3/pkgs/container/atlas-ui-3)
|
|
6
|
+
[](https://badge.fury.io/py/atlas-chat)
|
|
7
|
+

|
|
8
|
+

|
|
9
|
+

|
|
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
|
+

|
|
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
|
+
|