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.
learnframe
YouTube-first learning toolkit that turns public videos into local courses with transcripts and timestamp-cited Q&A.
chalkboard
Turns a prompt into a narrated whiteboard explainer video. Self-hostable, MIT, works with local models.
agentic-memory
Cognitive memory for AI agents with separate semantic, episodic, and procedural stores.
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.
AnimeVocab
Learn Japanese from anime — romaji-first Chrome extension, spaced repetition, Listening Mode, Manga Studio, and cloud sync. Free and open source.
e2b-go
Unofficial Go SDK for E2B sandboxes.
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.
- Section: General
- Published: 2026-06-01
- Tags: craft, writing
- HTML: https://www.atharvakanherkar.com/blog/on-building-slowly
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:
- Will this still make sense in five years?
- Can I maintain it without a dashboard?
- 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.
- Section: General
- Published: 2026-05-18
- Tags: web, seo
- HTML: https://www.atharvakanherkar.com/blog/static-sites-still-win
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.