UNDER THE HOOD

How this site works

The chat on this site is a real language model answering live. Each question goes through infrastructure I built and run myself, and ends at a small computer in my house. I'm a PM, so people reasonably wonder how much of this I actually built. This page is the answer.

The path of one question

01
Your browser
You type a question into the chat.
02
Invisible bot check
A silent check that you are a person. Bots fail it and get pre-written answers. They never reach the model.
03
Edge validation
The request gets size-checked and shape-checked, and anything unexpected is stripped out before it goes further.
04
Encrypted tunnel
An authenticated, encrypted tunnel to a machine in my house.
05
The home server
A Mac mini. It enforces per-visitor and global rate limits, pins the model, caps the length of the reply, and writes every conversation to an append-only log.
06
The model
A frontier-lab model with a system prompt built from my resume and a knowledge base of my public work. The answer streams back through the same chain to your screen.

Design decisions

Abuse controls run on hardware I control

Serverless functions restart constantly, so any rate-limit state you keep there gets wiped. The real controls, the quotas, caps, and kill switch, run on the home server, where state persists and nothing gets in without a shared secret.

It degrades instead of breaking

If the home server is off, the tunnel is down, or the day's budget is spent, the site falls back to pre-written answers. Nobody sees an error page. The chat just gets a bit dumber for a while.

Bots cost me nothing

A scraper hitting the chat endpoint gets the canned answers. Model tokens only get spent on verified humans, inside hard per-visitor and per-day limits.

The prompt is a security boundary

Before launch I spent a while trying to break it: prompt injection, pretending to be me, asking for my phone number. Feel free to try. It is polite about it.

I can see everything

Every conversation lands in a log with a local dashboard. A Telegram bot I built sends me the day's questions each morning, and a monitor messages me when any layer goes down and again when it comes back.

Install me in your agent

The same backend is available as a remote MCP server, so you can ask your own agent about me without opening this site:

claude mcp add --transport http ask-nikhil \
  https://www.nikhilkaul.com/api/mcp

One tool, ask_nikhil(question). I launched an open-source set of agent skills for Kubernetes at work, so making myself installable felt consistent.

What's intentionally missing from this page

Vendor names, endpoints, model identifiers, rate-limit numbers, and tunnel details. Publishing a diagram of your own attack surface is a bad idea, and the design decisions are the interesting part anyway. If you want the rest, email me: nkaul2345@gmail.com.

← Back to the chat