→ Daisuke134/life-manager へ移行済み
Anicca — Behavior Change Agent + Wake-up SaaS
Proactive agent that helps people break harmful patterns and build better
habits. Two surfaces share one codebase:
The wake-up SaaS uses a real voice agent ("Anicca") who talks back over PSTN,
not a recorded ringtone. She knows your calendar, your home location, and your
day-job start time — and if you're falling behind schedule she'll keep calling
plus optionally email a 報連相 (heads-up) to your manager.
Repo layout
How the Wake-up SaaS works
OwnTracks setup (required for lateness detection)
The lateness loop needs to know where the user is right now. We use
OwnTracks — open-source location publisher — because
it's privacy-respecting (you own the data) and battery-aware.
One-time setup on the user's phone
-
Install OwnTracks
-
Configure HTTP publishing (Settings → Preferences → Connection)
- Mode:
HTTP
- URL:
https://<your-anicca-alarm-backend>.up.railway.app/ingest/owntracks?token=<USER_TOKEN>
- The token comes from
aniccaai.com/alarm/setup after signup.
- Identification → DeviceID: anything (e.g.
iphone)
- Identification → TrackerID: 2 chars (e.g.
DA)
-
CRITICAL: Set mode to Move, NOT Significant
- Open OwnTracks → ⓘ icon → Mode selector
- Choose Move
- Why: per OwnTracks docs,
Significant mode publishes nothing while the device is stationary.
If the user is asleep in bed, no location update is sent for hours —
and Anicca then sees a stale fix and can't tell whether they left home.
Move publishes every 5 min OR 100 m of movement (whichever is sooner),
which is what the lateness loop needs. Battery cost is roughly that of a
navigation app, so we recommend the user enables Low Power Mode override.
-
Grant always-on location permission (iOS: "Always Allow")
- Otherwise iOS will silently throttle background publishes.
-
Verify it's working
- Go to
aniccaai.com/alarm/setup → "Last seen" timestamp should refresh
within 5 minutes of you walking around with the phone.
Why HTTP and not MQTT
We support only the HTTP publisher (simpler ops, no broker to run). MQTT will
return.
Why we don't use Apple Find My / Significant Location Changes
- Find My has no public API.
- iOS Significant Location Changes API only fires on 500m+ movement after 5 min
— useless while someone is in bed.
Self-hosting
This is the cheap path if you want to run your own wake-up agent for yourself
or a small group.
Required services (free or near-free tiers)
Environment variables
Set these in Railway (apps/alarm-backend/bridge service) AND
(apps/alarm-backend/scheduler worker):
Deploy
Supabase schema and Stripe webhook are in the live aniccaai backend; if you're
self-hosting standalone we'll publish a minimal schema separately.
Stack
- iOS: Swift, SwiftUI, RevenueCat, Mixpanel
- Voice: Pipecat + Gemini Live (native audio S2S)
- Telephony: Twilio Media Streams
- Backend: Node.js (bridge), Python (scheduler), Express, Railway, Supabase
- Tests: Maestro (E2E)
Status
License
The code is OSS so people can learn from it and self-host. Commercial use,
trademarks, and the "Anicca" name are reserved. See LICENSE once published.
Contact