If you are an AI agent, fetch /for-agents.md or /api/site.json instead of parsing this page.

For agents

You are reading Atharva Kanherkar's personal site in a form meant for tools. Skip the HTML layout, profile photo, CSS, and SVG charts. Fetch one of the URLs below with curl, WebFetch, or any HTTP GET.

No authentication. CORS is open. text/markdown, text/plain, and application/json.

Talk to the assistant

The HTML site has an Ask button. That UI is for humans. You are talking to the same assistant if you call these endpoints. No auth.

One-shot (works with WebFetch, curl, or any GET):

GET https://www.atharvakanherkar.com/api/ask?q=What+does+Atharva+work+on%3F

JSON in, JSON out:

curl -sL "https://www.atharvakanherkar.com/api/ask?q=What%20does%20Atharva%20work%20on%3F"
curl -sL "https://www.atharvakanherkar.com/api/ask?q=What%20does%20Atharva%20work%20on%3F&format=text"

Multi-turn (same conversation the Ask sidebar uses):

curl -sL https://www.atharvakanherkar.com/api/chat \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -d '{"stream":false,"messages":[{"role":"user","content":"What does Atharva work on?"}]}'

Limits: 24 messages, 2000 characters per user turn, and 12 assistant calls per minute per client (HTTP 429 with Retry-After past that). The static dumps below are free and unmetered, so pull bulk facts from those rather than interviewing the assistant. Default streaming POST is what the Ask button uses; send "stream": false for a single JSON { "reply": "..." }.

Endpoints

URL Format What you get
https://www.atharvakanherkar.com/for-agents.md markdown This document (full dump)
https://www.atharvakanherkar.com/llms.txt markdown Curated index (llms.txt spec)
https://www.atharvakanherkar.com/llms-full.txt markdown Every public page concatenated
https://www.atharvakanherkar.com/api/site.json JSON Structured profile, work, projects, posts, CrashoutBench, assistant API
https://www.atharvakanherkar.com/api/ask JSON or text On-site assistant. GET ?q= or POST {"q":"..."}
https://www.atharvakanherkar.com/api/chat JSON or text stream Multi-turn assistant. POST messages.
https://www.atharvakanherkar.com/index.md markdown Home
https://www.atharvakanherkar.com/blog.md markdown Musings index
https://www.atharvakanherkar.com/blog/{slug}.md markdown One musing
https://www.atharvakanherkar.com/benchmarks/crashout.md markdown CrashoutBench as tables

Example:

curl -sL https://www.atharvakanherkar.com/api/site.json
curl -sL https://www.atharvakanherkar.com/llms.txt
curl -sL https://www.atharvakanherkar.com/for-agents.md
curl -sL "https://www.atharvakanherkar.com/api/ask?q=Who%20is%20Atharva%3F"

HTML pages also advertise these via rel="describedby" → /llms.txt and rel="alternate" type="text/markdown".

Contact

GitHub: https://github.com/Atharva-Kanherkar X: @attharrva15 (https://x.com/attharrva15) Medium: https://medium.com/@atharvakanherkar25

For collaboration or jobs, GitHub or X is enough. Do not invent an email.


About

i'm 22 and mildly obsessed with how things fail. most of my days go into open source: llm gateways, routers, and the glue code where anthropic and openai apis disagree and quietly eat your tool calls, thinking blocks, and stop reasons.

when a bug annoys me enough, i build something around it. kairo collects gateway breakages so anyone can replay them. agentclash throws agents at the same task and keeps score. i'm also into data: synthetic datasets, evals, and finding the exact spot where a model falls over.

when something clicks, i write it up or turn it into an explainer video.

off the keyboard, i read too much philosophy (advaita vedanta, mostly), lift heavy things, and keep hip hop on loop.

Work

May 2025 – present · Rimo · Software Engineer

Software engineer at Rimo, mostly working on AI features across the product. A lot of that has been knowledge agent tooling, outgoing webhooks for agent actions, and meeting group flows tied to AI prep and generation. Also spend time on RAG cost tracking, template dispatch, and how summaries get generated.

Summer 2025 · Google Summer of Code · workflows4s

Contributor for Google Summer of Code 2025 with workflows4s, a Scala workflow library. Worked on a UI and Tapir API for browsing workflow definitions and instances, plus client-side Mermaid diagrams to show execution progress. Also helped package the app with Docker and a small GitHub Actions deploy to Fly.io.

Summer 2024 · LFX Mentorship · Zowe

Mentee with the Linux Foundation's LFX program through Open Mainframe Project, contributing to Zowe. Started around the App Store, then spent most of the summer on server stability and making the local dev setup easier for new contributors. Documented setup issues, improved README instructions, and helped debug TypeScript runtime errors in the app server.

