Inspiration
I already knew I should take breaks while using my computer.
But knowing didn’t really change my behavior.
Whenever a reminder popped up, I’d just click “Later” and keep working. That made me realize the issue wasn’t the lack of reminders — it was how easy they were to ignore.
That’s where StepAway came from.
Instead of another simple timer, I wanted something that starts gently, escalates when needed, and finally makes sure a real break actually happens.
The idea is simple:
Observe → Intervene → Verify.
What it does
StepAway is a privacy-first Chrome extension that turns ignored reminders into real breaks.
It tracks browser usage locally and uses a progressive flow:
Observe It tracks active usage and separates real work from natural pauses.
Intervene After long usage, it first shows a gentle wellness reminder with a simple neck movement animation.
If the user keeps going, the intervention becomes stronger.
Enforce a break After a second threshold, Break Mode activates and blocks normal browsing across tabs.
Verify With permission, it briefly uses an on-device vision model to check if the user is still present.
It only starts the break countdown after continuous absence is confirmed.
- Return After the break, tabs unlock automatically and a new session starts.
The camera is only used during verification, and it shuts off immediately after.
StepAway also includes Adaptive Timing, which slightly adjusts reminder timing based on recent behavior — but everything stays user-controlled.
Everything is local:
- No account
- No backend
- No cloud AI
- No stored camera data
How we built it
StepAway is a Manifest V3 Chrome extension built with:
- React
- TypeScript
- Vite
- Chrome Extension APIs
- chrome.storage.local
- MediaPipe Tasks Vision
- Pose Landmarker Lite
The design is fully local-first.
A background service worker manages usage state, reminders, and Break Mode.
Content scripts handle UI like reminders and blocking, but don’t decide when interventions happen.
We use timestamp-based tracking instead of continuous timers because MV3 service workers can sleep.
Break Mode is synced across tabs so changes apply instantly without refresh.
For verification, a dedicated Break Page requests camera access only when needed.
MediaPipe runs fully on-device, and only uses pose detection as a simple presence signal:
- pose detected → user present
- no pose → possible absence
- sustained absence → verified break
No video is stored or sent anywhere.
Challenges we ran into
The hardest part was reliable usage tracking.
Since Chrome extensions can’t monitor the whole system and service workers don’t stay alive, we had to design everything around a browser-level, timestamp-based model.
Another issue was tab blocking. Early versions only worked after refresh.
We fixed this with a push + pull sync model so all tabs update immediately.
Computer vision also needed care. A single missed frame can’t mean the user left, so we added a continuous absence window instead.
Privacy was another focus. The camera preview is blurred for users, and the real processing happens locally. The camera shuts off immediately after verification.
Accomplishments that we're proud of
We’re most proud that AI isn’t just a “feature” here — it closes the loop.
Without it:
Reminder → user ignores → timer starts
With StepAway:
Reminder → intervention → Break Mode → physical absence verified → break starts
We also built everything without any backend or cloud inference.
The system combines:
- usage tracking
- progressive intervention
- cross-tab Break Mode
- local vision verification
- automatic camera shutdown
- adaptive timing
in a lightweight way.
What we learned
The biggest lesson: more AI doesn’t always mean better product.
We originally considered adding posture tracking, fatigue detection, and more.
But we realized we only needed one thing:
Confirm the user actually stepped away.
That focus made everything simpler, more private, and more reliable.
We also learned a lot about Chrome Extension architecture, especially MV3 limitations, cross-tab sync, and local model bundling.
Most importantly, we learned that good product design is about building a clear behavior loop, not stacking features.
What's next for StepAway
We don’t want this to become a heavy monitoring tool.
The goal is to keep it simple, but smarter.
Next steps:
- better adaptive timing signals (still local + explainable)
- optional screen-distance awareness
- more break exercises
- improved onboarding and accessibility
- user-defined wellness profiles
- optional desktop companion
- real-world testing with students and developers
Long term, the goal stays the same:
not more reminders — but real breaks that actually happen.
Built With
- chrome
- cv
- extensions
- git
- github
- local-first
- mediapipe
- privacy
- react
- typescript
- vite
Log in or sign up for Devpost to join the conversation.