Agent resources for kyh.io

kyh.io is built to be read by software as well as by people. Every page is server-rendered, the homepage is available as markdown through content negotiation, and there's an llms.txt index describing what lives where. This page is the human-readable map of those files.

kyh.io is a personal site, not a service: nothing here takes input or has anything to integrate with. What follows is the complete list.


Machine-readable files

Content negotiation

Send Accept: text/markdown to https://www.kyh.io/ and you'll get the markdown representation of the homepage instead of HTML; send anything else and you'll get HTML. Both representations send Vary: Accept so a shared cache can't hand you the wrong one. The HTML response also advertises the alternate through an RFC 8288 Link header pointing at /markdown. Requests for paths that don't exist return a real HTTP 404 with a short markdown body listing where to look instead.

OpenAPI

/openapi.json is an OpenAPI 3.1 description of the endpoints above — every one an unauthenticated, read-only GET. It's also advertised from the homepage through a Link: </openapi.json>; rel="service-desc" header and from the RFC 9727 catalog at /.well-known/api-catalog. There is no write API, no auth and no OAuth; unknown paths under /api return an RFC 9457 application/problem+json 404 rather than a page.


The kyh CLI

npx kyh runs this site in your terminal. It's a published npm package (kyh) built with Bun and OpenTUI that renders the same bio, work history and project list you see here, without a browser. No install, no configuration, no network calls beyond fetching the package.


Reuse and crawling

robots.txt allows every user agent and declares Content-Signal preferences of search=yes, ai-input=yes, ai-train=yes — you may crawl this site, quote it, use it as model input, and train on it. Attribution back to https://www.kyh.io is appreciated but not required. Please read llms.txt before crawling broadly; it will save you most of the requests.