← Blog

May 2026 · Product

LifeOS — Setup Guide

A Telegram assistant for morning briefs and leave-now alerts. How to use it, how I host it, and what I learned shipping it.

Architecture

LifeOS production architectureFull size
Click to open full resolution

LifeOS is a proactive assistant in Telegram — it reads your calendar, checks traffic, and tells you when to leave. No app store install. I underestimated how long auth, timezones, and hosting would take; this guide is the condensed version.

Live: lifeos.yudira.buzz · Demo: LifeOS hobby agent


Using LifeOS

Get access — Join the waitlist with a Gmail address (same account you will use for Google Calendar). After approval, open the bot from the email link.

Setup (about five minutes)

  1. /start — opens the bot menu.
  2. /sethome your address — home base for drive-time estimates.
  3. /auth — link Google or Outlook in the browser; for Apple use /authapple with an app-specific password.
  4. /setbrieftime HH:MM — morning brief time (default 7:30).
  5. /timezone — confirm your zone; fix with /settimezone America/Chicago if needed.

Day to day — Read the morning brief. Wait for leave-now pings before events with a location. Optional: /upgrade for Pro (smarter briefs, evening summary).

If something breaks

  • Google says access blocked → waitlist Gmail must match; you must be on the OAuth test-user list.
  • Brief at wrong time → run /timezone then /settimezone.
  • No leave alerts → check /sethome; calendar events need a real location.

How I host it

Four services, one product:

PieceRole
TelegramBotFather token; users chat here only.
PorkbunDNS: main domain → Vercel, api subdomain → Railway.
RailwayPython app, Postgres, bot polling, OAuth callbacks, scheduler.
VercelStatic landing page + waitlist form posting to Railway.

Railway essentials — Set APP_URL to your API host (e.g. https://api.yourdomain.com), TELEGRAM_BOT_TOKEN, maps and OAuth secrets, WAITLIST_CORS_ORIGINS to your Vercel URL, and Resend for approval email (not SMTP).

OAuth — Google and Azure redirect URIs must match APP_URL exactly. Users are identified by Telegram; calendar access is a separate browser grant tied to their chat id.

Rule I learned — One bot token, one running server. Use a test bot locally so production links never point at localhost.


Shipping notes

  • Align every redirect URL (Google, Microsoft, Stripe) with APP_URL.
  • Send Telegram messages with links as plain text (formatted text breaks URLs).
  • Verify /timezone after every calendar connect.
  • Add each approved Gmail to Google Cloud test users before they hit /auth.

More detail on the LifeOS hobby agent page including architecture and demo video.