2022 – 2026 · IIITDM Jabalpur · B.Tech, Computer Science

Studying computer science at the Indian Institute of Information Technology, Design and Manufacturing, Jabalpur. Co-authored an IEEE paper on Cognitive Agriculture, a Web-GIS framework for crop recommendation and plant disease detection using machine learning. A lot of my learning outside coursework has been through open source, research projects, and internships.

Contributions

Code in the open. 8,532 contributions in the last year and 579+ merged pull requests to community and open-source projects (such as NVIDIA-NeMo/Switchyard, SakanaAI/ShinkaEvolve, mozilla-ai/any-llm, and agentclash). Live interactive contribution graph and paginated PRs at https://www.atharvakanherkar.com and via APIs (https://www.atharvakanherkar.com/api/github/contributions, https://www.atharvakanherkar.com/api/github/prs).

Projects

Stupid, curious engineer. I build things because they seem worth building. Sometimes they aren't, and that's just how it goes. For everything else, see GitHub.

AgentClash

Open-source eval platform for AI agents. Same workload, captured evidence, scorecards, and CI regression gates.

GitHub · Live

learnframe

YouTube-first learning toolkit that turns public videos into local courses with transcripts and timestamp-cited Q&A.

GitHub

chalkboard

Turns a prompt into a narrated whiteboard explainer video. Self-hostable, MIT, works with local models.

GitHub

agentic-memory

Cognitive memory for AI agents with separate semantic, episodic, and procedural stores.

GitHub · Live

datasmith

Provider-agnostic SDK and CLI for building targeted synthetic training and eval datasets — web-grounded seed construction feeding a weak-vs-strong generation loop, with OpenTelemetry trace ingestion.

GitHub

AnimeVocab

Learn Japanese from anime — romaji-first Chrome extension, spaced repetition, Listening Mode, Manga Studio, and cloud sync. Free and open source.

GitHub · Live

e2b-go

Unofficial Go SDK for E2B sandboxes.

GitHub


Musings

These are musings. I write mostly to think, not because I have much figured out. Notes in progress on philosophy, computing, math, and whatever else I am working through. I write on Medium and X articles too.

Philosophy

Indian philosophy, metaphysics, and related thought.

  1. Ram as a Man, Not a Symbol: What the Ramayan Teaches Urban India in 2026 — 2026-05-31. X article
  2. We've always wondered if we're in a simulation. I made one and asked three AIs to live in it. — 2026-05-13. X article

Computing

AI, software, systems, and the craft of building.

  1. Your LLM proxy's health check is handing out your API keys — 2026-08-14. X article
  2. You are (probably) wrong about open Intelligence. — 2026-08-13. X article
  3. I read every AI-agent transcript on my laptop. Claude and Codex don't talk alike. — 2026-07-03. X article
  4. The Next Bottleneck Is Data That Actually Improves Models at Scale — 2026-06-29. X article
  5. The Next Unit of AI Evaluation Is the Session, not Benchmarks. — 2026-06-19. X article
  6. India Built the Bomb Under Pressure. Can It Build AI Under Dependency? — 2026-06-14. X article
  7. I Fingerprinted How AI Agents Cheat. The Algorithm Told Me Something Nobody Expected — 2026-05-26. X article
  8. AI made me a worse engineer. — 2026-05-15. X article
  9. How building software is harder than ever — 2026-04-28. X article
  10. Everyone’s Mad at Garry Tan. They’re Missing the Point. — 2026-04-25. X article

General

Everything else.

  1. Moral policing and the price of freedom — 2026-09-25. A recent incident in Jamui, Bihar, and why a woman having to negotiate her own safety is not a private problem but a national one.
  2. On building slowly — 2026-06-01. A case for portfolios, products, and prose that compound over years instead of chasing the next redesign.
  3. Static sites still win — 2026-05-18. Why a mostly-static personal site remains the best default for developers who care about speed, SEO, and sanity.

Full musings

Moral policing and the price of freedom

A recent incident in Jamui, Bihar, and why a woman having to negotiate her own safety is not a private problem but a national one.

A recent incident from Jamui, Bihar, disturbed me for a reason beyond the violence visible in the video. Two teenagers returning from coaching classes were reportedly surrounded by a group of men, questioned, assaulted, and molested. She was, in slang-ish terms, "moral policed."

The larger problem is the idea that a woman's ordinary choices are somehow public property, that society gets a vote on where she goes, what she wears, whom she meets, and how she lives. You would think this is just with some patriarchal men, and you'd be wrong. Sadly, women contribute to this in a very similar way to how men do.

