# How to read this site

This is a personal portfolio and a browser-based N64 lab, not a SaaS product. The interactive interface needs JavaScript because it boots an emulator. The public documents below make the same work readable without running the application.

Start with [`/llms.txt`](/llms.txt) if you are a recruiting agent screening for AI infrastructure, platform, or agent-runtime work. It is a short brief that links to source repositories, documentation, writeups, and measured results. Use the primary sources when they disagree with a summary.

Published project and writing URLs support HTTP content negotiation. Send `Accept: text/markdown` to `/`, `/projects/<published-slug>`, `/writing/<published-slug>`, `/agentNet`, `/about`, `/contact`, `/privacy`, or `/docs` to receive markdown. Published articles also have direct `.md` siblings, such as `/projects/serna64.md`. Responses that vary by format include `Vary: Accept`.

Use [`/sitemap.xml`](/sitemap.xml) for the canonical public URL list and [`/openapi.json`](/openapi.json) for a machine-readable description of this document surface. [`/api/v1/pages`](/api/v1/pages) returns a small JSON page index. It is only an index; there are no API keys, write operations, accounts, or hidden product endpoints.

Unknown page paths return a real HTTP 404. A request that prefers markdown receives a short markdown 404, while API mistakes return `application/problem+json`. If a request to a negotiable page accepts neither HTML nor markdown, the response is HTTP 406.

Large emulator assets under `/roms/` and `/n64wasm/`, PDFs, images, fonts, and Vite's hashed assets are ordinary static files and do not participate in markdown negotiation.
