﻿{
    "ok": true,
    "schema": "minike-local-ai-capabilities-v1",
    "generated_at": "2026-07-12T15:42:52-03:00",
    "summary": {
        "total": 11,
        "by_status": {
            "available": 1,
            "available_partial": 2,
            "planned_optional": 6,
            "optional_model_required": 1,
            "assisted_not_guaranteed": 1
        },
        "ready_now": 3,
        "needs_install_or_model": 7,
        "updated_at": "2026-06-18"
    },
    "registry": {
        "schema_version": 1,
        "updated_at": "2026-06-18",
        "title": "Mike Local capability registry",
        "truth_policy": [
            "available significa que o fluxo principal ja existe no produto atual.",
            "available_partial significa que existe uma parte utilizavel, mas faltam dependencias, formatos ou UX para cobrir todos os casos.",
            "optional_model_required significa que o recurso depende de modelo, runtime ou API que o usuario precisa instalar, ativar ou conectar.",
            "planned_optional significa que a arquitetura esta definida, mas a instalacao/execucao ainda nao deve ser prometida como pronta.",
            "A Mike nao deve afirmar que domina todas as linguagens, impostos, imagens ou audios sem checar fonte, modelo, dependencia e teste."
        ],
        "resource_policy": {
            "normal_local_ai_budget_percent": 50,
            "agent_mode_budget_percent": 70,
            "heavy_install_requires_confirmation": true,
            "reuse_installed_first": true,
            "auto_downgrade_when_overloaded": true,
            "avoid_large_models_below_ram_gb": 16,
            "private_files_default": "local_only_until_user_approves"
        },
        "capabilities": [
            {
                "id": "text_chat",
                "name_pt": "Conversa local",
                "name_en": "Local chat",
                "status": "available",
                "runtime": [
                    "ollama",
                    "cloud_byok_optional"
                ],
                "summary_pt": "Conversa geral sem exigir projeto, com historico local e respostas leves para tarefas simples.",
                "summary_en": "General chat without requiring a project, with local history and lightweight answers for simple tasks.",
                "ready_when": [
                    "Ollama ativo ou provedor cloud autorizado",
                    "modelo geral compativel instalado"
                ],
                "recommended_models": [
                    "gemma3:1b",
                    "gemma3:4b",
                    "gemma4:e2b",
                    "qwen3.5:2b"
                ],
                "user_visible": true
            },
            {
                "id": "programming",
                "name_pt": "Programacao assistida",
                "name_en": "Assisted programming",
                "status": "available_partial",
                "runtime": [
                    "editor_local",
                    "ollama_coder_optional",
                    "codex_optional"
                ],
                "summary_pt": "Abre projetos autorizados, edita arquivos, salva automaticamente e pode revisar codigo. LSP completo e Codex embutido ainda sao etapas do roadmap.",
                "summary_en": "Opens trusted projects, edits files, autosaves and can review code. Full LSP and embedded Codex are still roadmap items.",
                "ready_when": [
                    "pasta autorizada",
                    "arquivo textual",
                    "modelo geral ou coder instalado"
                ],
                "recommended_models": [
                    "qwen2.5-coder:1.5b",
                    "qwen2.5-coder:3b",
                    "qwen2.5-coder:7b",
                    "qwen2.5-coder:14b"
                ],
                "limitations": [
                    "Nao garantir todas as linguagens sem analisador/teste instalado",
                    "Acoes destrutivas e deploy exigem aprovacao humana"
                ],
                "user_visible": true
            },
            {
                "id": "file_upload",
                "name_pt": "Arquivos no chat",
                "name_en": "Chat file uploads",
                "status": "available_partial",
                "runtime": [
                    "local_upload_store"
                ],
                "summary_pt": "Recebe arquivos e guarda localmente. Textos e codigos sao os primeiros formatos seguros; PDF, imagem e audio exigem extratores dedicados.",
                "summary_en": "Receives files and stores them locally. Text and code are the first safe formats; PDF, images and audio need dedicated extractors.",
                "ready_when": [
                    "arquivo escolhido pelo usuario",
                    "tipo permitido",
                    "tamanho dentro do limite"
                ],
                "planned_extractors": [
                    "ocr",
                    "pdf_text",
                    "audio_transcription"
                ],
                "user_visible": true
            },
            {
                "id": "memory_persistence",
                "name_pt": "Memoria persistente",
                "name_en": "Persistent memory",
                "status": "planned_optional",
                "runtime": [
                    "local_memory_store_optional",
                    "summary_index_optional"
                ],
                "summary_pt": "Guardar contexto util por usuario, projeto e organizacao para continuidade entre sessoes com privacidade e exclusao controlada.",
                "summary_en": "Store useful context per user, project and organization for continuity across sessions with privacy and controlled deletion.",
                "ready_when": [
                    "politica de privacidade definida",
                    "armazenamento local habilitado",
                    "escopo aprovado pelo usuario"
                ],
                "limitations": [
                    "Nao misturar memorias entre clientes ou projetos",
                    "Memorias antigas devem ser revalidadas antes de acao critica"
                ],
                "official_sources": [
                    "https://github.com/thedotmack/claude-mem"
                ],
                "user_visible": true
            },
            {
                "id": "image_understanding",
                "name_pt": "Entender imagens",
                "name_en": "Image understanding",
                "status": "optional_model_required",
                "runtime": [
                    "ollama_multimodal",
                    "cloud_vision_byok"
                ],
                "summary_pt": "Pode ser ativado com modelo multimodal compativel ou provedor cloud autorizado. Nao instalar automaticamente em PC fraco.",
                "summary_en": "Can be enabled with a compatible multimodal model or an authorized cloud vision provider. Do not auto-install on weak PCs.",
                "ready_when": [
                    "modelo multimodal instalado ou cloud autorizado",
                    "arquivo de imagem aprovado pelo usuario"
                ],
                "recommended_models": [
                    "gemma3:4b",
                    "qwen3.5:4b",
                    "gemma4:e2b"
                ],
                "minimum_recommended_ram_gb": 16,
                "user_visible": true
            },
            {
                "id": "ocr",
                "name_pt": "OCR local",
                "name_en": "Local OCR",
                "status": "planned_optional",
                "runtime": [
                    "tesseract_optional"
                ],
                "summary_pt": "Extrair texto de imagens e scans usando OCR local quando instalado.",
                "summary_en": "Extract text from images and scans using local OCR when installed.",
                "ready_when": [
                    "tesseract instalado",
                    "idioma treinado disponivel"
                ],
                "official_sources": [
                    "https://github.com/tesseract-ocr/tesseract",
                    "https://tesseract-ocr.github.io/tessdoc/Installation.html"
                ],
                "user_visible": true
            },
            {
                "id": "audio_transcription",
                "name_pt": "Transcrever audio",
                "name_en": "Audio transcription",
                "status": "planned_optional",
                "runtime": [
                    "whisper_cpp_optional",
                    "ffmpeg_optional"
                ],
                "summary_pt": "Converter audio em texto localmente, com fila e progresso visual. Requer runtime de transcricao e conversor de audio.",
                "summary_en": "Convert audio to text locally, with queue and visual progress. Requires a transcription runtime and audio converter.",
                "ready_when": [
                    "whisper.cpp ou equivalente instalado",
                    "ffmpeg disponivel para converter formatos"
                ],
                "official_sources": [
                    "https://github.com/ggml-org/whisper.cpp"
                ],
                "user_visible": true
            },
            {
                "id": "text_to_speech",
                "name_pt": "Falar respostas",
                "name_en": "Text to speech",
                "status": "planned_optional",
                "runtime": [
                    "piper_optional",
                    "system_tts_optional"
                ],
                "summary_pt": "Ler respostas em voz alta usando voz local quando instalada ou voz do sistema quando disponivel.",
                "summary_en": "Read answers aloud using local voices when installed or system voices when available.",
                "ready_when": [
                    "voz local instalada ou TTS do sistema disponivel",
                    "usuario ativou audio"
                ],
                "official_sources": [
                    "https://github.com/rhasspy/piper",
                    "https://rhasspy.github.io/piper-samples/"
                ],
                "user_visible": true
            },
            {
                "id": "image_generation",
                "name_pt": "Gerar imagens",
                "name_en": "Image generation",
                "status": "planned_optional",
                "runtime": [
                    "comfyui_optional",
                    "cloud_image_byok"
                ],
                "summary_pt": "Geracao local de imagens deve ser opcional, pesada e com confirmacao. GPU e espaco em disco sao recomendados.",
                "summary_en": "Local image generation must be optional, heavy and confirmed by the user. GPU and disk space are recommended.",
                "ready_when": [
                    "ComfyUI ou backend equivalente instalado",
                    "modelo de imagem instalado/licenciado",
                    "politica de conteudo ativa"
                ],
                "official_sources": [
                    "https://github.com/Comfy-Org/ComfyUI"
                ],
                "minimum_recommended_ram_gb": 16,
                "gpu_recommended": true,
                "user_visible": true
            },
            {
                "id": "video_understanding",
                "name_pt": "Entender video",
                "name_en": "Video understanding",
                "status": "planned_optional",
                "runtime": [
                    "frame_extraction",
                    "vision_model_optional"
                ],
                "summary_pt": "Primeira versao deve extrair quadros e audio, analisar por etapas e mostrar custo/tempo antes de rodar.",
                "summary_en": "First version should extract frames and audio, analyze step by step and show cost/time before running.",
                "ready_when": [
                    "ffmpeg instalado",
                    "modelo de visao ou cloud autorizado"
                ],
                "user_visible": true
            },
            {
                "id": "all_languages_programming",
                "name_pt": "Linguagens de programacao",
                "name_en": "Programming languages",
                "status": "assisted_not_guaranteed",
                "runtime": [
                    "programming_skill",
                    "official_docs_registry",
                    "tests"
                ],
                "summary_pt": "A Mike pode aprender e ajudar em muitas linguagens usando documentacao oficial, mas deve validar com ferramentas reais do projeto.",
                "summary_en": "Mike can learn and help across many languages using official docs, but must validate with real project tools.",
                "ready_when": [
                    "linguagem detectada",
                    "fontes oficiais selecionadas",
                    "analisador/teste disponivel quando possivel"
                ],
                "limitations": [
                    "Nao prometer dominio absoluto",
                    "Sempre citar fonte e teste quando o risco for alto"
                ],
                "user_visible": true
            }
        ],
        "install_profiles": [
            {
                "id": "lite",
                "name": "PC leve",
                "max_ram_gb": 8,
                "enable": [
                    "text_chat",
                    "file_upload",
                    "programming"
                ],
                "manual_only": [
                    "memory_persistence"
                ],
                "avoid": [
                    "image_generation",
                    "video_understanding",
                    "large_multimodal_models"
                ]
            },
            {
                "id": "balanced",
                "name": "PC intermediario",
                "min_ram_gb": 8,
                "max_ram_gb": 16,
                "enable": [
                    "text_chat",
                    "file_upload",
                    "programming",
                    "ocr",
                    "audio_transcription"
                ],
                "manual_only": [
                    "memory_persistence",
                    "image_understanding",
                    "text_to_speech"
                ]
            },
            {
                "id": "power",
                "name": "PC forte ou com GPU",
                "min_ram_gb": 16,
                "enable": [
                    "text_chat",
                    "file_upload",
                    "programming",
                    "image_understanding",
                    "ocr",
                    "audio_transcription",
                    "text_to_speech"
                ],
                "manual_only": [
                    "memory_persistence",
                    "image_generation",
                    "video_understanding"
                ]
            }
        ],
        "optional_modules": [
            {
                "id": "ocr_tesseract",
                "capability_id": "ocr",
                "name": "Tesseract OCR",
                "install_mode": "optional_background_when_winget_available",
                "weight": "light",
                "official_source": "https://tesseract-ocr.github.io/tessdoc/Installation.html",
                "notes": "Usado para extrair texto de imagens e PDFs escaneados. Revisao humana continua obrigatoria em documentos sensiveis."
            },
            {
                "id": "audio_ffmpeg",
                "capability_id": "audio_transcription",
                "name": "FFmpeg",
                "install_mode": "optional_background_when_winget_available",
                "weight": "medium",
                "official_source": "https://ffmpeg.org/",
                "notes": "Conversor de midia usado antes de transcricao e em ferramentas de audio/video."
            },
            {
                "id": "audio_whisper_cpp",
                "capability_id": "audio_transcription",
                "name": "whisper.cpp",
                "install_mode": "guided",
                "weight": "medium",
                "official_source": "https://github.com/ggml-org/whisper.cpp",
                "notes": "Transcricao local; instalacao automatica fica bloqueada ate escolher pacote/runtime por CPU/GPU."
            },
            {
                "id": "tts_system",
                "capability_id": "text_to_speech",
                "name": "Voz do Windows",
                "install_mode": "built_in_when_available",
                "weight": "light",
                "official_source": "https://learn.microsoft.com/dotnet/api/system.speech.synthesis.speechsynthesizer",
                "notes": "Permite testar fala local sem baixar modelo extra."
            },
            {
                "id": "tts_piper",
                "capability_id": "text_to_speech",
                "name": "Piper TTS",
                "install_mode": "guided",
                "weight": "medium",
                "official_source": "https://github.com/rhasspy/piper",
                "notes": "Voz neural local; tratar como opcional guiado ate definir canal mantido."
            },
            {
                "id": "image_comfyui",
                "capability_id": "image_generation",
                "name": "ComfyUI",
                "install_mode": "guided_heavy",
                "weight": "heavy",
                "official_source": "https://github.com/Comfy-Org/ComfyUI",
                "notes": "Geracao de imagem local exige Python, modelos grandes, disco e preferencialmente GPU."
            }
        ]
    }
}