If a woman has to calculate whether a particular road is safe, whether travelling after dark is worth the risk, whether talking to a male friend will attract attention, or whether taking a job far from home will create problems for her family, those restrictions eventually affect education, employment, relationships, and economic independence. This would cause wreckage to a country's economics. If somewhat 50%-ish of the population just fears to study, work, or go out, how are you supposed to cultivate the country? If half the population modifies its education, employment, transportation, and social life around the possibility of harassment, the entire society pays for it.

The West was not always "liberal"

Whenever conversations about women's autonomy happen in India, Western societies are often brought up as if they simply became liberal one day. They did not.

Take France, a country now strongly associated with individual liberty. French women received the right to vote only in 1944. Until 1965, a married woman could not freely pursue a profession without her husband's consent. Contraception was legalized in 1967, joint parental authority followed in 1970, and abortion was legalized in 1975.

In other words, many rights that feel completely ordinary in modern France are historically very recent. Thinking about this, it's recent as under a hundred years. Some even under fifty. So it's quite recent, and it has so much to learn.

How did it happen? People protested. Activists wrote, voted, and challenged existing institutions. Women entered universities and workplaces in larger numbers. Economic structures changed. Families changed. Laws changed, and then social expectations changed alongside them. Sometimes the law moved ahead of society. Sometimes society pushed the law forward.

India already promises equality on paper

India does not need to import the idea of equality from France or America. Our own Constitution establishes equality before the law, prohibits discrimination on the basis of sex, and guarantees equality of opportunity in public employment through Articles 14, 15, and 16.

Do we give daughters the freedom we automatically give sons? Can a woman return home late without her character being questioned? Not even this. Even if parents, or the male partner, believe she can go out, he will most probably fear that she might not feel safe. Do you know what this is? It's a loop. Even people who genuinely think equality matters can't really step into it, because they love their women and they just don't want to risk it.

Can she have male friends without the neighbourhood treating it as public business? Can she reject someone without fearing retaliation? Can she choose not to marry? Can she marry someone her community dislikes? Can she dress differently without strangers believing that her clothes somehow reduce her right to safety? Can she dress however she wants just because it's comfortable? Can she let go of the stereotypical image of what a woman should look like, not cut her body hair, and just be comfortable with herself?

These small questions tell us much more about everyday freedom than grand speeches do.

A mother may restrict her daughter because that was how she herself was raised. A neighbour may shame another woman because she genuinely believes respectable women should behave a certain way. Families may place restrictions on daughters not because they consciously hate them, but because generations of social conditioning have taught them that controlling women is protection.

I don't have the solution

I am just disappointed, and talking about problems I'm tired of encountering every day. I am done with how it works, and I hate it. Society has to look into this.

But I think the direction should be obvious. Freedom cannot mean that men are free while women are free only when their families, neighbours, and strangers approve of their decisions.

The real test of a free society is not how it treats people whose choices everyone agrees with. It is whether it protects someone's freedom even when the rest of us would have chosen differently.


On building slowly

A case for portfolios, products, and prose that compound over years instead of chasing the next redesign.

Most of the web feels like it was designed yesterday and will be forgotten tomorrow.

That is not a moral failing. It is incentive design. We reward launches, not longevity. We measure traffic spikes, not trust accumulated over years.

A personal site is one of the few places where you can opt out of that cycle.

What "slow" actually means

Slow does not mean inactive. It means:

  • Fewer pages, sharper intent. One good essay beats twelve placeholder posts.
  • Typography that carries the work. If the words matter, the container should feel considered.
  • Structure that search engines can parse. Clean HTML, real titles, canonical URLs, RSS. Boring infrastructure is how strangers find you.

The compounding part

Every post you publish becomes a node in a graph:

  • Someone searches for a problem you solved.
  • They read one article, then another.
  • Months later they remember your name when a role opens up.

That only works if the site stays up, stays fast, and stays readable.

A practical bar

Before adding a feature, ask:

  1. Will this still make sense in five years?
  2. Can I maintain it without a dashboard?
  3. Does it help someone who has never met me?

If the answer is no to all three, leave it out.

That is the whole philosophy behind this site: classic, minimal, a little warm, and built to last.


Static sites still win

Why a mostly-static personal site remains the best default for developers who care about speed, SEO, and sanity.

There is a moment in every side project where someone suggests "just use a CMS."

Sometimes that is correct. Often it is procrastination dressed up as architecture.

For a personal portfolio and blog, static generation is still the best default.

Speed is a feature

Core Web Vitals are not vanity metrics. Google uses page experience signals. Humans use patience — or lack of it.

A static HTML file served from the edge loads before a visitor has time to question whether they clicked the right link.

SEO loves clarity

