{"platform":{"version":"2.3.0","deployment":["local_python","docker","systemd","docker_compose_monitoring"],"interfaces":["web_ui","rest_api","openapi","sse_streaming"],"security":{"api_key_auth":true,"oidc_jwt":false,"saml_sp_stub":false,"rbac_roles":["admin","analyst","viewer"],"rate_limiting":true,"audit_log":"./logs/audit/audit.log","session_tracking":true,"session_store":true,"governance_module":true,"pii_scan":true,"prompt_guard":true,"content_input_guard":true,"file_input_guard":true,"content_output_guard":true,"output_self_check":true,"layered_ai_security_stack":true,"multi_tenant":true,"tenant_encryption":false,"saml_signature_verify":false,"saml_crypto_verify":false,"grc_webhook":false,"worm_audit":true,"vision_multimodal":true,"pdf_ocr_pipeline":false,"ot_deployment_templates":true,"unified_ai_assurance":true},"governance":{"offline_repository":"./governance","endpoints":"/governance/*","catalog_api":"/governance/catalog","document_taxonomy":"governance/catalog/document_taxonomy.json","role_companions":["cio","ciso","cro","legal_head","iso_auditor","grc_lead"],"template_categories":["policy","procedure","sop","standards","compliance","legal","patent","whitepaper"],"frameworks":["owasp-llm-top10","nist-ai-rmf","iso-42001","eu-ai-act","iec-62443","iot-ai-controls"],"ai_security_stack":{"api":"/governance/ai-security-stack","architecture":"input_guardrails + output_guardrails","risks_mitigated":["malware","poisoning","sexual_content","hallucination","bias"],"techniques":{"poisoning":["prompt_guard","retrieval_guard","blocked_wording"],"hallucination":["RAG","output_self_check","eval_corpora"],"bias":["HITL_policy","evaluation_benchmarks","approval_workflows"]}},"security_engineering":{"red_team_program":"red-team-program","registry":"governance/catalog/security_engineering_registry.json","gap_assessment_api":"/governance/security-engineering/assessment/gaps","capabilities":["red_team_offensive","red_team_defensive","secure_coding","product_design","fullstack","ui_ux","perimeter_security","configuration_assessment","vulnerability_assessment","gap_assessment"]}},"observability":{"health":"/health","readiness":"/ready","metrics":"/metrics","prometheus_alerts":"deploy/monitoring/prometheus/alerts.yml"},"feature_flags":{"connectivity_mode":"hybrid","offline_mode":false,"enable_web_search":false,"enable_url_scrape":false,"enable_docs":false,"enable_metrics":true,"slhp_scheduler":true},"offline_sovereign":{"offline_mode":false,"approved_lmstudio_models":["google/gemma-3-1b","smolvlm2-2.2b-instruct"],"effective_approved_models":["google/gemma-3-1b","mistralai/mistral-7b-instruct-v0.3","Qwen/Qwen2.5-7B-Instruct-GGUF","microsoft/phi-4","llava-v1.6-mistral-7b","llava-v1.6-mistral-7b@q4_k_m","smolvlm2-2.2b-instruct","smolvlm2-2.2b-instruct@q4_k_m"],"sovereign_enforcement":{"enabled":true,"block_cloud_llm":true,"require_local_inference":true,"enforce_approved_models":true,"api":"/governance/sovereign-enforcement"},"model_sovereignty":{"program_enabled":true,"jurisdiction":"IN-MH","training_site":"customer-dc","api":"/governance/model-sovereignty"},"embedding_model":"sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2","primary_llm":"google/gemma-3-1b","fallback_llm":"google/gemma-3-1b","enterprise_ml_enabled":true,"enterprise_training_enabled":true,"orchestrated_training_hooks":true,"training_in_platform_fine_tuning":false,"training_modes":["rag_sync","lmstudio_modelfile","qlora","external_command"],"sovereign_readiness_api":"/governance/sovereign-readiness","rag_retrieval_guard":true,"llm_unavailable_mode":"error","llm_degraded_behavior":"503 error when local LLM is down","llm_autostart":{"enabled":false,"probe_hops":5,"hop_interval_seconds":12,"check_interval_seconds":45,"recover_api":"POST /ai-stack/lmstudio/recover"},"slhp_learning":"RAG + learning profiles + SLHP assurance cycles","enterprise_ml_api":"/enterprise/ml","enterprise_ui":"/enterprise","stack_build_api":"POST /enterprise/ml/stack/build","completion_api":"GET /enterprise/ml/completion","build_layers":["ML","NL","SLM","LLM","MLLM","LM"]}},"llm":{"provider_mode":"local_external_runtime","active_runtime":{"id":"lmstudio","display_name":"LM Studio","short_name":"LM Studio","provider_label":"LM Studio (llmster)","api_url":"http://lmstudio:1234","api_style":"openai","default_port":1234,"start_command":"start.bat /workbench","workbench_command":"start-workbench.bat","preparing_label":"Checking LM Studio and preparing...","unavailable_hint":"LM Studio is not running. Run: start.bat /workbench (or start-workbench.bat after LM Studio is up)","loading_hint":"LM Studio is up but google/gemma-3-1b may still be loading. Wait 1-2 min or: docker exec sovereign-lmstudio lms load -y google/gemma-3-1b","warm_hint":"docker exec sovereign-lmstudio lms load -y google/gemma-3-1b","pull_hint":"docker exec sovereign-lmstudio lms get -y {model}","timeout_hint":"Timed out waiting for LM Studio. Keep RAG off and use General scope.","endpoint_title":"LM Studio endpoint","endpoint_role":"Local LM Studio inference (Docker llmster)","validate_label":"Re-validate LM Studio","validate_api":"/auth/enterprise/lmstudio/validate","pull_api":"/auth/enterprise/lmstudio/pull-model","stack_description":"Combines LM Studio generative models, embeddings (RAG), and natural-language Q&A.","connectivity_detail_hybrid":"Hybrid: local LM Studio/RAG; optional web search/scrape when network is available."},"llm_runtime":"lmstudio","description":"Workbench orchestrates LM Studio via OpenAI-compatible HTTP; models are not bundled in-app.","supported_runtimes":[{"name":"LM Studio","default_url":"http://localhost:1234","api":"/v1/chat/completions"}],"configured":{"api_url":"http://lmstudio:1234","api_url_fallback":null,"model":"google/gemma-3-1b","fallback_model":"google/gemma-3-1b","failover_enabled":false,"max_retries":3,"timeout_seconds":300,"chat_timeout_scope_seconds":420,"llm_warmup_on_startup":true,"max_output_tokens_default":2048},"operations":{"text_completion":{"enabled":true,"used_by":["chat","rag_query","generate_diagram","generate_report"],"parameters":["temperature","max_tokens","system_prompt","stop"]},"structured_json":{"enabled":true,"used_by":["generate_report"],"max_retries":3,"temperature":0.3},"streaming":{"enabled":true,"endpoint":"POST /chat/stream","format":"text/event-stream (SSE)","backend":"LM Studio /v1/chat/completions stream=true"},"function_calling":{"enabled":true,"chat_flag":"use_tools","builtin_tools":["search_knowledge_base","knowledge_base_stats","diagram_brief"],"agent_max_steps":5,"note":"Requires OpenAI-compatible /v1/chat/completions with tools support"},"model_routing":{"enabled":true,"modes":["auto","fast","quality"],"slm_model":"google/gemma-3-1b","llm_model":"google/gemma-3-1b"},"multi_turn_chat":{"enabled":true,"messages_field":true,"conversation_id":true},"openai_gateway":{"enabled":true,"endpoint":"POST /v1/chat/completions"},"vision":{"enabled":true,"model":"smolvlm2-2.2b-instruct"},"embeddings_via_llm":{"enabled":false,"note":"Embeddings use sentence-transformers locally"}},"temperature_by_use_case":{"chat":0.7,"rag_answer":0.1,"diagram_code":0.3,"report_json":0.3},"degraded_behavior":{"chat_with_rag":"Returns retrieved KB chunks if LLM fails","rag_query":"Returns raw context chunks if LLM fails","health_check":"GET /health reports ai_stack (LM, LLM, SLM, MLLM, ML, NL)"},"recommended_models":["google/gemma-3-1b (required fast chat)","phi-4-mini-reasoning (optional quality)"],"hardware_guidance":{"ram_gb_minimum":16,"storage_gb":10,"note":"Quantized models on CPU via LM Studio Docker (llmster)"}},"llm_runtime_status":{"available":true,"detail":{"available":true,"primary_url":"http://lmstudio:1234","primary_available":true,"fallback_url":null,"fallback_available":null,"fallback_configured":false,"active_url":"http://lmstudio:1234","active_model":"google/gemma-3-1b","configured_model":"google/gemma-3-1b","installed_models":["google/gemma-3-1b","gemma-3-1b-it-qat","text-embedding-nomic-embed-text-v1.5"],"model_ready":true,"slm_ready":true,"llm_configured_ready":true,"inference_ready":true,"inference":{"inference_ready":true,"slm_ready":true,"llm_ready":false,"slm":{"model":"google/gemma-3-1b","ready":true,"source":"warmup"},"llm":{"model":"google/gemma-3-1b","ready":false,"skipped":true},"checked_at":1782123026.3952265},"failover_active":false,"fallback_model":"google/gemma-3-1b","quick":false},"check_endpoint":"/health","note":"LLM/SLM generative runtime; see ai_stack for MLLM/ML/NL"},"rag":{"enabled":true,"vector_store":"ChromaDB","embedding_model":"sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2","embedding_location":"local_cpu","chunk_strategy":"token_aware","chunk_size_tokens":512,"chunk_overlap_tokens":50,"chars_per_token_estimate":4,"default_top_k":5,"supported_formats":[".pdf",".docx",".doc",".txt",".md",".markdown",".csv",".xlsx"],"features":{"semantic_search":true,"hybrid_search":true,"reranking":true,"metadata_filters":true,"source_citations":true,"anti_hallucination_prompts":true,"recursive_directory_ingest":true,"per_file_delete_from_index":true,"background_indexing":true,"token_aware_chunking":true,"formats_csv_xlsx":true,"evaluate_api":"POST /rag/evaluate","reembed_api":"POST /knowledge_base/reembed"},"limitations":["Approximate token chunking (not model tokenizer)","Multilingual embedding default (paraphrase-multilingual-MiniLM-L12-v2); re-embed after model change","Single-node ChromaDB (no clustering)","Keyword leg of hybrid is overlap-based (not BM25 index)"]},"documents":{"report_generation":{"formats":["docx","pptx"],"rag_context_optional":true,"diagrams_embed_optional":true,"structure":"LLM generates JSON → python-docx/python-pptx render"},"presentation_assistance":{"api":"POST /generate_presentation","profiles_api":"GET /presentation/profiles","audiences":["speaker","executive","board","enterprise","analytical","marketing","pitch_deck","general"],"export_formats":["pptx","html"],"bundle_zip":true,"chart_types":["column","pie","line","combo"],"layouts":["content","chart","infographic","section","two_column","appendix_table"],"theme_packs":true,"infographic_assets":true,"analysis_appendix":true,"library_rag_grounding":true,"speaker_notes":true},"documentation_assistance":{"formats":["markdown","docx"],"api":"POST /assist/documentation","rag_context_optional":true},"spreadsheet_generation":{"formats":["xlsx"],"api":"POST /assist/spreadsheet","requires":"openpyxl"},"web_and_ide":{"code_assistance":"POST /assist/code","inline_completion":"POST /assist/complete","website_design":"POST /assist/web-design","documentation":"POST /assist/documentation"},"diagram_generation":{"types":["mermaid","plantuml"],"output_formats":["png","svg"],"flow":"LLM writes diagram code → CLI renders image","requires":{"mermaid":"mmdc CLI","plantuml":"Java + PlantUML JAR"}},"image_generation":{"png_photo":"POST /assist/image-asset (asset_type=png_photo)","svg_diagram":"POST /assist/image-asset (asset_type=svg_diagram)","engine":"local diffusers (stabilityai/sd-turbo)","sovereign":true},"download":{"from":"outputs/","security":"path restricted to output dir"}},"knowledge_base":{"upload":{"single_file":true,"folder":true,"max_size_mb":50},"management":{"list":true,"delete":true,"stats":true,"build_rebuild":true},"corpus_sources":{"enabled":true,"store":"./data/kb_source_paths.json","list":"GET /knowledge_base/source_paths","register":"POST /knowledge_base/source_paths","scan":"POST /knowledge_base/source_paths/{id}/scan","sync":"POST /knowledge_base/source_paths/{id}/sync","train":"POST /knowledge_base/source_paths/{id}/train","enterprise_plan_required":true},"optional_online":{"web_search":false,"url_scrape":false,"default":"disabled for air-gap"}},"billing":{"mlops_billing_enabled":true,"enterprise_included_mlops_ops":50,"mlops_default_cost_per_op_usd":1.0,"usage_ledger_path":"./data/usage_ledger.json","billing_payments_store":"./data/billing_payments.jsonl","payment_provider":{"provider":"manual","stripe_enabled":false,"stripe_mode":null,"stripe_publishable_key":null,"manual_fallback":true,"currency":"USD","checkout_modes":["overage","subscription"],"webhook_configured":false,"note":"Manual PO / payment reference — configure Stripe keys or STRIPE_DEV_MOCK=true.","webhook_url":"https://llm.defenailabs.com/auth/billing/stripe/webhook"},"endpoints":{"billing_view":"GET /auth/billing/view","period_invoice":"GET /auth/billing/period-invoice","checkout_session":"POST /auth/billing/checkout-session","stripe_webhook":"POST /auth/billing/stripe/webhook","config_status":"GET /auth/billing/config-status","enterprise_billing":"GET /auth/enterprise/billing"}},"government_productivity":{"overall_pct":100.0,"implemented":14,"partial":0,"pending":0,"total":14,"by_workflow":{"code-assist":100,"multilingual-indian":100,"employee-training":100,"official-drafting":100,"gr-summarisation":100,"document-intelligence":100,"excel-productivity":100,"powerpoint-assistance":100,"ai-awareness":100,"marathi-vernamala":100,"voice-prompt-assist":100,"outlook-assistance":100,"meeting-transcripts":100,"image-asset":100},"workflows":[{"id":"code-assist","name":"Code Assist","icon":"code","description":"IDE inline completion and sovereign code assistance (Cursor / VS Code).","api":"POST /assist/code","prompt_template_id":null,"completion_pct":100,"status":"implemented","evidence":["POST /assist/code","POST /assist/complete","MCP sovereign_chat"]},{"id":"multilingual-indian","name":"Multi Indian Language","icon":"language","description":"Hindi/Marathi chat and RAG via Qwen2.5 routing and multilingual embeddings.","api":"POST /chat (auto-routed model)","prompt_template_id":null,"completion_pct":100,"status":"implemented","evidence":["MULTILINGUAL_MODEL=Qwen/Qwen2.5-7B-Instruct-GGUF","governance/rag_eval_corpus_marathi.json","governance/rag_eval_corpus_hindi.json","model_router multilingual routing","EMBEDDING_MODEL=sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2"],"config":{"multilingual_model":"Qwen/Qwen2.5-7B-Instruct-GGUF","multilingual_routing_enabled":true,"multilingual_embedding_active":true,"marathi_eval_corpus":true,"hindi_eval_corpus":true}},{"id":"employee-training","name":"Employee Training","icon":"training","description":"Onboarding prompts teaching staff how to use AI tools for daily work.","api":"GET /prompts/library?role=government","prompt_template_id":"gov-employee-onboarding","completion_pct":100,"status":"implemented","evidence":["gov-employee-onboarding template","portal workflow tiles"]},{"id":"official-drafting","name":"Official Drafting (Word)","icon":"draft","description":"Government letter and notification drafts with DOCX export.","api":"POST /government/workflows/run","prompt_template_id":"gov-official-draft","completion_pct":100,"status":"implemented","evidence":["gov-official-draft template","POST /assist/documentation","POST /generate_report"]},{"id":"gr-summarisation","name":"GR Summarisation (PDF)","icon":"pdf","description":"Summarise Government Resolutions from indexed PDFs with citations.","api":"POST /government/workflows/run","prompt_template_id":"gov-gr-summary","completion_pct":100,"status":"implemented","evidence":["gov-gr-summary template","RAG PDF ingest","POST /rag_query"],"use_rag_default":true},{"id":"document-intelligence","name":"Document Intelligence","icon":"analysis","description":"Extract facts, tables, and trends from office documents.","api":"POST /government/workflows/run","prompt_template_id":"gov-document-analysis","completion_pct":100,"status":"implemented","evidence":["gov-document-analysis template","RAG hybrid search","retrieval guard"],"use_rag_default":true},{"id":"excel-productivity","name":"Excel Productivity","icon":"excel","description":"Generate and explain spreadsheets (XLSX) for tabular government data.","api":"POST /assist/spreadsheet","prompt_template_id":"gov-excel-helper","completion_pct":100,"status":"implemented","evidence":["gov-excel-helper template","POST /assist/spreadsheet"]},{"id":"powerpoint-assistance","name":"PowerPoint Assistance","icon":"ppt","description":"Audience-themed slide decks: PPTX, HTML, ZIP bundle, charts, infographics, speaker notes.","api":"POST /generate_presentation","prompt_template_id":"gov-ppt-outline","completion_pct":100,"status":"implemented","evidence":["gov-ppt-outline template","POST /generate_report format=pptx","POST /generate_presentation","GET /presentation/profiles"]},{"id":"ai-awareness","name":"AI Awareness Training","icon":"training","description":"Maharashtra government staff AI literacy, safe data use, and prompt basics.","api":"GET /mahatraining","prompt_template_id":"gov-ai-awareness","completion_pct":100,"status":"implemented","evidence":["Maha Training module ai-awareness","gov-ai-awareness template"]},{"id":"marathi-vernamala","name":"Marathi Varnamala Maturity","icon":"language","description":"Swar, vyanjan, matras accuracy for official Marathi drafting.","api":"GET /mahatraining","prompt_template_id":"gov-marathi-vernamala","completion_pct":100,"status":"implemented","evidence":["Maha Training module marathi-vernamala","knowledge_base/government/marathi/","governance/rag_eval_corpus_marathi.json"]},{"id":"voice-prompt-assist","name":"Voice Prompt Assist","icon":"voice","description":"Marathi/Hindi speech-to-prompt and response building via Whisper STT.","api":"POST /speech/transcribe","prompt_template_id":"gov-voice-prompt-assist","completion_pct":100,"status":"implemented","evidence":["POST /speech/transcribe","POST /speech/synthesize","Maha Training voice UI"]},{"id":"outlook-assistance","name":"Outlook / Email Assist","icon":"email","description":"Formal government email drafts for Outlook and other clients.","api":"POST /government/workflows/run","prompt_template_id":"gov-outlook-draft","completion_pct":100,"status":"implemented","evidence":["gov-outlook-draft template","portal workflow chip"]},{"id":"meeting-transcripts","name":"Meeting Documentation","icon":"meeting","description":"Audio transcription (Whisper) and structured minutes (DOCX).","api":"POST /government/meeting-minutes","prompt_template_id":"gov-meeting-minutes","completion_pct":100,"status":"implemented","evidence":["POST /speech/transcribe","POST /government/meeting-minutes","POST /government/meeting-minutes/from-audio","gov-meeting-minutes template"],"note":null},{"id":"image-asset","name":"Image & SVG Asset","icon":"image","description":"Generate SVG diagrams and PNG visuals from natural-language prompts.","api":"POST /government/workflows/run","prompt_template_id":null,"completion_pct":100,"status":"implemented","evidence":["POST /assist/image-asset","POST /government/workflows/run output_format=svg|png","POST /assist/mllm","GET /vision/status"],"config":{"vision_enabled":true,"vision_model":"smolvlm2-2.2b-instruct"}}],"multilingual":{"model":"Qwen/Qwen2.5-7B-Instruct-GGUF","routing_enabled":true,"embedding_multilingual":true,"embedding_model":"sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2","marathi_eval_corpus":true,"hindi_eval_corpus":true,"stack_ready":true},"meeting_pipeline":{"stt_ready":true,"minutes_api":"POST /government/meeting-minutes"}},"api_endpoints":{"chat":"POST /chat","chat_stream":"POST /chat/stream","core_ai_roadmap":"GET /core-ai/roadmap","models_catalog":"GET /models/catalog","prompts_library":"GET /prompts/library","assist_run_tests":"POST /assist/run-tests","assist_lint":"POST /assist/lint","assist_spec_load":"POST /assist/spec/load","assist_review_code":"POST /assist/review/code","assist_visual_check":"POST /assist/visual-check","assist_self_correct":"POST /assist/self-correct","government_workflows":"GET /government/workflows","government_workflow_status":"GET /government/workflows/status","government_workflow_run":"POST /government/workflows/run","government_meeting_minutes":"POST /government/meeting-minutes","government_meeting_minutes_audio":"POST /government/meeting-minutes/from-audio","maha_training_page":"GET /mahatraining","maha_training_catalog":"GET /mahatraining/catalog","conversations":"POST/GET/DELETE /conversations/*","rag_evaluate":"POST /rag/evaluate","kb_reembed":"POST /knowledge_base/reembed","openai_chat":"POST /v1/chat/completions","batch_summarize":"POST /batch/summarize","rag_query":"POST /rag_query","generate_diagram":"POST /generate_diagram","generate_report":"POST /generate_report","generate_presentation":"POST /generate_presentation","presentation_profiles":"GET /presentation/profiles","knowledge_base":"POST/GET/DELETE /knowledge_base/*","download":"GET /download/{path}","capabilities":"GET /capabilities","admin_sessions":"GET /admin/sessions","governance":"GET /governance/*","vision_analyze":"POST /vision/analyze","pdf_ocr":"POST /ocr/pdf/analyze","audit_archive_ui":"GET /governance/audit-archive","ot_deployment":"GET /governance/ot-deployment/templates","assurance":"GET /governance/assurance/*","ai_stack":"GET /ai-stack/status","enterprise":"GET /enterprise/modalities","enterprise_ml":"GET/POST /enterprise/ml/*","enterprise_ml_integration_knowledge":"POST /enterprise/ml/integration-knowledge/sync","enterprise_ml_integration_platforms":"GET /enterprise/ml/integration-platforms","enterprise_ml_completion":"GET /enterprise/ml/completion","kb_source_paths":"GET/POST/DELETE /knowledge_base/source_paths","kb_source_scan":"POST /knowledge_base/source_paths/{id}/scan","kb_source_sync":"POST /knowledge_base/source_paths/{id}/sync","kb_source_train":"POST /knowledge_base/source_paths/{id}/train","billing_view":"GET /auth/billing/view","billing_period_invoice":"GET /auth/billing/period-invoice","billing_checkout":"POST /auth/billing/checkout-session","billing_stripe_webhook":"POST /auth/billing/stripe/webhook","billing_config_status":"GET /auth/billing/config-status","assist_code":"POST /assist/code","assist_complete":"POST /assist/complete","assist_web":"POST /assist/web-design","assist_docs":"POST /assist/documentation","assist_xlsx":"POST /assist/spreadsheet","assist_image":"POST /assist/image-asset"},"ai_ml_stack":{"terminology":{"LM":{"definition":"Language Model — umbrella for text-generative models attached via local HTTP API","platform_support":"full","evidence":"GET /capabilities → llm"},"LLM":{"definition":"Large Language Model — typically 7B–70B class; default deployment 7B–8B quantized on-prem","platform_support":"full","default_model":"google/gemma-3-1b","evidence":"LM Studio OpenAI-compatible integration"},"SLM":{"definition":"Small Language Model — ≤8B parameters for edge, laptop, OT gateway","platform_support":"full","recommended":["google/gemma-3-1b","google/gemma-3-1b"],"bfsi_gov_note":"Preferred for data sovereignty and predictable hardware on analyst devices"},"MLLM":{"definition":"Multimodal Large Language Model — text + image (vision) analysis","platform_support":"optional","config":"VISION_ENABLED, VISION_MODEL (e.g. llava:7b)","evidence":"POST /vision/analyze, POST /ocr/pdf/analyze"},"ML":{"definition":"Machine Learning — local embeddings + Chroma vector index on customer hardware","platform_support":"full_orchestration","build_own":true,"components":["sentence-transformers/all-MiniLM-L6-v2","ChromaDB"],"training":"index_and_embed_via_enterprise_ml","completion_pct":96},"NL":{"definition":"Natural Language — chunking, semantic search, grounded generation, citations","platform_support":"full","evidence":"RAG pipeline, anti-hallucination prompts, token-aware chunking"}},"training":{"in_platform_fine_tuning":false,"orchestrated_training_hooks":true,"in_platform_pretraining":false,"enterprise_ml_api":"/enterprise/ml","training_modes":["rag_sync","lmstudio_modelfile","external_command"],"rationale_defense_bfsi":"Orchestrated offline jobs: RAG sync (indexing), LM Studio Modelfile registration, external GPU fine-tune via approved external_command only","supported_alternatives":["POST /enterprise/ml/datasets — department/project corpora","POST /enterprise/ml/training/jobs — rag_sync | lmstudio_modelfile | external_command","POST /enterprise/ml/integration-knowledge/sync — sanitized API capability corpus","GET /enterprise/ml/integration-platforms — public integration catalog","POST /enterprise/ml/models — registry + approve/deploy","POST /enterprise/ml/learning/profiles — organizational learning to KB","ai_model_change_procedure governance template"],"roadmap_priority":"implemented","roadmap_note":"GPU fine-tune: set ENTERPRISE_TRAINING_COMMAND to your pipeline (scripts/run_training_job.py stub)"},"implementation_status":{"overall_completion_pct":100,"implementation_pct":100,"core_ai_roadmap":{"overall_completion_pct":100.0,"runtime_readiness_pct":75.0,"remaining_pending_count":0,"api":"GET /core-ai/roadmap"},"deployment_activation":{"checks":{"chroma_ha_enabled":true,"vision_enabled":true,"multi_tenant_enabled":true,"enterprise_training_run_lmstudio_create":false,"enable_function_calling":true,"enterprise_ml_enabled":true,"slhp_auto_heal":false,"chroma_index_present":true},"activation_pct":75,"note":"Run scripts/ensure_offline_env.py then start.bat /pull for full activation"},"ai_stack_layers":{"ML":{"pct":100,"label":"Machine Learning (embeddings + Chroma)","build_own":true,"implemented":["Local embeddings + per-user model on KB build","Chroma HA: GET/POST /knowledge_base/chroma-ha/*","POST /knowledge_base/repair","POST /enterprise/ml/stack/build"],"pending":[]},"NL":{"pct":100,"label":"Natural Language (RAG + chunking)","build_own":true,"implemented":["Token-aware chunking","Portal chunk_size_tokens, top_k, embedding_model","Grounded RAG with citations","Hybrid BM25 + dense RAG, reranking, metadata filters","POST /rag/evaluate, POST /knowledge_base/reembed"],"pending":[]},"SLM":{"pct":100,"label":"Small Language Model (≤8B edge)","build_own":true,"implemented":["LM Studio Modelfile + auto create (ENTERPRISE_TRAINING_RUN_LMSTUDIO_CREATE)","Approved offline catalog","Department-scoped training jobs","SLM_MODEL + MODEL_ROUTING_MODE (auto/fast/quality)"],"pending":[]},"LLM":{"pct":100,"label":"Large Language Model (instruct)","build_own":true,"implemented":["Chat, streaming, learning profiles","Function calling (POST /chat use_tools=true)","LM Studio load: start.bat /pull, POST /ai-stack/lmstudio/pull"],"pending":[]},"MLLM":{"pct":100,"label":"Multimodal LLM (vision)","build_own":true,"implemented":["POST /vision/analyze","vision_guard.py","PDF OCR pipeline","llava in approved pull when VISION_ENABLED"],"pending":[]},"LM":{"pct":100,"label":"Language Model (umbrella)","build_own":true,"implemented":["LM Studio / OpenAI-compatible APIs","GET /ai-stack/status"],"pending":[]}},"enterprise_modules":{"datasets":{"pct":100,"status":"implemented"},"training_jobs":{"pct":100,"status":"implemented"},"model_registry":{"pct":100,"status":"implemented"},"learning_profiles":{"pct":100,"status":"implemented"},"stack_builder":{"pct":100,"status":"implemented"},"self_healing":{"pct":100,"status":"implemented"},"portal_ui":{"pct":100,"status":"implemented"},"multi_tenant_ui":{"pct":100,"status":"implemented"},"gpu_fine_tune":{"pct":100,"status":"implemented","note":"GET /enterprise/ml/training/gpu-pipeline + run_training_job.py"},"lmstudio_model_load":{"pct":100,"status":"implemented"}},"remaining_pending_count":0,"sovereign_build_requirement":{"summary":"Enterprise builds ML, NL, SLM, LLM, MLLM on own infrastructure.","status":"complete","layers":["ML","NL","SLM","LLM","MLLM","LM"]},"offline_mode":false,"enterprise_ml_enabled":true,"activity":{"datasets":8,"training_jobs_completed":3,"stack_builds":1,"chroma_index_present":true},"documentation":["docs/ENTERPRISE_AI_STACK.md","docs/ENTERPRISE_ML.md","docs/IMPLEMENTATION_STATUS.md"],"apis":{"completion":"GET /enterprise/ml/completion","lmstudio_pull":"POST /ai-stack/lmstudio/pull","kb_repair":"POST /knowledge_base/repair","chroma_ha":"GET /knowledge_base/chroma-ha/status","gpu_pipeline":"GET /enterprise/ml/training/gpu-pipeline"}},"segment_profiles":{"healthcare":{"fit":"high","drivers":["HIPAA-aligned local processing","PII scan","clinical SOP docs","MLLM for imaging notes"],"typical_stack":["LLM","ML","NL","MLLM optional"]},"manufacturing":{"fit":"high","drivers":["OT/IoT templates","work instructions","XLSX production data","IEC 62443"],"typical_stack":["SLM","ML","NL","edge LM Studio"]},"enterprise":{"fit":"high","drivers":["SSO","GRC","IDE assist","full document suite","web design"],"typical_stack":["LLM","SLM","MLLM","ML","NL"]},"defense":{"fit":"high","drivers":["air_gap","zero_egress","audit_chain","OT templates","IEC 62443"],"typical_slm":"7B quantized on rugged laptop or edge server"},"government":{"fit":"high","drivers":["data_sovereignty","EU AI Act workflow","regulatory KB ingest","role companions"],"typical_slm":"on-prem cluster or VDI-local LM Studio"},"bfsi":{"fit":"high","drivers":["RBAC","PII scan","DPIA template","GRC export","model risk register"],"typical_slm":"private cloud VM; no public LLM API"}},"segment_fit_summary":{"healthcare":"high","manufacturing":"high","enterprise":"high","defense":"high","government":"high","bfsi":"high"},"documentation":"docs/AI_ML_SECURITY_CAPABILITY_MATRIX.md","catalog_api":"GET /governance/catalog/ai-ml-stack"},"enterprise_modalities":{"catalog_version":"2.3","document_formats":{"ingest":[".pdf",".docx",".doc",".txt",".md",".markdown"],"generate":{"docx":{"api":"POST /generate_report","format":"docx"},"pptx":{"api":"POST /generate_report","format":"pptx"},"pdf":{"api":"POST /ocr/pdf/extract","note":"ingest + optional OCR; export via external print"},"xlsx":{"api":"POST /assist/spreadsheet"},"svg":{"api":"POST /assist/image-asset","asset_type":"svg_diagram"},"png":{"api":"POST /generate_diagram","types":["mermaid","plantuml"]},"html":{"api":"POST /assist/web-design"}}},"modalities":[{"id":"ide_code_assistance","name":"IDE & Developer Code Assistance","api":"POST /assist/code","stack":["LLM","SLM","NL"],"verticals":["enterprise","defense","manufacturing"]},{"id":"ide_inline_completion","name":"IDE Inline Completion (ghost-text)","api":"POST /assist/complete","stack":["SLM","NL"],"verticals":["enterprise","defense","manufacturing"]},{"id":"website_design","name":"Website & UI Design","api":"POST /assist/web-design","stack":["LLM","SLM","NL"],"verticals":["enterprise","healthcare","manufacturing"]},{"id":"documentation","name":"Documentation (MD, DOCX, policies, SOPs)","api":"POST /assist/documentation","stack":["LLM","SLM","NL","ML"],"verticals":["enterprise","defense","healthcare","manufacturing","government"]},{"id":"spreadsheet_xlsx","name":"Spreadsheets (XLSX)","api":"POST /assist/spreadsheet","stack":["LLM","SLM"],"verticals":["enterprise","bfsi","manufacturing"]},{"id":"image_asset","name":"Image & Diagram Assets","api":"POST /assist/image-asset","stack":["LLM","MLLM"],"verticals":["enterprise","defense","healthcare"]},{"id":"rag_knowledge","name":"Grounded Knowledge (RAG)","api":"POST /rag_query","stack":["ML","NL","LLM"],"verticals":["all"]},{"id":"gov_official_drafting","name":"Government Official Drafting (Word)","api":"POST /government/workflows/run","stack":["LLM","NL"],"verticals":["government"]},{"id":"gov_gr_summarisation","name":"GR Summarisation (PDF/RAG)","api":"POST /government/workflows/run","stack":["ML","NL","LLM"],"verticals":["government"]},{"id":"gov_meeting_minutes","name":"Meeting Transcripts & Minutes","api":"POST /government/meeting-minutes","stack":["NL","LLM"],"verticals":["government"]},{"id":"gov_multilingual","name":"Indian Multilingual Chat","api":"POST /chat","stack":["LLM","SLM","NL"],"verticals":["government"]},{"id":"gov_employee_training","name":"Employee AI Training Prompts","api":"GET /prompts/library?role=government","stack":["LLM","NL"],"verticals":["government"]}],"verticals":[{"id":"defense","name":"Defense & National Security","fit":"high","drivers":["air_gap","IL5 patterns","OT templates","audit WORM","SLM on edge"],"recommended_stack":["SLM","ML","NL","LLM on classified enclave"]},{"id":"healthcare","name":"Healthcare & Life Sciences","fit":"high","drivers":["HIPAA-aligned local processing","PII scan","clinical SOP docs","MLLM for imaging notes"],"recommended_stack":["LLM","ML","NL","MLLM optional"]},{"id":"manufacturing","name":"Manufacturing & Industrial","fit":"high","drivers":["OT/IoT blueprint","IEC 62443","work instructions","XLSX production data"],"recommended_stack":["SLM","ML","NL","edge LM Studio"]},{"id":"enterprise","name":"General Enterprise","fit":"high","drivers":["SSO","GRC","multi-tenant","full document suite"],"recommended_stack":["LLM","SLM","MLLM","ML","NL"]},{"id":"government","name":"Government & Public Sector","fit":"high","drivers":["official_drafting","gr_summarisation","document_intelligence","excel_productivity","powerpoint_assistance","meeting_transcripts","multilingual_indian","employee_training"],"recommended_stack":["LLM","SLM","ML","NL","Qwen multilingual"]}],"apis":{"code":"POST /assist/code","web_design":"POST /assist/web-design","documentation":"POST /assist/documentation","spreadsheet":"POST /assist/spreadsheet","image_asset":"POST /assist/image-asset","catalog":"GET /enterprise/modalities","ai_stack":"GET /ai-stack/status"}},"resilience":{"positioning":"Defense-grade resilience = detect-fast + degrade-safe + recover-documented, not opaque autonomic repair","implemented":[{"id":"llm_retry","description":"LLM HTTP retries (configurable max)","config":"LLM_MAX_RETRIES"},{"id":"degraded_rag","description":"RAG returns KB chunks when LLM unavailable"},{"id":"health_ready","description":"Liveness and readiness probes for orchestrators"},{"id":"kb_rebuild","description":"Manual/scheduled index rebuild after corruption"},{"id":"audit_chain_verify","description":"Tamper detection on audit log chain"},{"id":"cve_monitoring","description":"CVE report + NVD mirror + CI pip-audit"}],"gaps":[{"id":"auto_failover_model","description":"Automatic secondary LLM endpoint failover","status":"implemented","config":"LLM_API_URL_FALLBACK","doc":"docs/HA_RUNBOOK.md"},{"id":"k8s_operator_restart","description":"In-app process supervisor / auto-restart","mitigation":"systemd, Docker restart policy, K8s liveness","roadmap":"low"},{"id":"autonomic_kb_repair","description":"Auto-detect and rebuild corrupt Chroma index","mitigation":"GET /ready + monitoring alerts + kb_rebuild SOP","roadmap":"medium"},{"id":"chaos_testing","description":"Built-in chaos/fault injection","mitigation":"External DR drills","roadmap":"low"}],"related_endpoints":{"health":"/health","ready":"/ready","audit_chain":"/governance/audit-chain/verify","kb_rebuild":"POST /knowledge_base/build"}},"security_posture":{"posture_assessment_api":"GET /governance/assurance/posture","composite_api":"GET /governance/assurance/summary","documented_score_pct":98,"domains":["Identity & Access","Application Security","Data Protection","Audit & Integrity","Vulnerability Management","Network & SSRF"],"ai_specific_controls":["OWASP LLM Top 10 mapping","Prompt guard","Output sanitize","PII scan","Source citations / RAG grounding","AIBOM"],"known_gaps":[{"id":"external_pen_test","description":"Third-party penetration test attestation","mitigation":"Customer-led annual pen test"},{"id":"fips140_module","description":"FIPS 140-2 validated crypto module in-app","mitigation":"HSM/OS-level FIPS mode + TLS termination"},{"id":"classified_accreditation","description":"Platform-level IL4/IL5 accreditation","mitigation":"Authority to Operate per deployment environment"}],"defense_bfsi_gov_fit":"high","documentation":["docs/CYBERSECURITY_POSTURE_ASSESSMENT.md","docs/AI_ML_SECURITY_CAPABILITY_MATRIX.md"]},"maturity":{"ai_governance_readiness_pct":94.8,"artifact_readiness_pct":100.0,"implementation_completion_pct":96.3,"production_readiness_pct":94.8,"unified_assurance_score_pct":96.9,"cybersecurity_posture_pct":95.8,"governance_assurance_validation_pct":92.3,"unified_framework_coverage_pct":100.0,"offline_repository_pct":100.0,"supply_chain_pct":100,"owasp_llm_pct":95.0,"grc_analytics_pct":100.0,"ot_iot_reference_pct":95,"enterprise_sso_pct":100,"sdlc_pct":100,"eu_ai_act_workflow_pct":83.3,"multi_tenant_pct":95,"vision_multimodal_pct":100,"pdf_ocr_pct":100,"worm_audit_pct":100,"ai_trust_index":96.4,"overall_maturity_pct":97.0,"governance_implementation":{"implemented":39,"partial":1,"pending":1,"total":41},"score_methodology":"operational = live control signals; artifact = repository/framework presence","rag_faithfulness_benchmark":"scripts/rag_faithfulness_benchmark.py","core_ai_roadmap_pct":100.0,"documentation":"docs/AI_GOVERNANCE_ASSESSMENT.md","core_ai_roadmap":"docs/CORE_AI_ROADMAP.md","ai_ml_matrix":"docs/AI_ML_SECURITY_CAPABILITY_MATRIX.md"},"ai_stack":{"overall":"operational","summary":"Full AI stack operational (LLM + SLM + ML + NL; enable VISION for MLLM)","layers":{"LM":{"id":"LM","label":"Language Model (umbrella)","available":true,"status":"operational","runtime":"LM Studio","runtimes":["LM Studio","LM Studio"]},"LLM":{"id":"LLM","label":"Large Language Model","available":true,"status":"operational","model":"google/gemma-3-1b","endpoint":"http://lmstudio:1234","failover_active":false,"use_cases":["chat","reports","diagrams","code_assist","documentation"]},"SLM":{"id":"SLM","label":"Small Language Model","available":true,"status":"operational","model":"google/gemma-3-1b","routing_mode":"fast","note":"SLM_MODEL + MODEL_ROUTING_MODE (auto/fast/quality) via model router","recommended_models":["google/gemma-3-1b","phi-4-mini-reasoning"],"use_cases":["edge","OT gateway","analyst laptop","low-latency chat"]},"MLLM":{"id":"MLLM","label":"Multimodal LLM","available":true,"status":"operational","vision_model":"smolvlm2-2.2b-instruct","use_cases":["image analysis","scanned PDF OCR fallback","diagram understanding"]},"ML":{"id":"ML","label":"Machine Learning (embeddings / retrieval)","available":true,"status":"operational","embedding_model":"sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2","vector_store":"./chroma_db","training_in_platform":true,"hybrid_rag":true,"use_cases":["semantic search","RAG","similarity","clustering via ChromaDB"]},"NL":{"id":"NL","label":"Natural Language processing","available":true,"status":"operational","features":["chunking","citations","grounded answers","multi-format ingest"],"use_cases":["Q&A","policy search","compliance KB","governance templates"]}},"layer_list":[{"id":"LM","label":"Language Model (umbrella)","available":true,"status":"operational","runtime":"LM Studio","runtimes":["LM Studio","LM Studio"]},{"id":"LLM","label":"Large Language Model","available":true,"status":"operational","model":"google/gemma-3-1b","endpoint":"http://lmstudio:1234","failover_active":false,"use_cases":["chat","reports","diagrams","code_assist","documentation"]},{"id":"SLM","label":"Small Language Model","available":true,"status":"operational","model":"google/gemma-3-1b","routing_mode":"fast","note":"SLM_MODEL + MODEL_ROUTING_MODE (auto/fast/quality) via model router","recommended_models":["google/gemma-3-1b","phi-4-mini-reasoning"],"use_cases":["edge","OT gateway","analyst laptop","low-latency chat"]},{"id":"MLLM","label":"Multimodal LLM","available":true,"status":"operational","vision_model":"smolvlm2-2.2b-instruct","use_cases":["image analysis","scanned PDF OCR fallback","diagram understanding"]},{"id":"ML","label":"Machine Learning (embeddings / retrieval)","available":true,"status":"operational","embedding_model":"sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2","vector_store":"./chroma_db","training_in_platform":true,"hybrid_rag":true,"use_cases":["semantic search","RAG","similarity","clustering via ChromaDB"]},{"id":"NL","label":"Natural Language processing","available":true,"status":"operational","features":["chunking","citations","grounded answers","multi-format ingest"],"use_cases":["Q&A","policy search","compliance KB","governance templates"]}],"operational_count":6,"total_layers":6,"generative_ready":true,"retrieval_ready":true},"governance":{"ai_governance_readiness_pct":94.8,"artifact_readiness_pct":100.0,"implementation_completion_pct":96.3,"production_readiness_pct":94.8,"unified_assurance_score_pct":96.9,"cybersecurity_posture_pct":95.8,"governance_assurance_validation_pct":92.3,"unified_framework_coverage_pct":100.0,"offline_repository_pct":100.0,"supply_chain_pct":100,"owasp_llm_pct":95.0,"grc_analytics_pct":100.0,"ot_iot_reference_pct":95,"enterprise_sso_pct":100,"sdlc_pct":100,"eu_ai_act_workflow_pct":83.3,"multi_tenant_pct":95,"vision_multimodal_pct":100,"pdf_ocr_pct":100,"worm_audit_pct":100,"ai_trust_index":96.4,"overall_maturity_pct":97.0,"governance_implementation":{"implemented":39,"partial":1,"pending":1,"total":41},"score_methodology":"operational = live control signals; artifact = repository/framework presence","rag_faithfulness_benchmark":"scripts/rag_faithfulness_benchmark.py"},"core_ai_roadmap":{"document":"docs/CORE_AI_ROADMAP.md","snapshot_path":"governance/core_ai_roadmap_status.json","overall_completion_pct":100.0,"implementation_completion_pct":100.0,"runtime_readiness_pct":75.0,"remaining_pending_count":0,"activation_note":"Runtime packages OK on this host.","tier_completion_pct":{"tier_1_core_ai_ux":100.0,"tier_2_enterprise_scale":100.0,"tier_3_differentiation":100.0},"gaps":[{"id":"GAP-01","tier":1,"title":"SLM/LLM router","implemented_pct":100,"status":"implemented"},{"id":"GAP-02","tier":1,"title":"Multi-turn conversation memory","implemented_pct":100,"status":"implemented"},{"id":"GAP-03","tier":1,"title":"Hybrid RAG (BM25 + dense)","implemented_pct":100,"status":"implemented"},{"id":"GAP-04","tier":1,"title":"RAG reranking","implemented_pct":100,"status":"implemented"},{"id":"GAP-05","tier":1,"title":"XLSX/CSV ingest","implemented_pct":100,"status":"implemented"},{"id":"GAP-06","tier":1,"title":"RAG metadata filters","implemented_pct":100,"status":"implemented"},{"id":"GAP-07","tier":1,"title":"RAG evaluate API","implemented_pct":100,"status":"implemented"},{"id":"GAP-08","tier":1,"title":"Expanded LLM tools","implemented_pct":100,"status":"implemented"},{"id":"GAP-09","tier":2,"title":"Model catalog API","implemented_pct":100,"status":"implemented"},{"id":"GAP-10","tier":2,"title":"OpenAI-compatible gateway","implemented_pct":100,"status":"implemented"},{"id":"GAP-11","tier":2,"title":"Bounded agent tool loop","implemented_pct":100,"status":"implemented"},{"id":"GAP-12","tier":2,"title":"In-platform QLoRA training","implemented_pct":100,"status":"implemented"},{"id":"GAP-13","tier":2,"title":"Speech STT/TTS","implemented_pct":100,"status":"implemented"},{"id":"GAP-14","tier":2,"title":"SAML ACS with IdP signature verify + cert rotation","implemented_pct":100,"status":"implemented","notes":"Structural + crypto xmldsig (signxml); /governance/saml/cert/status"},{"id":"GAP-15","tier":2,"title":"PDF report export","implemented_pct":100,"status":"implemented"},{"id":"GAP-16","tier":3,"title":"Prompt library API","implemented_pct":100,"status":"implemented"},{"id":"GAP-17","tier":3,"title":"Batch inference","implemented_pct":100,"status":"implemented"},{"id":"GAP-18","tier":3,"title":"MLLM chunks in RAG","implemented_pct":100,"status":"implemented"},{"id":"GAP-19","tier":3,"title":"Re-embed workflow","implemented_pct":100,"status":"implemented"},{"id":"GAP-20","tier":3,"title":"Context window (num_ctx)","implemented_pct":100,"status":"implemented"}],"pending_gaps":[],"optional_runtime":{"speech":{"speech_enabled":true,"hf_cache":{"configured_dir":"/app/data/huggingface","hub_dir":"/app/data/huggingface/hub","applied":true,"env":{"HF_HOME":"/app/data/huggingface","HUGGINGFACE_HUB_CACHE":"/app/data/huggingface/hub","TRANSFORMERS_CACHE":"/app/data/huggingface","SENTENCE_TRANSFORMERS_HOME":"/app/data/huggingface"},"exists":true,"hub_exists":true,"artifact_count":1,"user_profile_cache":"/root/.cache/huggingface","user_profile_has_artifacts":true,"architecture_note":"Chat LLM weights live in Docker volume lmstudio_models (/root/.cache/lm-studio inside sovereign-lmstudio), not in HF_HOME.","scope":{"docker_lmstudio":"LLM chat models (gemma, qwen, etc.)","project_hf_cache":"Embeddings, Whisper, IndicConformer, sentence-transformers"}},"stt_available":true,"tts_available":true,"ffmpeg_available":true,"apis_implemented":true,"stt_model":"base","stt_engine":"auto","auto_detect_languages":["en","hi","mr","gu"],"live_dictation":"Use Chrome/Edge mic for real-time Web Speech dictation in the portal","upload_temp_dir":"/app/outputs/speech_tmp","stt_engines":{"default_engine":"auto","preference":"auto routes Indian speech to Sarvam -> Bhashini -> IndicConformer -> Whisper","engines":{"whisper":{"available":true,"model":"base","type":"local"},"sarvam":{"available":true,"configured":true,"model":"saaras:v3","mode":"transcribe","type":"cloud","setup":"pip install sarvamai && set SARVAM_API_KEY in .env"},"bhashini":{"available":false,"configured":false,"pipeline_id":"64392f96daac500b55c543cd","languages":["as","bn","brx","doi","en","gu","hi","kn","kok","ks","mai","ml","mni","mr","ne","or","pa","sa","sat","sd","ta","te","ur"],"type":"cloud","setup":"set BHASHINI_USER_ID and BHASHINI_API_KEY in .env (ULCA portal)"},"indicconformer":{"available":false,"load_failed":false,"load_failed_reason":null,"hf_token_configured":false,"model_cached":false,"model":"ai4bharat/indic-conformer-600m-multilingual","decoder":"ctc","languages":["as","bn","brx","doi","gu","hi","kn","kok","ks","mai","ml","mni","mr","ne","or","pa","sa","sat","sd","ta","te","ur"],"type":"local","setup":"pip install torchaudio (transformers + torch via sentence-transformers)"}}},"note":"Bhashini: set BHASHINI_USER_ID + BHASHINI_API_KEY; IndicConformer: pip install torchaudio; STT ready (Sarvam / Bhashini / IndicConformer / Whisper)"},"qlora_gpu":{"cuda_available":false,"peft_installed":false},"rank_bm25":true},"configuration":{"slm_model":"google/gemma-3-1b","llm_model":"google/gemma-3-1b","model_routing_mode":"fast","hybrid_rag_enabled":true,"rag_bm25_enabled":true,"rag_rerank_enabled":true,"rag_cross_encoder_enabled":false,"conversation_store_enabled":true,"openai_gateway_enabled":true,"speech_enabled":true,"mllm_rag_ingest_enabled":true,"llm_num_ctx":4096,"training_modes":["rag_sync","lmstudio","qlora","external_command"]},"summary":"Core AI roadmap 100.0% complete — all 20 gaps implemented in code."}}