NickMonrad/kernel-ai-assistant

Jandal AI — Local-first Android AI assistant with on-device LLM inference, semantic memory, and extensible skill framework

C

34

842 commits

updated Oct 15, 2026

See the code

README

Jandal AI

Play Store release in progress. Pre-release builds are available from GitHub Releases.

Jandal AI is a local-first Android assistant. It combines on-device chat, long-term memory, deterministic Android actions, voice input/output, and native tool calling while keeping user data on the device by default.

How it works

Jandal is built around a Brain-Memory-Action model:

  • Brain - Gemma-4 E-2B / E-4B runs locally through Google AI Edge LiteRT / LiteRT-LM. A lightweight QuickIntentRouter handles deterministic fast paths for common device actions.
  • Memory - local Room storage plus sqlite-vec / Arctic Embed M v1.5 support semantic recall, conversation history, core memories, and episodic summaries.
  • Action - native Kotlin skills execute Android actions such as alarms, timers, lists, notes, weather, media controls, messages, email, calendar, navigation, Wikipedia, and unit/currency conversion.

Current launch status

Launch readiness is tracked in GitHub rather than duplicated in this README:

The current launch gates are:

  1. Release-candidate golden journeys (#1329).
  2. A higher-quality local TTS option (#1447), with current candidate safety/evidence tracked in #1449 and #1485.
  3. Play Store, legal, and policy readiness (#441), including #1260–#1264 and #1474.

Wake-word launch qualification is complete. Broader permission orchestration, evidence-platform, and wake-word optimisation work remains post-launch unless a new release-candidate regression proves otherwise.

Feature areas

Jandal currently includes:

  • local chat with markdown rendering, multi-conversation management, streaming generation, and model/runtime status;
  • local memory with core memories, episodic summaries, semantic search, and memory management screens;
  • deterministic Android skills for lists, notes, alarms, timers, date arithmetic, media controls, unit/currency conversion, weather, messaging/email flows, navigation, and Wikipedia;
  • local-first Lists with two-level parent/child groups and device-local expand/collapse state, plus optional bidirectional sync for explicitly selected Lists to a user-configured Nextcloud Tasks server over CalDAV/VTODO; Room-backed local state remains authoritative and usable offline;
  • drawer-accessible tools such as Lists, Alarms, Notes, Meal plans, and Settings;
  • deterministic meal-planning sessions with plan approval, recipe persistence, favourites, replacement/regeneration, and ingredient export to lists;
  • push-to-talk voice input, optional spoken chat replies, per-message speaker playback, configurable TTS voices, and wake-word/default-assistant infrastructure;
  • local model management and model availability states for required, optional, preparing, gated, and unavailable model paths.

Future roadmap work includes Dreaming Engine background consolidation, Wasm skill extensibility, broader device optimisation, and richer multimodal/vision workflows. These are intentionally separated from the launch plan unless explicitly promoted.

Tech stack

AreaTechnology
LanguageKotlin
UIJetpack Compose, Material 3 Dynamic Color, Glance widgets
Dependency injectionHilt
PersistenceRoom, DataStore
Background workWorkManager
Local inferenceGoogle AI Edge LiteRT / LiteRT-LM
Chat modelsGemma-4 E-2B / E-4B LiteRT-LM packages
Embeddings / RAGArctic Embed M v1.5 (768-dim), sqlite-vec cosine indexes
Quick actionsKotlin QuickIntentRouter with deterministic routing and slot filling
Tool callingLiteRT-LM native @Tool annotations and app-owned native skills
STTAndroid native STT, Vosk, Sherpa-ONNX Zipformer / SenseVoice / Whisper tiny.en / Paraformer
TTSSherpa-ONNX Piper/VITS voice packs, Android TTS fallback, Kokoro research path
Wake wordSherpa-ONNX verification and ONNX Runtime wake-word pipeline
Auth for gated downloadsHugging Face OAuth via AppAuth
Extensibility researchChicory WebAssembly runtime

Models and downloads

Model files are not committed to this repository. Some model downloads are gated and require a Hugging Face account plus acceptance of upstream terms. Arctic Embed M v1.5 is ungated and temporarily hosted at a public rolling GitHub release; the validated artifact's SHA-256 provenance is recorded in docs/research/1559-arctic-phase-b-calibration.md. Long-term publication to litert-community is tracked separately in #1563; GitHub release immutability is not a #1559 gate.

See models/README.md for the current model file reference, approximate sizes, ADB setup notes, and device-specific guidance.

Key launch-relevant examples:

Model / assetApprox. sizeNotes
Gemma-4 E-2B LiteRT-LM~2.4 GBRequired launch-compatible chat model tier
Gemma-4 E-4B LiteRT-LM~3.4 GBOptional flagship-tier chat model
Arctic Embed M v1.5 + WordPiece vocabulary114,082,292 bytesRequired local embedding/RAG assets; downloaded from a public rolling release
Sherpa STT models~72-220 MB eachDownloaded per selected STT engine
Sherpa Piper/VITS voice packs~64-116 MB eachDownloaded per selected voice; Semaine launch decision tracked in #1258

Privacy model

Jandal is designed as a local-first assistant:

  • chat, memories, notes, lists, and model execution are local by default;
  • production builds should not include telemetry;
  • external network exchange occurs only for explicit web-backed skills, configured model/voice downloads, or user-enabled integrations, and is limited to the data needed for that integration;
  • explicitly selected Lists may synchronise with a user-configured Nextcloud server while unsynchronised Lists remain local-only;
  • Hugging Face sign-in is used only for gated model access.

Documentation

Licence and attribution

The source code is licensed under the Apache License 2.0. See LICENSE.

Third-party notices are maintained in NOTICE. Launch readiness for third-party libraries, voice assets, and gated model downloads is tracked in docs/LEGAL_AND_ATTRIBUTION.md.

NickMonrad/kernel-ai-assistant

Jandal AI — Local-first Android AI assistant with on-device LLM inference, semantic memory, and extensible skill framework

C

34

842 commits

updated Oct 15, 2026

See the code

README

Jandal AI

Play Store release in progress. Pre-release builds are available from GitHub Releases.

Jandal AI is a local-first Android assistant. It combines on-device chat, long-term memory, deterministic Android actions, voice input/output, and native tool calling while keeping user data on the device by default.

How it works

Jandal is built around a Brain-Memory-Action model:

  • Brain - Gemma-4 E-2B / E-4B runs locally through Google AI Edge LiteRT / LiteRT-LM. A lightweight QuickIntentRouter handles deterministic fast paths for common device actions.
  • Memory - local Room storage plus sqlite-vec / Arctic Embed M v1.5 support semantic recall, conversation history, core memories, and episodic summaries.
  • Action - native Kotlin skills execute Android actions such as alarms, timers, lists, notes, weather, media controls, messages, email, calendar, navigation, Wikipedia, and unit/currency conversion.

Current launch status

Launch readiness is tracked in GitHub rather than duplicated in this README:

The current launch gates are:

  1. Release-candidate golden journeys (#1329).
  2. A higher-quality local TTS option (#1447), with current candidate safety/evidence tracked in #1449 and #1485.
  3. Play Store, legal, and policy readiness (#441), including #1260–#1264 and #1474.

Wake-word launch qualification is complete. Broader permission orchestration, evidence-platform, and wake-word optimisation work remains post-launch unless a new release-candidate regression proves otherwise.

Feature areas

Jandal currently includes:

  • local chat with markdown rendering, multi-conversation management, streaming generation, and model/runtime status;
  • local memory with core memories, episodic summaries, semantic search, and memory management screens;
  • deterministic Android skills for lists, notes, alarms, timers, date arithmetic, media controls, unit/currency conversion, weather, messaging/email flows, navigation, and Wikipedia;
  • local-first Lists with two-level parent/child groups and device-local expand/collapse state, plus optional bidirectional sync for explicitly selected Lists to a user-configured Nextcloud Tasks server over CalDAV/VTODO; Room-backed local state remains authoritative and usable offline;
  • drawer-accessible tools such as Lists, Alarms, Notes, Meal plans, and Settings;
  • deterministic meal-planning sessions with plan approval, recipe persistence, favourites, replacement/regeneration, and ingredient export to lists;
  • push-to-talk voice input, optional spoken chat replies, per-message speaker playback, configurable TTS voices, and wake-word/default-assistant infrastructure;
  • local model management and model availability states for required, optional, preparing, gated, and unavailable model paths.

Future roadmap work includes Dreaming Engine background consolidation, Wasm skill extensibility, broader device optimisation, and richer multimodal/vision workflows. These are intentionally separated from the launch plan unless explicitly promoted.

Tech stack

AreaTechnology
LanguageKotlin
UIJetpack Compose, Material 3 Dynamic Color, Glance widgets
Dependency injectionHilt
PersistenceRoom, DataStore
Background workWorkManager
Local inferenceGoogle AI Edge LiteRT / LiteRT-LM
Chat modelsGemma-4 E-2B / E-4B LiteRT-LM packages
Embeddings / RAGArctic Embed M v1.5 (768-dim), sqlite-vec cosine indexes
Quick actionsKotlin QuickIntentRouter with deterministic routing and slot filling
Tool callingLiteRT-LM native @Tool annotations and app-owned native skills
STTAndroid native STT, Vosk, Sherpa-ONNX Zipformer / SenseVoice / Whisper tiny.en / Paraformer
TTSSherpa-ONNX Piper/VITS voice packs, Android TTS fallback, Kokoro research path
Wake wordSherpa-ONNX verification and ONNX Runtime wake-word pipeline
Auth for gated downloadsHugging Face OAuth via AppAuth
Extensibility researchChicory WebAssembly runtime

Models and downloads

Model files are not committed to this repository. Some model downloads are gated and require a Hugging Face account plus acceptance of upstream terms. Arctic Embed M v1.5 is ungated and temporarily hosted at a public rolling GitHub release; the validated artifact's SHA-256 provenance is recorded in docs/research/1559-arctic-phase-b-calibration.md. Long-term publication to litert-community is tracked separately in #1563; GitHub release immutability is not a #1559 gate.

See models/README.md for the current model file reference, approximate sizes, ADB setup notes, and device-specific guidance.

Key launch-relevant examples:

Model / assetApprox. sizeNotes
Gemma-4 E-2B LiteRT-LM~2.4 GBRequired launch-compatible chat model tier
Gemma-4 E-4B LiteRT-LM~3.4 GBOptional flagship-tier chat model
Arctic Embed M v1.5 + WordPiece vocabulary114,082,292 bytesRequired local embedding/RAG assets; downloaded from a public rolling release
Sherpa STT models~72-220 MB eachDownloaded per selected STT engine
Sherpa Piper/VITS voice packs~64-116 MB eachDownloaded per selected voice; Semaine launch decision tracked in #1258

Privacy model

Jandal is designed as a local-first assistant:

  • chat, memories, notes, lists, and model execution are local by default;
  • production builds should not include telemetry;
  • external network exchange occurs only for explicit web-backed skills, configured model/voice downloads, or user-enabled integrations, and is limited to the data needed for that integration;
  • explicitly selected Lists may synchronise with a user-configured Nextcloud server while unsynchronised Lists remain local-only;
  • Hugging Face sign-in is used only for gated model access.

Documentation

Licence and attribution

The source code is licensed under the Apache License 2.0. See LICENSE.

Third-party notices are maintained in NOTICE. Launch readiness for third-party libraries, voice assets, and gated model downloads is tracked in docs/LEGAL_AND_ATTRIBUTION.md.