DEV Community

Cover image for Kokishin: an offline Android app that turns everyday oddities into small mysteries
Rupam Das
Rupam Das

Posted on

Kokishin: an offline Android app that turns everyday oddities into small mysteries

Built for the Hacktoberfest Open-Source AI Challenge — Week 1: Touch Grass. 🌱

What I built

Kokishin is an Android app that turns everyday outdoor details into small mysteries you solve by walking around and looking closely.

You photograph something odd: a worn bench, a dirt shortcut across the grass, moss on only one side of a wall. An on-device Gemma 4 model turns the photo into a case:

  • a mystery question
  • 2-3 possible explanations
  • a real-world check for each one

Then you go outside, collect evidence (photos or notes), write a conclusion, and the AI critiques your reasoning. It never reveals the answer. It asks questions, suggests possibilities, and sends you back outside.

The idea comes from the everyday-mystery spirit of the anime Hyouka.

Oreki the GOAT

Why the screen should be the shortest part

Nature apps tell you what something is. Nothing helps you ask why it is that way, and answering that takes looking, walking and coming back later. That is a natural reason to touch grass.

So the app is built to get out of the way:

  • One main action per screen.
  • One "Your first check" card, with the other possibilities behind a tap.
  • Every case records time spent investigating versus time on screen, and shows the split once you solve it.

Why open-source AI matters here

  • Offline. It works in parks and on trails with no signal. After a one-time model download, the whole loop works in airplane mode.
  • Private. Photos of your street and routes never leave the phone.
  • Free. No API costs or rate limits, for you or for me.
  • Controllable. I decide exactly how the model behaves, so it never spoils the answer. That rule lives in the prompts, not in a server I don't control.

There are no cloud calls at all. The only network use is downloading the model files on first launch.

How it's built

  • Expo + React Native + TypeScript, Expo Router, as a development build (Expo Go can't load native modules like this).
  • llama.rn running Gemma 4 E2B (GGUF) plus its mmproj vision file, so the model can read the photo.
  • expo-image-picker (camera only, no gallery), expo-image-manipulator to shrink photos before inference, expo-file-system for the resumable model download.
  • Cases saved with AsyncStorage.
  • Every prompt lives in one file, src/ai/prompts.ts, and the model's JSON output is parsed with hand-written type guards. If parsing fails, it retries once and then returns a typed error instead of crashing.
  • The release APK is built with EAS Build.

Demo

Download the APK from here and install it on an Android phone (8 GB RAM recommended). The release APK is about 183 MB, and the app downloads the model files on first launch, so use Wi-Fi.

Code

GitHub logo ru-das / kokishin

Kokishin is an offline Android app that uses an on-device Gemma 4 model to turn everyday outdoor oddities into small mysteries you solve by going outside and gathering evidence. Built for the Hacktoberfest 2026 Open-Source AI Challenge: Week 1.

Kokishin

Turn everyday outdoor oddities into small mysteries, then go outside and solve them.

Kokishin is an Android app for the dev.to challenge Build something with open-source AI at its core (theme: Touch Grass). Photograph something odd, like a worn bench, a dirt shortcut or moss on one side of a wall. An on-device Gemma 4 model turns it into a case: a mystery question, 2-3 possible explanations, and a real-world check for each. You collect evidence outside, write a conclusion, and the AI critiques your reasoning. It never gives away the answer.

The screen is meant to be the shortest part of the experience. The app measures investigating time versus on-screen time for every case.

Screenshots

Home Settings
Home Settings
New Case Case
New case Case

How it works

  1. Home: your saved cases and the "I'm curious!" button.
  2. New case: take a photo (camera only) and optionally say what caught your eye.
  3. Case:…

Screenshots

Home Settings
Home Settings
New Case Case
New Case Case

What's next

I'd like to investigate why the APK is as large as it is (most likely the llama.rn native libraries), and add a custom icon and splash screen.

Prize Categories

  • Best Use of Gemma: Gemma 4 E2B is Kokishin's only AI, and it runs entirely on the phone through llama.rn. Using its vision file (mmproj), it reads your photo of something odd and turns it into a case: a mystery question, 2-3 possible explanations, and a real-world check for each. Later it critiques your written conclusion. The rule is that the AI asks and suggests but never reveals the answer, and it works offline in airplane mode.

Top comments (1)

Collapse
 
nikolovv profile image
Nikola Nikolov •

love that the no-spoilers rule lives in your prompt and not on a server. how slow is the photo step on a mid-range phone, since the mmproj encode is usually what eats the time before the first token?