Особистий асистент у Telegram, який знає тільки тебе.

Single-user. Claude Sonnet 4.6 як основа, Ollama Gemma як локальний fallback. Tasks, email triage, content pipeline, weekly sprints, news — усе в одному боті й Mini App.

grammY · TypeScript
SQLite · WAL
React 19 · Tailwind 4
Claude Max 20x
19 таблиць
412 тестів

Що вже працює

8 табів Mini App плюс free-text чат у самому TG. Усе крутиться на одній машині, без хмари.

📋 Tasks & Backlog

Морнінг-брифінг 12:30, evening retro 22:00. AI-guided створення задач голосом або текстом, фільтри, snooze.

📧 Email triage

Gmail multi-account, Sonnet batch-triage до importance 1-5, OTP fast-lane <60c, фішинг через VirusTotal, INV-2 dispatch для відповідей.

📣 Content pipeline

Scanner ідей з git/Notion/Obsidian, 7 стилів rotation, UA+EN parallel, auto-suggest хештегів з історії каналу.

💬 Chat with Sonnet

Free-text у TG-боті й у Mini App tab. Спільна історія, 24 XML-інструменти (create_task, list_today, draft_post, …).

🗞 News feed

Tech + Crypto джерела (Anthropic, OpenAI, HuggingFace, HackerNews, Cointelegraph), score 1-5, push для 4+, breaking 5 — bypass quiet hours.

🎯 Weekly sprint

Понеділок 12:00 Kyiv — Sonnet тімлід читає backlog усіх 9 проектів, формує 5-10 задач max-2-per-project.

Як виглядає

Скріншоти зняті у sanitized-snapshot DB (реальні листи й чати замінено синтетикою).

Today
Tasks
Content composer
Email
Chat
News

Стек

Runtime: Node 24 · TypeScript
Bot: grammY polling
Web: Express 4 · React 19
UI: Tailwind 4 · Wouter
DB: better-sqlite3 (WAL)
LLM primary: Claude Sonnet 4.6
LLM fallback: Ollama Gemma 4 E4B
Voice: Groq Whisper turbo
Email: Gmail OAuth · VirusTotal
Cron: node-cron (TZ=Kyiv)
Deploy: Windows Scheduled Task
Tests: Vitest 412/412
Чому single-user. Це не SaaS, не open beta. Жодна модель, жодне SaaS-рішення не знає мене так, як знає Nox: усі мої задачі, проекти, листи, чати з однією людиною. Multi-tenant — окрема платформа з ізоляцією, RLS, billing. Я роблю «softeware для себе», не для ринку. Код у репі — read-only приклад того, як може виглядати owner-only TG-асистент.

Інваріанти. INV-1 OTP не лежить у plain text; INV-2 єдиний caller gmail.sendapprovals.dispatch(), CI grep guard; INV-3 після /panic усі зовнішні дії блокуються до /resume. Hard-block на email komandoro91@gmail.com у репозиторії — він тільки для Claude subscription, не для проектів.