Releases: Kronos1027/AtlasKronos
Release list
AtlasKronos v1.0.1 — Correção crítica: importação de modelo via SAF
🤖 AtlasKronos v1.0.1
🐛 Problema crítico corrigido
Problema reportado: No Android 13+, o Scoped Storage bloqueia totalmente o acesso à pasta /Android/data/com.kronos1027.atlaskronos.debug/files/ — nenhum app de arquivos (Termux, ZArchiver) consegue copiar o modelo para lá. Era impossível colocar o modelo manualmente.
Causa técnica:
- Isolamento em Sandbox: a pasta
/Android/data/é privada — só o próprio app tem acesso - Proteção Anti-Malware: Google bloqueou o acesso para evitar que apps leiam dados de outros
- Bloqueio do Seletor do Sistema (SAF): a partir do Android 13, a permissão manual de sobreposição foi desativada no kernel
✨ Solução: importação nativa via SAF
O app agora tem um botão 'Selecionar modelo (.gguf)' que abre o seletor de arquivos do sistema (Storage Access Framework). O usuário baixa o modelo em Downloads (como faria normalmente), abre o AtlasKronos, toca no botão, escolhe o arquivo, e o próprio app copia o conteúdo para sua pasta interna onde tem acesso total.
📋 Como usar (passo a passo)
-
Baixe o modelo (380MB) no navegador do celular:
- URL:
huggingface.co/bartowski/Qwen2.5-0.5B-Instruct-GGUF/resolve/main/Qwen2.5-0.5B-Instruct-Q4_K_M.gguf - O arquivo vai pra pasta Download
- URL:
-
Instale o APK v1.0.1 (por cima da v1.0.0 se já tinha instalado — não perde dados)
-
Abra o AtlasKronos — vai aparecer uma tela de boas-vindas com:
- Instruções claras (com o link acima)
- Botão grande '📁 Selecionar modelo (.gguf)'
-
Toque no botão — o seletor de arquivos do Android abre
-
Navegue até Downloads e selecione o arquivo
.ggufbaixado -
Aguarde a cópia — barra de progresso mostra percentual + MB copiados (~10-30s)
-
Pronto! O app mostra '✓ Modelo importado!' e abre a tela de chat
🔧 Melhorias técnicas
LlamaEngine.importModelFromUri()— copia viaContentResolvercom buffer 64KBInitCallback.onModelMissing()— notifica UI pra mostrar overlay de importação- Progresso em tempo real (percentual + bytes) durante a cópia
- Aceita qualquer arquivo
.gguf(não só nome fixo) — funciona com outros modelos - Deleta modelos antigos ao importar novo (mantém só 1)
takePersistableUriPermission()— pode re-ler o URI se necessário- Instruções claras com link clicável dentro do app
⚠️ Mesmas limitações da v1.0.0 (não testadas em device)
- ❌ Não foi possível testar em emulador (sem KVM no ambiente)
- ❌ Não foi possível testar em celular físico (sem ADB device conectado)
- ✅ Build do APK: SUCCESSFUL em 22s
- ✅ 13 libs nativas + 2 assets empacotados corretamente
- ✅ Inferência do llama.cpp + Qwen2.5-0.5B validada no Linux x86_64 (25 tokens/s)
- ✅ 5/5 testes de function-calling passaram no Linux
- ✅ 24/24 testes unitários JVM passaram
Sobre a meta de 500MB RAM: continua não atingida (estimativa ~650MB). Trade-off documentado no README.
📥 Download
Baixe o AtlasKronos-v1.0.1-debug.apk abaixo (200MB).
💜 Créditos
Feito por Darlan (NATSKY) — @Kronos1027
- llama.cpp — runtime de inferência
- Qwen2.5-0.5B-Instruct — modelo (Alibaba Cloud)
- bartowski's GGUF — versão Q4_K_M
AtlasKronos Android v1.0.0 — MVP (IA local offline)
🤖 AtlasKronos Android v1.0.0 — MVP
Assistente de IA brasileiro 100% offline para Android, rodando Qwen2.5-0.5B via llama.cpp.
⚠️ LEIA ANTES DE USAR — Estado de testes honesto
Este MVP foi desenvolvido num ambiente sem emulador Android (sem /dev/kvm) e sem dispositivo físico ADB conectado. Portanto:
✅ O que FOI testado de verdade
| Teste | Resultado |
|---|---|
| Inferência llama.cpp + Qwen2.5-0.5B no Linux | ✓ 25 tokens/s |
| Function-calling — 4 prompts (whatsapp/chrome/configuracoes/camera) | ✓ JSON válido em 4/4 |
| Conversa normal em português | ✓ Respondeu corretamente |
| Build APK debug | ✓ 35s, 200MB |
| 24 testes unitários JVM | ✓ 24/24 passaram |
❌ O que NÃO foi testado (precisa de device Android)
- ❌ Instalar o APK num emulador/celular
- ❌ Validar que o
llama-cliexecuta no Android - ❌ Medir RAM real com
adb shell dumpsys meminfo - ❌ Testar 'abre o WhatsApp' via PackageManager de verdade
- ❌ Validar visualmente o rosto animado
📊 Sobre a meta de 500MB de RAM
Não atingida com qualidade mínima de conversa. Trade-off real:
| Configuração | RAM estimada | Qualidade |
|---|---|---|
| Qwen2.5-0.5B Q4_K_M (atual) | ~650MB | Boa — faz function-calling |
| Qwen2.5-0.5B Q3_K_S | ~510MB | Razoável — erra JSON às vezes |
| TinyLlama-1.1B Q2_K | ~400MB | Ruim — não segue instruções |
O MVP usa Q4_K_M porque sem function-calling confiável, o 'abre o WhatsApp' não funciona.
🎯 Funcionalidades do MVP
- ✅ App Android instalável (APK debug, 200MB)
- ✅ Chat com contexto (sliding window 20 turns, ~2048 tokens)
- ✅ Rosto animado fofo (Canvas, 5 estados: IDLE/LISTENING/THINKING/SPEAKING/HAPPY)
- ✅ Function-calling: abrir apps por comando de texto
- ✅ Memória local: fatos extraídos do chat são persistidos (Room) e injetados no system prompt
- ✅ HUD técnico: modelo + RAM em tempo real + tokens/s
- ✅ Tema deep-tech idêntico ao portfólio NATSKY
📦 Instruções de uso
1. Baixar o modelo GGUF (NÃO vem no APK — 380MB)
O APK não inclui o modelo (ficaria gigante). Baixe manualmente:
curl -L -o qwen2.5-0.5b-instruct-q4_k_m.gguf \
https://huggingface.co/bartowski/Qwen2.5-0.5B-Instruct-GGUF/resolve/main/Qwen2.5-0.5B-Instruct-Q4_K_M.gguf
adb push qwen2.5-0.5b-instruct-q4_k_m.gguf \
/sdcard/Android/data/com.kronos1027.atlaskronos.debug/files/models/Ou coloque em /sdcard/Download/atlaskronos/models/.
2. Instalar o APK
adb install AtlasKronos-v1.0.0-debug.apk3. Testar
"oi! quem é você?"→ conversa normal"abre o whatsapp"→ abre o WhatsApp"abre o chrome"→ abre o Chrome"abre as configurações"→ abre Settings"abre a câmera"→ abre a câmera"meu nome é Darlan"→ aprende seu nome
📋 Checklist de aceite
| Item | Status |
|---|---|
| 🧪 App instala e abre sem crashar | ❌ NÃO TESTADO (sem device) |
| 🧪 Conversa offline com contexto | |
| 🧪 Rosto animado troca de estado | |
| 🧪 3+ comandos 'abrir app' | |
| 🧪 RAM real medida | ❌ NÃO TESTADO (estimativa ~650MB) |
| 🧪 Fato influencia resposta | |
| Commit/autoria corretos | ✓ OK |
🏗️ Stack
- Linguagem: Java 17 (com Java 21 features via desugaring)
- UI: Views XML + ConstraintLayout + Canvas (sem Compose)
- DB: Room 2.6.1 (conversations + user_facts)
- LLM: llama.cpp b10298 (binário ARM64 pré-compilado)
- Modelo: Qwen2.5-0.5B-Instruct Q4_K_M (379MB GGUF)
- Tema: Material 3 dark + paleta deep-tech
💜 Créditos
Feito por Darlan (NATSKY) — @Kronos1027
- llama.cpp — runtime de inferência
- Qwen2.5-0.5B-Instruct — modelo (Alibaba Cloud)
- bartowski's GGUF — versão Q4_K_M
⚠️ Aviso
O app usa QUERY_ALL_PACKAGES para listar apps instalados (necessário para function-calling). Esta permissão é restrita na Play Store para apps públicos, mas é aceita em instalações via APK (sideload).
📄 Licença
MIT License.