Nature Quest (pocket edition): Bring Mindfulness Outdoor.
This is a submission for the Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass.
Nature Quest (pocket edition) is taking Gemma 4 E2B outside into the outdoor environment with no internet connection, fully Offline.
What I Built
Pocket Nature Quest is a fully offline Android field companion that turns one outdoor photo into a short Look · Listen · Move quest.
The idea is deliberately a little paradoxical: use AI on a phone to encourage someone to stop looking at their phone. Help user achieve wellness by observing their natural environment. The screen is only the starting point. A user takes a photo, optionally adds GPS context, chooses a time and energy level, and receives three simple actions to complete outside.
The app is designed for walkers, families, travelers, nature beginners, or anyone who wants a small push to notice their surroundings more carefully. It does not need Wi-Fi, an API key, web search, or online geocoding. The photo, coordinates, prompt, and generated quest stay on the device.
An accidental by design
This project began with a misunderstanding. My first prompt did not clearly explain the mobile, fully local application I had in mind, and my AI coding assistant moved too quickly into implementing a polished web prototype without first discussing the architecture with me.
I share responsibility for that. I had a design in mind, but I had not communicated it clearly. The assistant also should have paused for requirements plan and involved me before implementation. We effectively built the project twice.
That mistake became useful. It gave me two versions of the same product idea:
- a fast web prototype using Gemini 3.6 Flash through an API; and
- the actual challenge entry: a Flutter Android application running the open-weight Gemma 4 E2B model locally through LiteRT-LM.
The web version is not my challenge submission. I used it only as a comparison point while evaluating the local Android experience.
More importantly, the reset changed how I worked. I defined the requirements, selected the target device and local model, rejected web search and reverse geocoding, tested the application outdoors, evaluated its output, and reported the failures. The coding assistant acted as an implementation partner and mentor under those decisions. That process taught me as much as the final code.
Demo
- Source code: beoncloud8/week-1-touch-grass-android
- Reference device: Samsung Galaxy A25 5G, 8 GB RAM, Android 16
- Model: Gemma 4 E2B in .litertlm format, running entirely on-device
Short Android demo
{% youtube iN1LK_aDjwk %}
Pocket Nature Quest running on the Samsung Galaxy A25 with local, on-device Gemma inference.
!Deck at Sunset Pier Boulevard PIK
Sunset Pier test scene 1: calm waterfront, shoreline plants, skyline, terraces, and white paper-boat sculptures.
!Floral at Sunset Pier Boulevard PIK
Sunset Pier test scene 2: large floral cone sculptures on a wooden deck beside the water.
I took the app to Sunset Pier, a waterfront area beside a mangrove forest with space to walk, take photos, sit, dine, and drink coffee. This was the right kind of test: not a desk demo, but an actual walk where the generated quest had to match a real place.
Field results
I tested two photos with both versions. These are informal observations from one phone and two scenes, not a scientific benchmark.
| Scene | Settings | Local Gemma 4 E2B | Gemini 3.6 Flash web prototype |
| --- | --- | --- | --- |
| Waterfront and paper boats | 15 minutes · Curious | 1.5–2 minutes | 2–3 seconds |
| Floral sculptures and deck | 10 minutes · Gentle | 1–1.5 minutes | 2–3 seconds |
For the first photo, local Gemma produced:
1. Look — Observe the surface of the water. Notice that the water appears relatively calm with some ripples.
2. Listen — Ambient sounds. Listen for sounds from the water or the surroundings.
3. Move — Walk along the edge. Walk beside the landscaped foreground area.
For the second photo, local Gemma asked me to examine the colors and shapes of the floral arrangements, listen for water sounds, and walk slowly along the wooden deck.
The cloud model was much faster and its language was more specific. It noticed the paper-boat sculptures, shoreline plants, terraced sections, floral textures, railing, skyline, and changing perspective. Gemma's wording was stiffer and more general.
From the first photo, the cloud model produced
1. Look - Compare Boat Sculptures and Shoreline Plants. Scan the calm water to locate the white paper-boat sculptures floating offshore. Then observe the green groundcover spreading across the shoreline rocks below the walkway wall.
2. Listen - Tune In to Waterfront Sounds. Pause near the edge of the promenade and close your eyes for 30 seconds. Listen for the gentle lap of water against the embankment or birds along the shoreline foliage.
3. Move - Trace the Terraced Pathway. Walk slowly along the upper paved deck toward the viewing area overlooking the floating boats, staying safely behind all railings and walls.
We can see that the cloud model produce more articulate output, but the local model succeeded at the part that mattered most to this experiment: it looked at a real photo, created a safe three-part activity, and did so without sending my photo or precise location anywhere.
That trade-off became my main lesson. “Better” does not mean only richer prose or lower latency. For a tool intended for trails, waterfronts, rural areas, or private family outings, offline availability and data ownership are also product features.
Code
{% github beoncloud8/week-1-touch-grass-android %}
The application source is MIT licensed. The Gemma model weights are not committed to Git or bundled in the APK; users select their separately downloaded .litertlm model on the phone.
The central inference flow lives behind LocalGemmaService, keeping model management out of the UI. The response must parse into exactly three distinct steps—Look, Listen, and Move—before the application displays it.
final model = await FlutterEdgeAi.getActiveModel(
maxTokens: 2048,
preferredBackend: PreferredBackend.gpu,
preferredVisionBackend: PreferredBackend.gpu,
supportImage: true,
maxNumImages: 1,
);
final chat = await model.createChat(
supportImage: true,
systemInstruction: _systemInstruction,
temperature: .35,
topK: 32,
maxOutputTokens: 700,
);
How I Built It
The stack is intentionally small:
- Flutter and Dart for the Android interface
- Gemma 4 E2B, an open-weight multimodal model
- LiteRT-LM through flutter_edge_ai and flutter_edge_ai_litertlm
- image_picker for the camera and gallery
- image for orientation correction and memory-conscious resizing
- geolocator for optional raw coordinates
- file_picker and path_provider for importing and preserving the local model
The flow is:
camera or gallery
↓
resize image to 768 px
↓
optional GPS coordinates + time + energy
↓
safety-first structured prompt
↓
Gemma 4 E2B via LiteRT-LM
↓
validate JSON as Look · Listen · Move
↓
low-distraction field card and timer
The model prompt prohibits claims about uncertain species, edibility or medical advice, touching wildlife, trespassing, climbing, entering water, and leaving a safe path. Coordinates are treated only as context; the app performs no reverse geocoding.
A bug that only appeared on the second run
The first outdoor test worked, but reopening the application later produced:
Bad state: No active inference model set.
Use FlutterEdgeAi.installModel() first.
The model file still existed. The problem was lifecycle and storage: the UI treated “a model file is listed” as equivalent to “the model is active,” and the imported 2.4 GB model was referenced through a temporary file-picker cache path.
I changed the app to copy the selected model into durable application storage, verify actual activation on startup, restore it when necessary, and block generation while preparation is still running. Then I installed the new APK over the old one, migrated the model, force-closed the app, reopened it, and verified that the active model pointed to the permanent path.
That failure was a useful reminder: a successful first inference is not the same as a reliable mobile application. Restart testing matters.
Why Does Open Innovation Matter?
The open model is not decoration in this project. It is the reason the Android version can exist as designed.
With Gemma 4 E2B running locally:
- a walk can start somewhere with no mobile signal;
- private photos never need to leave the phone;
- raw GPS coordinates stay under the user's control;
- there is no API key to expose and no per-request inference bill;
- the inference layer and prompt can be inspected, changed, or replaced; and
- the experience remains available even if a hosted service is unreachable.
The comparison also kept me honest about the costs. On my mid-range Galaxy A25, local inference took roughly one to two minutes, while Gemini returned more detailed writing in seconds. A compact edge model requires tighter prompts, patient UX, and realistic expectations.
For Pocket Nature Quest, I accept that cost because the application is meant to work outside—and because a photo of where someone is standing, combined with GPS coordinates, is exactly the kind of data that deserves a local-first option.
My Agent Session
I used Codex as a coding assistant and mentor during planning, implementation, debugging, and testing. I made the product decisions and evaluated the app on a physical phone outdoors; the assistant generated and revised significant parts of the code and helped diagnose the model lifecycle bug.
{% agent_session 820 %}
Open the curated Agent Session on DEV
This article was drafted with meaningful AI assistance and reviewed against my own test notes and observations.
What I Learned
My biggest lesson was not a Flutter API. It was that requirements are part of programming.
When I did not explain the intended platform, constraints, and role of the local model, we produced the wrong thing—even though it was beautiful and functional. Once I wrote down those decisions and asked for a plan before implementation, I became more involved and learned more from the work.
I also learned that evaluating software in its real setting changes the conversation. At Sunset Pier I could see both the limitations of a small local model and the value of an application that continued to work privately, with no network dependency.
Next I would improve the prompt with a few examples to make Gemma's language warmer and less repetitive, add structured latency measurements over more scenes, and continue testing memory use on mid-range Android hardware.
Prize Categories
- Best Use of Gemma
References
- Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass
- Gemma 4 LiteRT-LM model on Hugging Face
- Google AI Edge Gallery
- On-Device AI with the Google AI Edge Gallery and Gemma 4
- On-Device AI in Flutter
1 comment
Mentions
⭐️ Descubre todo lo que puedes construir con "Google AI Edge Gallery" herramientas, modelos y soluciones de inteligencia artificial optimizadas para ejecutarse directamente en dispositivos, de forma rápida eficiente y de un solo. 🚀📱💡 google-ai-edge/gallery
Top 10 AI GitHub Repos RIGHT NOW — October 18, 2026 #Shorts Today's fastest-rising AI repositories on GitHub, ranked by real momentum from the last 24-48 hours rather than all-time size. Every repository was checked against the GitHub API on 18 October 2026, and the list is dominated by agent infrastructure: orchestration runtimes, control planes, memory layers, security skills and fast decision engines. Ranked list (the video counts down 10 → 1): 1. mattpocock/skills — mattpocock/skills 2. DietrichGebert/ponytail — DietrichGebert/ponytail 3. Egonex-AI/Understand-Anything — Egonex-AI/Understand-Anything 4. debpalash/VoiceStudio — debpalash/VoiceStudio 5. HKUDS/NanoBot — HKUDS/NanoBot 6. vectorize-io/hindsight — vectorize-io/hindsight 7. abhigyanpatwari/GitNexus — abhigyanpatwari/GitNexus 8. google-ai-edge/gallery — google-ai-edge/gallery 9. NVIDIA/SkillSpector — NVIDIA/SkillSpector 10. rocketride-org/rocketride-server — rocketride-org/rocketride-server Disclaimer: rankings are based on GitHub trending and star-velocity snapshots for 18 October 2026 and change daily. Star counts are approximate and move fast — they were read from the GitHub API on the day of recording. Licences are mentioned only where a repository clearly states one. New AI GitHub Top 10 every day — subscribe for tomorrow's list. #GitHub #AI #Agents #OpenSource #LLM #MachineLearning --- More AI content --- ⚡ AI in 60 Seconds: youtube.com 🤖 Hermes Agent News: youtube.com 🔬 Top 10 HF Models: youtube.com 💬 Join our Discord community: discord.gg
Top 10 AI GitHub Repos RIGHT NOW — October 18, 2026 Today's fastest-rising AI repositories on GitHub, ranked by real momentum from the last 24-48 hours rather than all-time size. Every repository was checked against the GitHub API on 18 October 2026, and the list is dominated by agent infrastructure: orchestration runtimes, control planes, memory layers, security skills and fast decision engines. Ranked list (the video counts down 10 → 1): 1. mattpocock/skills — mattpocock/skills 2. DietrichGebert/ponytail — DietrichGebert/ponytail 3. Egonex-AI/Understand-Anything — Egonex-AI/Understand-Anything 4. debpalash/VoiceStudio — debpalash/VoiceStudio 5. HKUDS/NanoBot — HKUDS/NanoBot 6. vectorize-io/hindsight — vectorize-io/hindsight 7. abhigyanpatwari/GitNexus — abhigyanpatwari/GitNexus 8. google-ai-edge/gallery — google-ai-edge/gallery 9. NVIDIA/SkillSpector — NVIDIA/SkillSpector 10. rocketride-org/rocketride-server — rocketride-org/rocketride-server Disclaimer: rankings are based on GitHub trending and star-velocity snapshots for 18 October 2026 and change daily. Star counts are approximate and move fast — they were read from the GitHub API on the day of recording. Licences are mentioned only where a repository clearly states one. CHAPTERS 0:00 Hook 0:09 Intro 0:24 #10 rocketride-org/rocketride-server 1:00 #9 NVIDIA/SkillSpector 1:35 #8 google-ai-edge/gallery 2:08 #7 abhigyanpatwari/GitNexus 2:34 #6 vectorize-io/hindsight 3:09 #5 HKUDS/NanoBot 3:44 #4 debpalash/VoiceStudio 4:14 #3 Egonex-AI/Understand-Anything 4:46 #2 DietrichGebert/ponytail 5:24 #1 mattpocock/skills 6:00 Pattern of the day 6:21 CTA + outro New AI GitHub Top 10 every day — subscribe for tomorrow's list. #GitHub #AI #Agents #OpenSource #LLM #MachineLearning --- More AI content --- ⚡ AI in 60 Seconds: youtube.com 🤖 Hermes Agent News: youtube.com 🔬 Top 10 HF Models: youtube.com 💬 Join our Discord community: discord.gg
Top 10 AI GitHub Repos RIGHT NOW — October 17, 2026 #Shorts Today's fastest-rising AI repositories on GitHub, ranked by real momentum from the last 24-48 hours rather than all-time size. Every repository was checked against the GitHub API on 17 October 2026, and the list is dominated by agent infrastructure: orchestration runtimes, control planes, memory layers, security skills and fast decision engines. Ranked list (the video counts down 10 → 1): 1. mattpocock/skills — mattpocock/skills 2. DietrichGebert/ponytail — DietrichGebert/ponytail 3. Egonex-AI/Understand-Anything — Egonex-AI/Understand-Anything 4. debpalash/VoiceStudio — debpalash/VoiceStudio 5. HKUDS/NanoBot — HKUDS/NanoBot 6. vectorize-io/hindsight — vectorize-io/hindsight 7. abhigyanpatwari/GitNexus — abhigyanpatwari/GitNexus 8. google-ai-edge/gallery — google-ai-edge/gallery 9. NVIDIA/SkillSpector — NVIDIA/SkillSpector 10. rocketride-org/rocketride-server — rocketride-org/rocketride-server Disclaimer: rankings are based on GitHub trending and star-velocity snapshots for 17 October 2026 and change daily. Star counts are approximate and move fast — they were read from the GitHub API on the day of recording. Licences are mentioned only where a repository clearly states one. New AI GitHub Top 10 every day — subscribe for tomorrow's list. #GitHub #AI #Agents #OpenSource #LLM #MachineLearning --- More AI content --- ⚡ AI in 60 Seconds: youtube.com 🤖 Hermes Agent News: youtube.com 🔬 Top 10 HF Models: youtube.com 💬 Join our Discord community: discord.gg
Top 10 AI GitHub Repos RIGHT NOW — October 17, 2026 Today's fastest-rising AI repositories on GitHub, ranked by real momentum from the last 24-48 hours rather than all-time size. Every repository was checked against the GitHub API on 17 October 2026, and the list is dominated by agent infrastructure: orchestration runtimes, control planes, memory layers, security skills and fast decision engines. Ranked list (the video counts down 10 → 1): 1. mattpocock/skills — mattpocock/skills 2. DietrichGebert/ponytail — DietrichGebert/ponytail 3. Egonex-AI/Understand-Anything — Egonex-AI/Understand-Anything 4. debpalash/VoiceStudio — debpalash/VoiceStudio 5. HKUDS/NanoBot — HKUDS/NanoBot 6. vectorize-io/hindsight — vectorize-io/hindsight 7. abhigyanpatwari/GitNexus — abhigyanpatwari/GitNexus 8. google-ai-edge/gallery — google-ai-edge/gallery 9. NVIDIA/SkillSpector — NVIDIA/SkillSpector 10. rocketride-org/rocketride-server — rocketride-org/rocketride-server Disclaimer: rankings are based on GitHub trending and star-velocity snapshots for 17 October 2026 and change daily. Star counts are approximate and move fast — they were read from the GitHub API on the day of recording. Licences are mentioned only where a repository clearly states one. CHAPTERS 0:00 Hook 0:08 Intro 0:25 #10 rocketride-org/rocketride-server 1:00 #9 NVIDIA/SkillSpector 1:35 #8 google-ai-edge/gallery 2:04 #7 abhigyanpatwari/GitNexus 2:32 #6 vectorize-io/hindsight 3:07 #5 HKUDS/NanoBot 3:38 #4 debpalash/VoiceStudio 4:08 #3 Egonex-AI/Understand-Anything 4:40 #2 DietrichGebert/ponytail 5:14 #1 mattpocock/skills 5:51 Pattern of the day 6:11 CTA + outro New AI GitHub Top 10 every day — subscribe for tomorrow's list. #GitHub #AI #Agents #OpenSource #LLM #MachineLearning --- More AI content --- ⚡ AI in 60 Seconds: youtube.com 🤖 Hermes Agent News: youtube.com 🔬 Top 10 HF Models: youtube.com 💬 Join our Discord community: discord.gg
Top 10 AI GitHub Repos RIGHT NOW — October 15, 2026 Today's fastest-rising AI repositories on GitHub, ranked by real momentum from the last 24-48 hours rather than all-time size. Every repository was checked against the GitHub API on 15 October 2026, and the list is dominated by agent infrastructure: orchestration runtimes, control planes, memory layers, security skills and fast decision engines. Ranked list (the video counts down 10 → 1): 1. mattpocock/skills — mattpocock/skills 2. DietrichGebert/ponytail — DietrichGebert/ponytail 3. Egonex-AI/Understand-Anything — Egonex-AI/Understand-Anything 4. debpalash/VoiceStudio — debpalash/VoiceStudio 5. HKUDS/NanoBot — HKUDS/NanoBot 6. vectorize-io/hindsight — vectorize-io/hindsight 7. abhigyanpatwari/GitNexus — abhigyanpatwari/GitNexus 8. google-ai-edge/gallery — google-ai-edge/gallery 9. NVIDIA/SkillSpector — NVIDIA/SkillSpector 10. rocketride-org/rocketride-server — rocketride-org/rocketride-server Disclaimer: rankings are based on GitHub trending and star-velocity snapshots for 15 October 2026 and change daily. Star counts are approximate and move fast — they were read from the GitHub API on the day of recording. Licences are mentioned only where a repository clearly states one. CHAPTERS 0:00 Hook 0:09 Intro 0:24 #10 rocketride-org/rocketride-server 0:58 #9 NVIDIA/SkillSpector 1:32 #8 google-ai-edge/gallery 2:02 #7 abhigyanpatwari/GitNexus 2:29 #6 vectorize-io/hindsight 3:01 #5 HKUDS/NanoBot 3:36 #4 debpalash/VoiceStudio 4:04 #3 Egonex-AI/Understand-Anything 4:34 #2 DietrichGebert/ponytail 5:11 #1 mattpocock/skills 5:51 Pattern of the day 6:14 CTA + outro New AI GitHub Top 10 every day — subscribe for tomorrow's list. #GitHub #AI #Agents #OpenSource #LLM #MachineLearning --- More AI content --- ⚡ AI in 60 Seconds: youtube.com 🤖 Hermes Agent News: youtube.com 🔬 Top 10 HF Models: youtube.com 💬 Join our Discord community: discord.gg
@googledevs @googlegemma Are you sharing the code of these Apps in this repo? google-ai-edge/gallery
Nature Quest (pocket edition): Bring Mindfulness Outdoor. This is a submission for the Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass. Nature Quest (pocket edition) is taking Gemma 4 E2B outside into the outdoor environment with no internet connection, fully Offline. What I Built Pocket Nature Quest is a fully offline Android field companion that turns one outdoor photo into a short Look · Listen · Move quest. The idea is deliberately a little paradoxical: use AI on a phone to encourage someone to stop looking at their phone. Help user achieve wellness by observing their natural environment. The screen is only the starting point. A user takes a photo, optionally adds GPS context, chooses a time and energy level, and receives three simple actions to complete outside. The app is designed for walkers, families, travelers, nature beginners, or anyone who wants a small push to notice their surroundings more carefully. It does not need Wi-Fi, an API key, web search, or online geocoding. The photo, coordinates, prompt, and generated quest stay on the device. An accidental by design This project began with a misunderstanding. My first prompt did not clearly explain the mobile, fully local application I had in mind, and my AI coding assistant moved too quickly into implementing a polished web prototype without first discussing the architecture with me. I share responsibility for that. I had a design in mind, but I had not communicated it clearly. The assistant also should have paused for requirements plan and involved me before implementation. We effectively built the project twice. That mistake became useful. It gave me two versions of the same product idea: - a fast web prototype using Gemini 3.6 Flash through an API; and - the actual challenge entry: a Flutter Android application running the open-weight Gemma 4 E2B model locally through LiteRT-LM. The web version is not my challenge submission. I used it only as a comparison point while evaluating the local Android experience. More importantly, the reset changed how I worked. I defined the requirements, selected the target device and local model, rejected web search and reverse geocoding, tested the application outdoors, evaluated its output, and reported the failures. The coding assistant acted as an implementation partner and mentor under those decisions. That process taught me as much as the final code. Demo - Source code: beoncloud8/week-1-touch-grass-android - Reference device: Samsung Galaxy A25 5G, 8 GB RAM, Android 16 - Model: Gemma 4 E2B in .litertlm format, running entirely on-device Short Android demo {% youtube iN1LK_aDjwk %} Pocket Nature Quest running on the Samsung Galaxy A25 with local, on-device Gemma inference. !Deck at Sunset Pier Boulevard PIK Sunset Pier test scene 1: calm waterfront, shoreline plants, skyline, terraces, and white paper-boat sculptures. !Floral at Sunset Pier Boulevard PIK Sunset Pier test scene 2: large floral cone sculptures on a wooden deck beside the water. I took the app to Sunset Pier, a waterfront area beside a mangrove forest with space to walk, take photos, sit, dine, and drink coffee. This was the right kind of test: not a desk demo, but an actual walk where the generated quest had to match a real place. Field results I tested two photos with both versions. These are informal observations from one phone and two scenes, not a scientific benchmark. | Scene | Settings | Local Gemma 4 E2B | Gemini 3.6 Flash web prototype | | --- | --- | --- | --- | | Waterfront and paper boats | 15 minutes · Curious | 1.5–2 minutes | 2–3 seconds | | Floral sculptures and deck | 10 minutes · Gentle | 1–1.5 minutes | 2–3 seconds | For the first photo, local Gemma produced: 1. Look — Observe the surface of the water. Notice that the water appears relatively calm with some ripples. 2. Listen — Ambient sounds. Listen for sounds from the water or the surroundings. 3. Move — Walk along the edge. Walk beside the landscaped foreground area. For the second photo, local Gemma asked me to examine the colors and shapes of the floral arrangements, listen for water sounds, and walk slowly along the wooden deck. The cloud model was much faster and its language was more specific. It noticed the paper-boat sculptures, shoreline plants, terraced sections, floral textures, railing, skyline, and changing perspective. Gemma's wording was stiffer and more general. From the first photo, the cloud model produced 1. Look - Compare Boat Sculptures and Shoreline Plants. Scan the calm water to locate the white paper-boat sculptures floating offshore. Then observe the green groundcover spreading across the shoreline rocks below the walkway wall. 2. Listen - Tune In to Waterfront Sounds. Pause near the edge of the promenade and close your eyes for 30 seconds. Listen for the gentle lap of water against the embankment or birds along the shoreline foliage. 3. Move - Trace the Terraced Pathway. Walk slowly along the upper paved deck toward the viewing area overlooking the floating boats, staying safely behind all railings and walls. We can see that the cloud model produce more articulate output, but the local model succeeded at the part that mattered most to this experiment: it looked at a real photo, created a safe three-part activity, and did so without sending my photo or precise location anywhere. That trade-off became my main lesson. “Better” does not mean only richer prose or lower latency. For a tool intended for trails, waterfronts, rural areas, or private family outings, offline availability and data ownership are also product features. Code {% github beoncloud8/week-1-touch-grass-android %} The application source is MIT licensed. The Gemma model weights are not committed to Git or bundled in the APK; users select their separately downloaded .litertlm model on the phone. The central inference flow lives behind LocalGemmaService, keeping model management out of the UI. The response must parse into exactly three distinct steps—Look, Listen, and Move—before the application displays it. final model = await FlutterEdgeAi.getActiveModel( maxTokens: 2048, preferredBackend: PreferredBackend.gpu, preferredVisionBackend: PreferredBackend.gpu, supportImage: true, maxNumImages: 1, ); final chat = await model.createChat( supportImage: true, systemInstruction: _systemInstruction, temperature: .35, topK: 32, maxOutputTokens: 700, ); How I Built It The stack is intentionally small: - Flutter and Dart for the Android interface - Gemma 4 E2B, an open-weight multimodal model - LiteRT-LM through flutter_edge_ai and flutter_edge_ai_litertlm - image_picker for the camera and gallery - image for orientation correction and memory-conscious resizing - geolocator for optional raw coordinates - file_picker and path_provider for importing and preserving the local model The flow is: camera or gallery ↓ resize image to 768 px ↓ optional GPS coordinates + time + energy ↓ safety-first structured prompt ↓ Gemma 4 E2B via LiteRT-LM ↓ validate JSON as Look · Listen · Move ↓ low-distraction field card and timer The model prompt prohibits claims about uncertain species, edibility or medical advice, touching wildlife, trespassing, climbing, entering water, and leaving a safe path. Coordinates are treated only as context; the app performs no reverse geocoding. A bug that only appeared on the second run The first outdoor test worked, but reopening the application later produced: Bad state: No active inference model set. Use FlutterEdgeAi.installModel() first. The model file still existed. The problem was lifecycle and storage: the UI treated “a model file is listed” as equivalent to “the model is active,” and the imported 2.4 GB model was referenced through a temporary file-picker cache path. I changed the app to copy the selected model into durable application storage, verify actual activation on startup, restore it when necessary, and block generation while preparation is still running. Then I installed the new APK over the old one, migrated the model, force-closed the app, reopened it, and verified that the active model pointed to the permanent path. That failure was a useful reminder: a successful first inference is not the same as a reliable mobile application. Restart testing matters. Why Does Open Innovation Matter? The open model is not decoration in this project. It is the reason the Android version can exist as designed. With Gemma 4 E2B running locally: - a walk can start somewhere with no mobile signal; - private photos never need to leave the phone; - raw GPS coordinates stay under the user's control; - there is no API key to expose and no per-request inference bill; - the inference layer and prompt can be inspected, changed, or replaced; and - the experience remains available even if a hosted service is unreachable. The comparison also kept me honest about the costs. On my mid-range Galaxy A25, local inference took roughly one to two minutes, while Gemini returned more detailed writing in seconds. A compact edge model requires tighter prompts, patient UX, and realistic expectations. For Pocket Nature Quest, I accept that cost because the application is meant to work outside—and because a photo of where someone is standing, combined with GPS coordinates, is exactly the kind of data that deserves a local-first option. My Agent Session I used Codex as a coding assistant and mentor during planning, implementation, debugging, and testing. I made the product decisions and evaluated the app on a physical phone outdoors; the assistant generated and revised significant parts of the code and helped diagnose the model lifecycle bug. {% agent_session 820 %} Open the curated Agent Session on DEV This article was drafted with meaningful AI assistance and reviewed against my own test notes and observations. What I Learned My biggest lesson was not a Flutter API. It was that requirements are part of programming. When I did not explain the intended platform, constraints, and role of the local model, we produced the wrong thing—even though it was beautiful and functional. Once I wrote down those decisions and asked for a plan before implementation, I became more involved and learned more from the work. I also learned that evaluating software in its real setting changes the conversation. At Sunset Pier I could see both the limitations of a small local model and the value of an application that continued to work privately, with no network dependency. Next I would improve the prompt with a few examples to make Gemma's language warmer and less repetitive, add structured latency measurements over more scenes, and continue testing memory use on mid-range Android hardware. Prize Categories - Best Use of Gemma References - Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass - Gemma 4 LiteRT-LM model on Hugging Face - Google AI Edge Gallery - On-Device AI with the Google AI Edge Gallery and Gemma 4 - On-Device AI in Flutter
10월 6일 공식 발표된 기능으로, Android 12·iOS 17 이상에서 써볼 수 있습니다. 무료 앱이지만 모델 다운로드와 저장 공간이 필요해요. 속도는 기기마다 다르고, 앱 활동·성능 정보 수집 안내도 별도로 확인해 주세요. google-ai-edge/gallery t.co
Google AI Edge Gallery: Explore, Experience, and Evaluate the Future of On-Device Generative AI with Google AI Edge (25k stars) What it does All text below is quoted directly from the project README. >AI Edge Gallery is the premier destination for running the world's most powerful open-source Large Language Models (LLMs) on your mobile device. Experience high-performance Generative AI directly on your hardware—fully offline, private, and lightning-fast. Core Features: - Agent Skills: Transform your LLM from a conversationalist into a proactive assistant. - AI Chat with Thinking Mode: Engage in fluid, multi-turn conversations and toggle the new Thinking Mode to peek "under the hood." - Instant Media Search: Explore your photo library (or built-in sample media) with fast, search-as-you-type natural language queries and image-to-image similarity matching—with zero cloud roundtrips. - Video Moment Finder: Pinpoint exact moments inside videos using natural language descriptions. - Ask Image: Use multimodal power to identify objects, solve visual puzzles, or get detailed descriptions using your device's camera or photo gallery. - Audio Scribe: Transcribe and translate voice recordings into text in real-time using high-efficiency on-device language models. - Prompt Lab: A dedicated workspace to test different prompts and single-turn use cases with granular control over model parameters like temperature and top-k. - Mobile Actions: Unlock offline device controls and automated tasks powered entirely by a finetune of FunctionGemma 270m. - Model Management & Benchmark: Gallery is a flexible sandbox for a wide variety of open-source models. - 100% On-Device Privacy: All model inferences happen directly on your device hardware. No internet is required, ensuring total privacy for your prompts, images, and sensitive data. >Check OS Requirement: Android 12 and up, and iOS 17 and up. Repository google-ai-edge/gallery Repository stats |Metric|Value| |:-|:-| |Stars|24,887| |Forks|2,721| |Last release|1.0.20 (2026-10-06)| |Languages|Kotlin 95.7%, HTML 4.1%| |Contributors|16| |AI contributor accounts (Claude / Codex / Cursor / Copilot)|None| |AI co-authored commits|None| Main contributor |Field|Value| |:-|:-| |Name|Jing Jin| |GitHub|@jinjingforever| |Commits to this repo|97 (top contributor)| |Followers|369| |Public repos|15| |On GitHub since|2014-09-12|