← Index

Personal

TanayOS

My personal AI command center — one chat box that routes to coding agents, local models and my calendar.

Year
2026
Role
Solo — design & engineering
Stack
Next.js, FastAPI, Ollama, Claude Code, SQLite, WebSockets
LiveThe real UI, running on sample data. Click around — it's the same app I use every day, minus my inbox.
373
Tests
9
Integrations
53k
Lines of code

The problem

I was juggling five active projects, three AI tools, a calendar, a to-do app and a pile of deadlines. Every context switch meant opening a different window and re-explaining what I was doing.

What I built

TanayOS is a local web app with one chat box. Every message goes through a hybrid router — fast rules first, then a small local model (qwen3:4b on Ollama) that only decides intent and which project you mean. It never touches code itself.

Coding requests launch real Claude Code sessions in a pseudo-terminal and stream them live into an in-browser xterm, one session per project with a queue, a tool allowlist and a confirmation step before anything gets pushed. General questions go to Gemini. Factual questions like "what's running?" are answered straight from system state, so nothing gets hallucinated.

The details

A FastAPI + SQLite backend with a WebSocket event bus drives the UI. Nine integrations — calendar, mail, to-dos, deadlines, deploys, a morning briefing, memory and a self-diagnostic 'doctor'. A usage monitor tracks tokens over rolling 5-hour and 7-day windows and warns at 80% and 90%.

It runs always-on as macOS LaunchAgents, installs as a PWA on my phone, and has a Chrome side-panel extension for checking fixes in place. 373 pytest tests keep it honest.

TanayOS chat routing a coding request to an agent
A coding request gets routed to the right project and kicks off a Claude Code agent.
TanayOS agent terminal streaming output
Agents stream live into an in-browser terminal, with a to-do progress bar and a ship report at the end.
Next project
ROV Vision→