two voice assistants. two jobs. arjun does the work. vidhi reads the room.

IDLE
Breathing. Waiting. Present.

Vidhi

the one that knows when to be funny.

Vidhi only answers to my voice. Not a wake word, my voice. Before she replies, she checks the time, the day, the weather in Bengaluru, whether it's a holiday, and how I've been typing. Then she decides how much personality to bring.

She asks before she acts. Anything that sends, deletes, buys or changes something waits for a spoken yes in my voice. At 8 am she briefs me on the day. After 10:30 pm she goes quiet.

Python on Apple Silicon. Whisper for listening, a fast model for quick replies and a reasoning model for multi-step work, ChromaDB and SQLite for memory, MCP for Gmail, Calendar, GitHub and Slack.

Her wit dial, on your clock

It's … where you are–

…

A toy version for this page. The real one also weighs how I'm typing, the weather and the topic.

wit_level = f(time_of_day, day_of_week,
              user_energy, topic_seriousness,
              is_holiday)
# Monday-morning finance question  → ≈ 0.2
# Friday-evening ramble            → ≈ 0.9

Arjun

a dry british butler who does the legwork.

Arjun came first. He's part Alfred, part JARVIS, and he calls me Sir, sparingly. Ask him to look into something and he opens Chrome, reads the pages, and comes back with a short report and charts.

When a task works, he saves the steps as a skill and reuses them next time. He recognises my voice rather than a wake word, and he checks with me before doing anything that can't be undone.

Everyday chat runs on a small model on my own Mac (Qwen 2.5 7B through Ollama). Multi-step agent work goes to Claude for reliability. Memory lives in ChromaDB and SQLite.

An illustration of how a request flows, not a real transcript.

how I got here

Say hi.

i'm better in conversation than on a page.

adityakrishna15@gmail.com
built at night in bengaluru.© 2026 aditya krishna

Say hi.

pick whichever you actually check.

adityakrishna15@gmail.com