build 2026.09+·HEAD main·local time --:--:--·entropy 68%·visit streak 1·⌘K command palette
personal operating system / build 2026.09

one life.
many branches.

A nerdy little archive of the timelines that happened, the ones that almost happened, and the suspicious recruiter emails that keep trying to fork the repository.

Blog / 10 build notes

systems, privacy, AI infrastructure, experiments, and the occasional game that needed too much engineering

all blog posts →
new · search augmentation / MLOps

Adding Live Web Search Without Making the Terminal Wait

LLM intent routing, Exa Lite, local-first progressive answers, Worker security boundaries, and a measured 10-prompt benchmark.

Exa · Cloudflare · progressive streaming · benchmarks
LLM internals / MLOps

Inside nishad.ai: Ontology Routing and KV Caching

How structured facts become grounded prompts, where the 4,096-token budget goes, and how two llama.cpp slots improved latency.

local AI / MLOps

Running nishad.ai on a MacBook

llama.cpp, Qwen, an authenticated Python gateway, launchd recovery, ML observability, and a WebGPU browser fallback.

debugging / Gemma / Firefox

One Hour, Five Fixes, and One Missing Contract

How a Spotify-to-Gemma report failed before PDF generation, why plausible fixes missed the live protocol mismatch, and what the final browser acceptance actually proved.

AI systems

Inside the nishad.ai Terminal

The browser shell, ontology, Gemma inference boundary, streaming path, fallbacks, and operational tradeoffs.

privacy + recommendations

Building a Privacy-First Spotify Mood Recommender

Ephemeral signals, local embeddings, grounded ranking, OAuth health, and graceful degradation.

Go + PostgreSQL

From GitHub Pages to Private Analytics

Consent-first collection, owner-only access, retention boundaries, and useful metrics without surveillance.

web architecture

Building nishad.ai from Scratch

A static terminal, hash navigation, shared AI ontology, Markdown publishing, and GitHub Pages deployment.

distributed pipelines

Build a Privacy-First OpenClaw Image Stream

Four asynchronous lanes, vector caching, Kafka recovery, and privacy-safe image processing.

field notes

Two Ways We Turned a MacBook Air into a Gaming Machine

CrossOver, Wine, PS Remote Play, a 4K monitor, and the practical details that made both routes usable.

proof of work / live architecture

real systems behind the neon, visible without waiting for an AI response

production
inference engine

Qwen via llama.cpp on Mac

Authenticated Cloudflare Worker route, loopback Python gateway, bounded queue, strict completion and failure contracts.

fallback layer

In-browser WebGPU

SmolLM2 fallback runs locally in compatible browsers with zero visitor API-key dependency.

private analytics

Go + PostgreSQL

Consent-first collection, immutable GitHub owner authorization, private aggregate reporting.

Read the technical build logSystem design, inference infrastructure, privacy engineering, analytics, Spotify experiments and operational tradeoffs.

what brings you here?

pick a door — you can always change your mind

today’s branch

multiverse controls

bad ideas, but with buttons

interactive
roulette idle. Pick a button. Disturb the timeline.
2015root prompt committed
2018CMU branch merged
2020Twitter checkout
2026main still compiling

activity

consented visits and public repository work, without turning the site into a surveillance product

privacy-safe aggregates
visitor activity

consented traffic

Cloudflare Analytics Engine
—views today
—daily browsers today
—views in 30 days
—browser-days in 30 days

Loading consented aggregate activity…

repository activity

builds, fixes, experiments and the occasional production branch collision

