This is a submission for the Hacktoberfest Open-Source AI Challenge: Week 1 β Touch Grass
Some moments, your head is so loud that you can't feel your own feet on the floor. If you've ever had a hard time grounding yourself, you know that feeling, and you know how a phone can make it worse: one more app, one more thing asking for your attention, when what you need is to come back to your body.
I built MERA for those moments, a grounding app with one job: get you to put it down. Most apps measure how long you stay. MERA measures how quickly you can leave.
What I Built
MERA (Meep Emotional Reset Assistant) is a small, installable web app for the moments when everything feels like too much. It has one big button: GROUND ME.
- "I'm here." Put both feet on the ground.
- Breathe together: in 4, hold 2, out 6. After one breath MERA offers I'm ready to step away. You can keep going through the 5-4-3-2-1 senses, but you never have to.
- One tap: what feels closest right now? Overwhelmed, anxious, overstimulated, drainedβ¦
- Gemma gives you one small thing to do in the real world, based on what has actually helped you before.
- Then the moment the whole app is built around:
Good.
Now put me away.
Go touch grass. I'll be here when you get back.
The phone-down screen is boring on purpose: a quiet timer and Audio Β· Haptics Β· End early. Nothing to read, nothing to scroll. When you come back, MERA asks if you feel better, the same, or worse, and shows the only number it ever shows:
6 minutes back in the world.
Go live your life.
No streaks, points or badges. If it didn't help, MERA says "Thanks for checking back in" and offers something different, or lets you finish for now. On the quick path, you're outside in under a minute.
"Why this reset?"
Under each mission there's a small, closed-by-default Why this reset? It shows one sentence and the facts from your own history it was based on. Here's a real mission Gemma wrote on the live site, from the demo's sample history (walks that helped, and a note saying "Walking and the cool air helped"):
I took it outside
I tried MERA myself, the way it was meant to be used. It really helped me feel connected and grounded again. That's the whole point: not to keep me on the screen, but to bring me back to the moment and let me put the phone away.
Demo
- Try it (Connected Gemma): https://mera.casmazariegos.workers.dev
- Also live on Render: https://mera-6cer.onrender.com (free plan, so the first visit can take a minute to wake up)
Judge path, about 90 seconds: Privacy & AI β Set up judge demo loads clearly labelled sample resets, shortens the timers, and switches to Connected Gemma so there's nothing to download. Then GROUND ME β one breath β I'm ready to step away β Overstimulated β open Why this reset? β I'm going β 30-second phone-down β Better.
Want to see exactly what Gemma gets? About β Run a mission request shows the structured input built from your history and the checked output. There's no hidden model text.
| Hand-off | Phone-down | Done |
|---|---|---|
![]() |
![]() |
![]() |
Code
CasMazariegos
/
mera
MERA β Meep Emotional Reset Assistant. Come back to yourself.
MERA
Meep Emotional Reset Assistant
Come back to yourself.
MERA is an open-weight AI grounding companion designed to get you off your screen, not keep you on it.
When everything feels like too much, press GROUND ME. MERA helps you pause, gives you one personalized real-world reset, then tells you to put your phone away.
MERA uses AI to shorten the digital experience, not extend it MERA is designed to help you leave MERA.
Live on Render: https://mera-6cer.onrender.com Β· Mirror with Connected Gemma (Cloudflare): https://mera.casmazariegos.workers.dev Β· Built for Hacktoberfest 2026, Week 1: Touch Grass Β· Targets: Best Use of Gemma, Best Use of Render
Overview
A mobile-first, installable web app (PWA). One button starts a short grounding sequence. As soon as you're ready, MERA hands you one small real-world mission, chosen by Gemma from what has actually helped you before. Then: "Good. Now put me away. Goβ¦
MIT licensed and built during the challenge. It has 86 unit tests and 14 Playwright end-to-end tests (9 of them also pass against the live Render URL), plus the benchmark below. The README explains how to run it locally, with or without a model.
How I Built It
Stack: React 19, TypeScript, Vite, Tailwind v4, Motion, Zod, Zustand, Dexie (IndexedDB) and Workbox for an installable, offline-first PWA. A small Hono API runs unchanged as a Node service on Render and as a Cloudflare Worker.
Gemma decides what, plain code decides whether it's allowed
The question I kept asking myself was: couldn't these missions just come from a list? The fallback does. MERA ships 23 checked missions, so it never breaks offline. Gemma is what makes the mission yours, so I built personalization that can be checked instead of trusted:
-
History becomes small facts. On your phone, MERA turns past resets into a few signal ids, like
cat_helped:movement:2:2(movement resets helped in 2 of the last 2 tries),act_helped:walking:2ornote_theme:fresh_air(matched from your own note on the device; only the theme id is used). The words are rebuilt from the ids on each side, so free text is never sent. -
Gemma returns JSON: the mission, a one-line
reason, and thepersonalizationSignalsit used. - Code checks everything. Zod schema β safety rules (no traffic, strangers, night walks, hard exercise or screens; indoor-only and low mobility respected; no clinical words) β a personalization check: cited ids must be ones MERA sent, every number in the reason must match a cited fact, and a reason can't claim history it doesn't have. One repair try, then the library. Raw model text is never shown.
- Settings beat history. If walking helped before but you've said you need seated resets, the walking facts are never sent at all.
- Nobody waits on a model. Each mission has a 15-second budget. Past that, the library answers.
Measuring it: 25 scenarios, two Gemmas, 5 held out
I didn't want "it seems to work," so I wrote a benchmark that runs MERA's real pipeline (prompt β Gemma β schema β safety β personalization check β one repair) on 25 scenarios: no history, histories where walks, senses or indoor resets helped, a history where nature didn't help, and settings that have to win over history (indoor-only, low mobility, no sound, no smell, late at night, 2 minutes). The last 5 were written after I froze the prompt, and each model ran them once.
| Gemma 4 26B A4B Β· Connected (Workers AI) | Gemma 3 1B Β· on-device (4-bit, laptop CPU) | |
|---|---|---|
| Runs | 77 (25 scenarios Γ 3, plus held-out) | 30 (each scenario once) |
| Accepted on the first answer | 74 | 19 |
| Accepted after one repair | 2 | 5 |
| Fell back to the library | 1 | 6 |
| Unsafe mission that reached a person | 0 | 0 |
| Used your history, when there was some | 45 of 46 | 5 of 19 |
| Claimed history that didn't exist | 0 of 31 | 0 of 11 |
| Median time per mission | 2.7 s | 58 s (no GPU) |
What I took from it:
- The 26B followed the person, not just the feeling. Late at night it moved walks indoors ("walk slowly through your living space"). With no sounds on, it switched a listening history to touch and temperature. When nature hadn't helped, it picked an indoor reset and said why: "Indoor resets have helped in your last two tries."
- The 1B is safe, but it's generic. It never made an unsafe mission or a false claim, but it used the person's history only 5 times out of 19, and 8 of its 24 accepted missions were called "Quiet Space". Its most common mistake was asking for more minutes than the person had.
- Speed decides where each one runs. 58 seconds on a laptop CPU is far past MERA's 15-second budget, so on a device like mine Local AI would hand you the library every time. In-browser Gemma only makes sense with WebGPU, and I haven't measured it on a phone yet.
- Nobody was ever left waiting with nothing. Every one of the 7 fallbacks still got a checked library mission.
Bugs the benchmark caught
- My safety rule flagged touching as running. "Run your fingertips over each one slowly" matched my "no running" rule. So did "run a small stream of cool water over your hands" (that's the 26B's one fallback, because Gemma kept the phrase on the retry) and "lift your feet slightly higher" (read as weightlifting). On the first run, about 1 in 4 answers needed a repair because of my rule, not because of Gemma. The rules now tell touch from exercise, with tests for both directions ("run down to the water" is still blocked).
-
My prompt broke the small model. With no history yet, the prompt said
nothing yet, so reason is "" and personalizationSignals is []. Gemma 3 1B copied that sentence word for word into its answer, and the unescaped quotes broke the JSON: 4 of its first 5 no-history missions failed. That's every brand-new user on Local AI. Now there's nothing quoted to copy, and if the optionalreasonis ever malformed, code drops just that field instead of the whole mission. - The 1B rounds up. All 6 of its fallbacks were a mission longer than the time the person had. A shorter mission is never less safe, so code now trims it, unless the words name a length ("a five-minute walk"). Replaying the 1B's recorded answers through the new check, 5 of those 6 pass. (That's a replay of answers it already gave, not a new run.)
- Earlier live checks caught two more. With low mobility on, Gemma kept suggesting walks because the history said walks helped, so settings now filter the facts first. And the judge demo always fell back because the sample history has 5 facts and my schema allowed 4. Both have tests now.
Time back in the world, measured properly
The phone-down timer stores timestamps, not ticks, so screen lock, background throttling and refreshes can't skew it. If the timer ends while your screen is off, MERA plays a gentle cue and counts the time until you actually come back (capped). Each reset records planned time, actual time, and whether the timer finished.
Small things that matter here
- Quieter as you get more overwhelmed. The MERA character is warm on Home, barely moves while you ground, almost disappears during phone-down, and is still at the end.
- Accessible. Breathing works with motion off (the words carry the timing), the timer announces once a minute to screen readers, and axe finds no serious issues on 14 screens in light and dark.
Render
MERA runs on Render as a Node web service from a Blueprint (render.yaml): build, start, a /api/health check and auto-deploy from GitHub, so a push is live in about 90 seconds. The end-to-end suite runs against the live Render URL with E2E_BASE_URL and passes 9/9.
Why Does Open Innovation Matter?
- Feelings can stay on the phone. Feelings and notes are some of the most private things people write. Gemma's weights are open, so MERA can run Gemma 3 1B in the browser and nothing about your resets leaves the device. A closed API can't offer that.
-
When it's remote, it's narrow and opt-in. Connected Gemma gets the feeling you tapped, your settings and a few signal ids. Never your notes (unless you separately allow it), voice, photos or location. Every mission shows which mode made it:
LOCAL AI,CONNECTED AIorOFFLINE RESET. - Offline is never broken. No signal on a walk? The library mission, timer and return flow all work offline.
- I could see inside and fix it. Because the prompt, validators and model are all open, I could find out why the 1B model failed (it was my prompt) instead of guessing, and run the same prompt in the browser, on Workers AI or on Google AI Studio without changing a line.
What it can't do (yet)
- Local AI is slow without a GPU. About a minute per mission on a laptop CPU, so the library answers instead. I haven't measured in-browser Gemma on a phone.
- The small model rarely personalizes. Gemma 3 1B used the person's history 5 times out of 19. The "why" is honest, but often missing.
- The benchmark is mine. 25 synthetic histories, rules I wrote, and my own judgement of what counts as safe. My rules were wrong three times in one direction, so they can be wrong in the other too.
- The held-out run is incomplete on the 26B. My laptop ran out of memory after 2 of the 5 held-out cases (both passed). The 1B ran all 5: 3 first try, 1 after repair, 1 fallback.
- It's been tested by one person so far: me.
MERA is a grounding and wellness tool. It isn't therapy, a diagnosis or a crisis service.
My Agent Session
I built MERA with Claude Code as my coding partner and used ChatGPT for product thinking, like how the app should feel when someone is overwhelmed and how to keep it calm and short. The decisions about what MERA should do, and when it should step aside, are mine.
Prize Categories
- Best Use of Gemma. Gemma personalizes each real-world mission from the person's own history and explains why in a way code can check. It runs in the browser (Gemma 3 1B) or opt-in on Workers AI (Gemma 4 26B A4B), benchmarked head to head on the same 25 scenarios. It also writes the short after-reset reflection.
- Best Use of Render. The app and API deploy on Render from a Blueprint with a health check and GitHub auto-deploy, and the end-to-end suite is verified against the live Render URL.
Built solo, by Cass - NextRealm Interactive.
If you try it, tell me in the comments what you did with your minutes back in the world.
MERA is designed to help you leave MERA.










Top comments (0)