Agentic AILifeOS
Twelve Apps, One Database and a Bot That Wants Proof I'm Awake
LifeOS is my personal dashboard of small apps on one Supabase database, with an always-on AI agent that talks to me on Telegram.
Rochester, N.Y. I had habits in one app, workouts in another and my calendar somewhere else. None of them talked to each other, and none of them pushed back when I skipped something. LifeOS puts all of it in one place and adds an agent that actually checks in.
There are three parts. The face is a Next.js dashboard: a bento grid of widgets on desktop and a big typographic scroll list on mobile, installable as a PWA. It's public, and private apps just show up as locked tiles. The memory is Supabase Postgres. The brain is a TypeScript daemon running on an old laptop that never turns off.
The daemon refuses to start if an API key is set, so I can't burn money by accident.
The database design is the part I'm proudest of. Every app gets its own schema (habits, workout, diet and so on), and everything that happens also goes into one append-only event stream. A registry table decides what shows up on the dashboard. Row-level security is on every table, and anonymous visitors only see public widget data through dedicated views.
The daemon runs a Telegram bot with long polling, so there are no open inbound ports. A scheduler reads schedules from the database over Supabase Realtime, with a periodic fallback in case an update gets missed. It writes heartbeats, and if database writes stall for more than 13 minutes it exits on purpose so systemd restarts it clean.
For the agent I use Claude Code in headless mode, on my subscription. The daemon refuses to start if an API key is set, so I can't burn money by accident. To keep the context small, the agent reads a generated state digest and a short manifest per app instead of the whole database. Its persona and rules are plain markdown files I can edit.
Some of the accountability features were fun to build. The 7:00 wake check wants a photo, and it verifies the photo with vision and the EXIF timestamp so an old picture doesn't count. Voice notes get transcribed with faster-whisper. Meals are logged by photo with an AI calorie estimate.
Then there's Forge. I describe an app, and the agent builds it and adds it to LifeOS. The research-paper app was made this way. There are 12 app routes now, from habits and budget to a calendar that merges multiple feeds.
Heartbeats, restarts and permission rules make terrible demos, but they're why the agent can run without me watching it. It's about 24.6k lines of TypeScript, and I use it every day.
How it works
LifeOS, start to finish, in 5 steps.
- Step 1:
Capture
Telegram messages, photos, voice notes and widgets
- Step 2:
Store
Per-app schemas plus a core event stream
- Step 3:
Schedule
Daemon reads schedules over Supabase Realtime
- Step 4:
Think
Claude Code headless with a small state digest
- Step 5:
Act
Check-ins, nudges and new apps through Forge
Graphic: The Sahil Bachu