view on GitHub ↗
Loading repository history…
build-time git history
LessMore

    Generated from this repository during the latest Pages build. No GitHub token or browser API request is used.

    Technical blog / implementation receiptsGo past the timeline into architecture diagrams, source-backed design decisions and production lessons.

    branch topology

    an extremely serious visualization of causality

    click nodes
    2015 init 2018 CMU 2020 Twitter msft-2020archived branch 2023 collision twilio-2023 2024 Microsoft dublin-2025unmerged branch 2026 HEAD

    git log --oneline --life

    selected commits from the canonical timeline

    HEAD → main
    2015
    futureme: initialize objective function
    “Fly high, dream big” enters the repository. No constraints on variance were specified.
    root prompt
    2016
    grad-school attempt #1 → rejection / retry
    One path closes. The repository does not archive itself.
    failed build ≠ abandoned project
    2019 → 2020
    Berkeley internship → Seattle Twitter checkout
    After Lecida in Berkeley, joined Twitter's platform/messaging org in Seattle: Kafka libraries, replication services, observability and tenant rate limiting.
    distributed systems at scale
    simulate Microsoft-2020 Nishad →
    2021
    Tesla / Cruise probes ignored
    Evidence that novelty is not always selected. Current branch judged sufficiently interesting.
    branch declined
    2023
    branch collision event
    Moveworks. Twilio. Graphite. Geography. Bureaucracy. Several universes briefly overlap.
    entropy spike
    simulate Twilio-2023 →
    2024
    Microsoft node respawns
    Azure Edge + Platform: distributed hierarchical configuration resolution and application deployment at the edge.
    platform engineering
    2025
    Dublin portal appears
    eBay creates a Europe branch. Portal later closes. Alternate world remains cached.
    unmerged branch
    visit Dublin-Nishad →
    2026
    self-hosted AI + private analytics shipped
    Static shell, Qwen/llama.cpp gateway, WebGPU fallback, public inference observability, Go/PostgreSQL metrics and production acceptance telemetry.
    high-agency systems build

    technical receipts / build notes

    implementation details, tradeoffs, and operational lessons

    runtime diagnostics

    the actual production layers, not vanity counters

    inference

    PRIMARY
    Qwen3-4B · llama.cpp · Mac
    EDGE
    Authenticated Cloudflare Worker adapter

    Structured reports require a confirmed terminal event; terminal chat preserves SSE.

    browser fallback

    RUNTIME
    WebLLM + WebGPU
    MODEL
    SmolLM2-360M

    Runs on compatible visitor hardware without requiring an API key.

    private analytics

    BACKEND
    Go + PostgreSQL
    ACCESS
    immutable GitHub owner

    Consent-first public events; private views and AI/Spotify payloads are excluded.

    the Gmail Branching Hypothesis 👽

    the emails are real; the interpretation is gloriously unserious

    Working theory: my inbox is not documenting the timeline. It is testing branches.

    Whenever life approaches equilibrium, Gmail seems to produce a portal: university decision, recruiter ping, offer letter, immigration form, relocation thread, or bureaucratic side quest. The hypothesis therefore proposes that Gmail is a Monte Carlo simulator for career and geography.

    1. 2015: FutureMe accidentally supplies the system prompt: fly high, dream big, regain control.
    2. 2016–2018: rejection → retry → CMU. The simulator learns the agent reopens failed paths.
    3. 2021: Tesla and Cruise probes are declined. The simulator learns Nishad does not always maximize novelty.
    4. 2023: multiple career and geography branches collide. Difficulty is increased.
    5. 2024: Microsoft respawns. Apparently some nodes persist in cache.
    6. 2026: stability rises; new experiments appear; recruiter density becomes suspicious again.

    In this model, replying “Thanks, interested. Happy to chat.” is functionally equivalent to git checkout -b possible-new-life.

    Reality check: this is a joke built from my own career history, not a claim that Gmail, recruiters, or the universe are secretly controlling anything. The multiverse is currently unverified by peer review and my sister.

    alternate timelines

    the paths not taken, rendered with irresponsible confidence

    msft-2020 / Redmond brancharchived
    You keep the original Microsoft offer. The pandemic arrives almost immediately. Your twenties become less “Twitter inside the news” and more “Azure from the edge of it.” By 2026, you might be the six-year Microsoft veteran wondering what would have happened if you had taken that Twitter offer.
    twilio-2023 / communications branchghost
    You take the Twilio branch and stay there. Different coworkers, different city rhythms, different technical problems, different random Friday nights. Eventually the divergence becomes so large that this version of you feels like a cousin with shared childhood memories.
    dublin-2025 / Europe branchunmerged
    You move to Dublin. The first weeks are logistics, grey skies, unfamiliar streets and novelty. A year later you have favorite cafés, rent complaints, a new social graph, and absolutely no idea what Bengaluru-Nishad is doing at 5 AM.
    india-2018 / unopened branchlost history
    You do not go to CMU. The US chapter never starts the same way. No Pittsburgh path, no identical professional network, no same sequence of later forks. The tree does not end — it simply grows in a direction you can no longer reconstruct.

    recruiter mode

    the part where the joke accidentally becomes a decent portfolio

    software engineer

    MS in AI/NLP from Carnegie Mellon University. Experience across large-scale consumer systems, cloud infrastructure and edge/platform engineering. Previously at Twitter; currently at Microsoft in Bengaluru.

    distributed systemscloudedgeKubernetesC#backendAI / NLPLLMsagents

    career graph

    Pune → Pittsburgh → Berkeley → Seattle → San Jose → Bengaluru. US chapter: 2018–Jan 2024; relocated to Bengaluru in Jan 2024.

    Recruiter disclaimer: yes, this is intentionally nerdy. No, I do not normally describe career decisions as branch collisions. Probably.

    music vibes

    connect → choose a report → review & generate → explore

    privacy & data flow ↗
    1. 1. Connect
    2. 2. Choose
    3. 3. Review & generate
    4. 4. Explore

    Start by connecting Spotify. No music data goes to AI automatically.

    1

    Connect Spotify Not connected

    Read-only access to your top artists and tracks. Tokens stay in this tab and vanish when you disconnect.

    2

    Choose your report

    For a full music personality, genre, MBTI, tarot and roast report, choose a period. Top lists summarize that period; they are not chronological listening history.

    Full report / time period

    Or choose one alternative report. These are not extra required steps and do not create playlists.

    Mood timeline uses up to 20 recent plays, not six months of history; extra Spotify permission is requested only if needed. Past vs now compares overlapping top-artist samples.

    3

    Review data & generate

    Connect Spotify to start. Raw top lists work without AI; the personality, MBTI, tarot and roast reports ask for consent first.

    4

    Explore your readout

    Your validated interactive report will appear here—native to the page, with no file download.

    Add or remove your OpenAI key

    Your key stays in this browser's localStorage and is sent directly to OpenAI. Reports share the terminal's spend counter. Nothing goes to AI until you confirm a report. Never enter someone else's key.

    terminal

    yes, it actually takes commands now

    interactive shell
    guest@nishad.ai — zsh-ish
    ✨ multiverse$0.0000
    guest@nishad.ai:~$
    try spotify, vibe, or conspiracy · first AI query downloads a local model · ↑/↓ history · Ctrl+L clears

    “You only notice the branch point later.”

    Some choices feel enormous in the moment. Others look like a random email, a move, a job, a person you keep talking to, or one ordinary Tuesday where you choose differently.