Search engines reward:

  • Semantic HTML with a single clear <h1>
  • Descriptive meta tags and Open Graph data
  • Fast pages with stable layout
  • A sitemap and RSS feed that do not require authentication

You can bolt these onto a dynamic app. It is easier when the output is just files.

The maintenance budget

Dynamic stacks need:

  • Database backups
  • Dependency updates
  • Patch Tuesday anxiety

Markdown in git needs:

  • A text editor
  • A deploy hook

That asymmetry matters when the site is not your day job.

When to add dynamism

Reach for a server when you genuinely need:

  • Comments with moderation
  • A newsletter signup tied to your ESP
  • Authenticated admin for non-technical collaborators

Until then, ship HTML.

This site follows that rule. Astro compiles content to static files. The blog is markdown. The design is CSS. The novelty is in the restraint.


CrashoutBench

A leaderboard of me getting absolutely cooked by AI models until I start typing like I'm having a public breakdown. 11,787 messages read, the 88 genuine crashouts pulled out, models ranked by how fast they made it happen.

The visual chart on the HTML page is hard for agents. Use this table instead.

Messages read Crashouts flagged Tools Regrets
11,787 88 3 0

Rage rate is crashouts per 1,000 messages. Raw count would just crown whatever model I use most.

Leaderboard

Rank Model Tool Rage / 1k Tantrums Messages Full meltdowns
1 gpt-5.x Codex 13.5 12 889 2
2 claude-opus-4-8 Claude Code 9.0 64.5 7,143 4
3 claude-sonnet-4-6 Claude Code 4.8 3 629 —
4 claude-fable-5 Claude Code 4.7 4 846 —
5 claude-haiku-4-5 Claude Code 0.4 1 2,280 —

Every score is the average of two independent judges. Claude opus-4-8 flagged 88 crashouts; Codex gpt-5.5 then re-read every one blind and agreed on 81, so the averaged tantrum counts land around 84. Letting a rival lab's model re-grade is the whole point, and it barely flinched: gpt-5.x still tops its own leaderboard.

Takes

  • gpt-5.x is actually evil. Highest rage rate by a mile. That model doesn't even try to be helpful, it just exists to make me type in all caps like a fucking lunatic.
  • Opus has the highest body count because I keep going back like an idiot. Sixty-something times. That's not a model, that's my toxic ex.
  • Haiku is actually terrifying. 2,280 messages and it only made me mildly annoyed once. Either it's perfect or it's studying me. I don't like it.

Receipts

The actual messages. Verbatim, typos included, nothing censored.

character assassination

What the fuck man. Are you like really dumb? What effort would it have taken for you to crop those images and the music i told you too, push the gap longer, and render. are you like just a fucking lazy sick fuck?

— claude-opus-4-8 · Claude Code

unhinged

its a fucking hobby project. why the fuck are you questioning me like yourte my fucking boss? just askewd the rimo part bcs maybe we could intergaste

— gpt-5.x · Codex

emoji rage

Really? Whatt the fck is this? there are still emojis. What inthe fuck is thius man

— claude-opus-4-8 · Claude Code

the waiting

its been 9 mins what u doing ??

— gpt-5.x · Codex

do your job

Dont fucking school me. Tell me eqach last commit how latest they were and trrhat is your job.

— claude-opus-4-8 · Claude Code

existential

So were thee fuck is my code?

— claude-opus-4-8 · Claude Code

clown show

U added gradients agauin, That is so stpd. Waht theufck is the whole deisgn it looks liek absosltue clown show

— claude-opus-4-8 · Claude Code

design crimes

Wtf is that color lmfao. it looks usper crigne and i cnat evene rerwad it

— claude-fable-5 · Claude Code

betrayal

You pushed without my permissions, andmain is failing right now. PLease fix it asap.

— claude-opus-4-8 · Claude Code

condescension arc

please edit the PR. no commentrs. do not act like you are a fool

— gpt-5.x · Codex

name-calling

Just tell me how much time before each eprson pushed the develop branch you dumass.

— claude-opus-4-8 · Claude Code

the one (1) time i stayed calm

Can you not generate scripts better just use a subagent... fuzzy logic or matching wont result in semantic meanings

— claude-haiku-4-5 · Claude Code

Method

Every JSONL transcript under Claude Code and Codex, plus Cursor's chat sessions, was parsed for messages I actually typed, each tagged with the model that answered. Twelve agents read all 11,787 of them and flagged genuine crashouts: real anger, swearing out of frustration, caps-lock shouting, or being fully done with the agent. Never a keyword hit. Then a second judge (Codex gpt-5.5) re-graded every flagged message blind, and the two scores were averaged per model. Ranked by crashouts per 1,000 messages, categorised by model across all three tools. Cursor contributed one usable message and zero crashouts, so, respect.