Swarm Oracle is an Android-first Flutter app that combines a local AI-swarm oracle gadget UX with private, on-device context intelligence.
The app is first a small OK-message gadget:
- shake to generate a short, reassuring oracle message
- use the small local LLM path; no cloud oracle and no fabricated standard oracle text
- copy/send the OK message from the app UI
- keep private oracle inputs on the phone
- run the separate Nomad transition worker in the background as an edge node
The Nomad worker is intentionally secondary in the user experience. It reads public Syndiode contracts, emits public edge-node proof signals, and never receives private oracle text or raw sensor axes.
The repository can produce an Android APK through GitHub Actions:
- Open the
Android APKworkflow. - Run it manually or use the latest successful
mainbuild. - Download the uploaded
handyoracle-apkartifact. - Install the APK on an Android phone.
For local builds:
flutter pub get
flutter build apk --releaseBuild a premium-feeling consumer app that:
- feels warm, playful, and emotionally uplifting
- gives self-empowering, actionable oracle guidance
- adapts to real-life context from opted-in device sources
- runs the oracle fully on-device while the separate Nomad edge worker talks only through public Syndiode contracts
- Context-aware oracle experience that users want to revisit daily
- Strong ritual loop (
Today -> Shake -> Oracle -> History) - On-device multimodal context pipeline (audio, video, usage, motion, location, device context)
- Transparent consent UX with one-time opt-in and editable source permissions
- Beautiful, mystical interface with polished micro-animations and delightful feedback
lib/features/ai/:domain/context_vector.dart: fused context representation for downstream decision logicdomain/context_collector.dart: collector interfacedomain/context_collection.dart: collection request + sample contractsdata/collectors/mock_collectors.dart: collector implementations (Phase A baseline)data/context_sampling_policy.dart: sampling mode decision (idle,standard,intense)data/on_device_context_pipeline.dart: fusion pipeline with source confidence output
lib/features/oracle/:domain/oracle_engine.dart: oracle interfaces and result modelsdata/local_oracle_engine.dart: local oracle generation logic
Implemented:
- collector-based context pipeline foundation
- sampling policy
- context vector confidence scores
- oracle integration with context-driven output
Implemented:
LlmRunnerabstraction for local text generation- default local provider set to
mistral_local(open-source aligned runtime contract) - strict local oracle generation (invalid model output is surfaced instead of replaced)
Planned next:
- replace mock collectors with real Android data collectors
- connect
mistral_localrunner to native on-device inference bridge - add optional
llama_localrunner behind the same interface - optimize performance and battery budget for production devices
Implemented runtime scaffold:
- Flutter
MethodChannelbridge (handorakel/llm) - Android runtime registry and provider resolution
llama.cpp-targeted runtime placeholder (LlamaCppRuntime) mapped tomistral_local- model asset staging directory:
android/app/src/main/assets/models/
Next step for full native inference:
- Add GGUF model file to assets or app-managed storage.
- Wire llama.cpp JNI backend (CMake + native bridge is scaffolded).
- Replace placeholder generation in
LlamaCppRuntime.generate(...)andhandorakel_llm.cppwith real token generation. - Return structured
message+action.
The GitHub repository intentionally stays small and does not include GGUF model binaries. For a local-LLM build on your machine, put the model here:
android/app/src/main/assets/models/smollm2_135m_q4km.gguf
Without that file, the app still builds but shaking will report that no usable local model reading is available.
With that file present locally, the native llama.cpp runtime can prepare it through prepareLocalModel.
small(optional local asset): compact model for local-LLM builds without committing binariespro(optional pack): larger model delivered separately after entitlement/subscription- runtime scaffold exists in:
lib/features/ai/data/model_release_strategy.dartlib/features/ai/data/local_model_bootstrapper.dart
- current behavior:
- GitHub checkout contains only placeholders, not model binaries
smallcan be added locally for a model-backed buildprois intentionally non-bundled and can be activated later via optional local pack flow
Pro remains reserved for local model packs. Optional cloud oracle paths are disabled for the app runtime.