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, a curious engineer who builds software and ML systems and spends most of my time in open source, working toward more inclusive AI. Away from the terminal, my intellectual roots run through Advaita Vedanta and Indian philosophy.

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.

General

Everything else.

  • On building slowly: 2026-06-01. A case for portfolios, products, and prose that compound over years instead of chasing the next redesign.
  • 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

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.