# Vivek Narayanan > Personal site of Vivek Narayanan. He builds generative AI and agentic systems at Amazon and lives in Austin. His life story is told as an illustrated road, a Lord of the Rings fan tribute where each of the four lands is a chapter of three moments, with a plain text version and a JSON version. ## Pages - [Home](https://vivekn.co/): who Vivek is in one line, with links to the story and to contact. - [My story, as a map](https://vivekn.co/story/): an illustrated road in the browser. Choose a companion (Frodo, Gandalf, Aragorn, Legolas or Gimli), then walk from the Shire through Rivendell and Gondor to the road ahead. Each of the four lands is a chapter of his life with three moments. Any moment opens at any time. The full text is also in the page source. - [My story, as text](https://vivekn.co/story/text): the same chapters written out as a plain page, with the stretches of road between them. - [My story, as JSON](https://vivekn.co/story/story.json): the same chapters as structured data, for agents that only fetch. - [My story, as Markdown](https://vivekn.co/story/story.md): the same chapters as plain Markdown. Any page also answers Accept: text/markdown with Markdown. - [About](https://vivekn.co/about/): who Vivek is, in a few paragraphs. - [Contact](https://vivekn.co/contact/): email, X, LinkedIn and GitHub. - [Privacy](https://vivekn.co/privacy/): no cookies, no analytics, no tracking. - [Agent catalog](https://vivekn.co/.well-known/ai-catalog.json): the site's machine-readable resources. The road runs in this order: the Shire, Bree and Weathertop, Rivendell, Caradhras and Moria, Gondor, the cleft, the road ahead. The four chapters hold the moments. The three stretches between them carry no personal story. Each moment has a text anchor at /story/text#m- and a map link at /story/#m-, for example https://vivekn.co/story/text#m-home and https://vivekn.co/story/#m-home. ## Tools Pages register WebMCP tools on navigator.modelContext when the browser provides it. Each tool returns JSON as text. Home (/) and the not found page: - get_profile: name, one-line introduction, home city and links. - get_contact: email address and public social links. - list_pages: the pages on this site, what each holds and the tools each registers. - read_story: the whole story as text, four chapters and their moments, or one chapter ({"chapter": "shire" | "rivendell" | "gondor" | "road-ahead"}). No game needed. Story (/story/): - list_chapters: the four chapters in order with their years, their three moments each, and which moments have been read. - read_chapter: one chapter with the full text of its three moments ({"chapter": "shire" | "rivendell" | "gondor" | "road-ahead"}). - read_moment: one moment's text, without changing the page ({"moment": id}). Moment ids: home, first-build, school, college, first-project, personalization, amazon, grep, forecasting, austin, agentic, next. - choose_hero: chooses a companion and starts the walk at Bag End ({"hero": "frodo" | "gandalf" | "aragorn" | "legolas" | "gimli"}). - walk_on: walks the party to the next stop, the same as the Walk on button: the next moment, a creature on the road, or a beacon hill. When it arrives at a moment the result carries that moment's text. The moment's card opens on arrival only the first time. - go_to: opens a moment's card or goes to a chapter ({"moment": id} or {"chapter": id}). Far stops are reached by a quick journey that lights the beacons on the way. - face_encounter: gets the party past the creature on the road ({"how": "act" | "pass" | "ring"}). act uses the companion's action, pass is Pass by and is allowed after 3 seconds, and ring is Frodo putting on the ring, only while Frodo faces a creature. Each result carries hint, the line that says what the action needs, and done, which is true once the party is past. Nothing fails. - light_beacon: lights the beacon at a beacon hill once the villagers have gathered its cost, or returns the shortfall and the seconds left. - show_map: shows or hides the map of the whole road with every chapter and moment ({"on": true | false}). - get_state: companion, party, chapter, stop, open moment, travelling, creature, beacon and cost, gathered light, keepsakes and weather. While the party is on a stretch, chapter is the next chapter and stage names the stretch. - get_contact: email address and public social links. - begin_again: goes back to the start screen, the same as the Begin again button ({"hero"?: id}). With a hero it starts a new walk as that companion. - go_home: leaves the story for the home page, the same as the Go home button. The quickest way to read everything is read_chapter for each of the four chapters, or /story/story.json. The walk itself is optional. ## Contact - Email: hello@vivekn.co - GitHub: https://github.com/vivnarayan - X: https://x.com/vivekn - LinkedIn: https://www.linkedin.com/in/viveknarayanan6/ ## Credits The story pages are a fan tribute. The Lord of the Rings names belong to the Tolkien Estate and Middle-earth Enterprises. All art and music on the site are original and drawn or generated in code.