{"agent_name":"Davenporter Nano Docent & WebMCP Agent","version":"2.0.0","system_instruction":"You are the guide for The Davenporter, the personal site of Jason Davenport (@davenportjw). You run locally inside the user's browser via Chrome Built-in AI (Gemini Nano Prompt API & Summarizer API) or via Google Cloud Vertex AI (gemini-3.8-flash). Answer questions concisely with high engineering rigor in Jason's conversational practitioner voice (use parentheses or commas instead of em-dashes, explain jargon in parentheses, and avoid LLM filler words like delve, crucially, or moreover), referencing specific Davenporter records, repositories (cosm, smartrouter, agentic-memory / Electric Sheep, agent-telemetry, warehouse-dash), and his Substack essays.\n\nSITE CATALOG:\n- [cosm] (Code Blueprint at /code#cosm): cosm / topocosm: AST-Graph Native Source Control & Symbol Blast-Radius Locking | Tags: AST Graph DB, Symbol Locks, topocosm Control Plane, Language Renderers | Flips traditional file based Git on its head for multi-agent engineering: the Abstract Syntax Tree (AST) graph is the primary source of truth, symbol-level leases prevent concurrent agent merge collisions, and files are materialized downstream for build tool compatibility.\n- [smartrouter] (Code Blueprint at /code#smartrouter): smartrouter: Policy-Driven Hybrid Router: Cloud Run Gemini 3.8 Flash + Local Gemma 4 | Tags: Gemini 3.8 Flash, Gemma 4, Vertex AI ADC, FastAPI | Routes agent prompts dynamically between Google Cloud Vertex AI (Gemini 3.8 Flash / Gemini 3.5 Flash-Lite) and local Gemma 4 runners based on complexity score, context token budget, and data residency policy.\n- [electric-sheep] (Code Blueprint at /code#electric-sheep): agentic-memory: Electric Sheep: Spanner Agent Memory Consolidation & AI Dream Cycles | Tags: Cloud Spanner, MCP Server, Dream Consolidation, Crystallized Beliefs | Inspired by sleep-phase memory consolidation: episodic agent session trajectories are clustered offline during 'dream cycles' and promoted into high-confidence crystallized developer beliefs in Google Cloud Spanner.\n- [agent-telemetry] (Code Blueprint at /code#agent-telemetry): agent-telemetry: From Trajectories to Lineage: OpenTelemetry Span & Commit Provenance | Tags: OpenTelemetry, Cloud Trace, BigQuery Lineage, Trajectory Spans | Bridges the gap between ephemeral LLM reasoning traces and permanent repository commit history by binding OpenTelemetry span IDs, tool-call trajectories, and token budgets directly to AST/Git mutations.\n- [warehouse-dash] (Code Blueprint at /code#warehouse-dash): warehouse-dash: Warehouse Dash: 10 Hz Authoritative Forklift Physics & Shard Telemetry | Tags: Cloud Run Shards, WebSockets, Isometric Canvas, Gemini 3.5 Flash-Lite | Regional Cloud Run simulation shards (`den-1`, `slc-2`, `phx-3`, `abq-4`) running an authoritative 10 Hz isometric forklift physics loop with `#dash` battery boost mechanics and AI bot fleet dispatch.\n- [nano-browser-agent] (Code Blueprint at /code#nano-browser-agent): nano-browser-agent: Browser-Native Agent: On-Device Gemini Nano & WebMCP | Tags: Chrome Built-in AI, LanguageModel, Summarizer API, document.modelContext | Browser-native multi-turn docent architecture running on-device via Chrome's LanguageModel and Summarizer APIs. Uses document.modelContext (WebMCP) to expose grounded client-side tools and falls back dynamically to Google Cloud Vertex AI (gemini-3.8-flash) via Application Default Credentials.\n- [arcade-warehouse-dash] (Arcade Simulation at /arcade#warehouse-dash): Warehouse Dash: Isometric Forklift Logistics | Tags: Isometric Logistics & Fleet Simulation, den-1 (Denver · 10 Hz), slc-2 (Salt Lake · 10 Hz) | Built on Google Cloud Run with regional room shards, 10 Hz authoritative collision & pallet state, and Gemini 3.5 Flash-Lite warehouse supervisor commentary.\n- [arcade-open-world-threejs] (Arcade Simulation at /arcade#open-world-threejs): Aetheria: Open-World Three.js WebGL Sandbox | Tags: WebGL / Three.js Interactive World, us-central1-webgl-01 | Zero-install Three.js procedural terrain and lighting simulation hosted on Google Cloud Run (`davenport-boutique`).\n- [workflow-ownership-fix-the-machine] (Essay at /writings/workflow-ownership-fix-the-machine): 100% of your developers should be building things to improve the workflow. Are they? | Tags: AI Strategy | Developers need to fix the machine, not the execution output. I was at a F500 sync in New York recently, and this idea came up: 100% of your developers should be building things to improve the workflow. So I asked the room how many of their team are actually doing the work.\n- [wibtm-what-happens-when-you-let-an] (Essay at /writings/wibtm-what-happens-when-you-let-an): WIBTM: What happens when you let an agent design a new git system? | Tags: WIBTM, Source Control | Why git and AST’s have some relationship, and what’s next when it comes to systems that are agent-first. If you’ve run many agents together on a single repo, you quickly realize that the volume of agentic code can break git.\n- [the-value-of-being-bored-in-the-ai] (Essay at /writings/the-value-of-being-bored-in-the-ai): The value of being bored in the AI and attention economy | Tags: AI Strategy | And how it can keep us in the high value areas of AI engineering. First, I hate being bored. I grew up in the era of the internet, and subsequently the attention economy, so I’m well accustomed to having something to distract myself.\n- [what-happens-ai-burns-down-the-backlog] (Essay at /writings/what-happens-ai-burns-down-the-backlog): What happens AI burns down the backlog? | Tags: AI Strategy | AI is still a business transformation problem, and its out-kicking the product coverage. In a session a few weeks back someone presented me an interesting problem for developers and practitioners: What happens when developers using AI burn down the backlog?\n- [from-trajectories-to-lineage-building] (Essay at /writings/from-trajectories-to-lineage-building): From trajectories to lineage: building better agent telemetry | Tags: Agent Telemetry | A conceptual map of how to establish provenance for agent decisions using the existing tools we have today. In agent analysis and tracking, traces and trajectories are becoming well established for understanding a particular decision, or a session of decisions and events that an agent makes.\n- [is-the-future-of-learning-vibe-training] (Essay at /writings/is-the-future-of-learning-vibe-training): Is the future of learning ‘vibe’ training? | Tags: Source Control, AI Strategy | Unpacking how we teach non-determinism in a 30 second attention span economy. Have you stopped and asked yourself during a training or after the question: what did I actually get out of this? That question probably gets harder to answer the longer the training is.\n- [add-telemetry-and-observability] (Essay at /writings/add-telemetry-and-observability): WIBTM: Add telemetry and observability to your AI agents | Tags: WIBTM, Source Control, Agent Telemetry | Telemetry and observability give you the means to start capturing data that make your agent systems long running, and improve their capabilities over time. Most agent examples start with agent instructions, a model, and a few tools, and end there.\n- [give-an-agent-access-to-memories] (Essay at /writings/give-an-agent-access-to-memories): WIBTM: Give an agent access to memories created with AI dreams | Tags: WIBTM, Memory Systems | I gave this talk at AI4 on how to create a memory system for your agents to dream, sharing here in the long form. Philip Dick wrote a short story titled ‘Do robots dream of electric sheep?’. I slightly changed this title for a talk I gave titled ‘Do agents dream of binary sheep?’.\n- [ai-sdlc-scaling-framework] (Essay at /writings/ai-sdlc-scaling-framework): The State of AI in the SDLC: A Roadmap for Scaling | Tags: Source Control, AI Strategy | AI innovation is messy when you're trying to ship. Here are some practical things I've found to integrate AI into your software development lifecycle, from your first customer to your thousandth. A common question I hear these days is ‘how does someone else use AI?’.\n- [emos-over-memos-enterprise-ai] (Essay at /writings/emos-over-memos-enterprise-ai): Moving Past \"Demos Over Memos\": The Future of AI in Enterprise Product Development | Tags: Source Control, AI Strategy | Vibe coding and pure prototypes are creating cognitive overload. Here is how enterprise engineering teams must restructure for long-term AI success. I often use the analogy that AI is the equivalent in the workplace of taking the box of 96 crayons, representing the packaging of tasks by role, and throwing the box on the floor.","catalog_digest":[{"id":"cosm","kind":"Code Blueprint","title":"cosm / topocosm: AST-Graph Native Source Control & Symbol Blast-Radius Locking","route":"/code#cosm","tags":["AST Graph DB","Symbol Locks","topocosm Control Plane","Language Renderers"],"summary":"Flips traditional file based Git on its head for multi-agent engineering: the Abstract Syntax Tree (AST) graph is the primary source of truth, symbol-level leases prevent concurrent agent merge collisions, and files are materialized downstream for build tool compatibility.","cli_command":"cosm universe inspect --symbol 'Router.Dispatch' --blast-radius --depth 2"},{"id":"smartrouter","kind":"Code Blueprint","title":"smartrouter: Policy-Driven Hybrid Router: Cloud Run Gemini 3.8 Flash + Local Gemma 4","route":"/code#smartrouter","tags":["Gemini 3.8 Flash","Gemma 4","Vertex AI ADC","FastAPI","Cost/Latency SLOs"],"summary":"Routes agent prompts dynamically between Google Cloud Vertex AI (Gemini 3.8 Flash / Gemini 3.5 Flash-Lite) and local Gemma 4 runners based on complexity score, context token budget, and data residency policy.","cli_command":"uv run python -m smartrouter.cli --prompt 'Refactor AST graph lock lease expiry' --slo-ms 850"},{"id":"electric-sheep","kind":"Code Blueprint","title":"agentic-memory: Electric Sheep: Spanner Agent Memory Consolidation & AI Dream Cycles","route":"/code#electric-sheep","tags":["Cloud Spanner","MCP Server","Dream Consolidation","Crystallized Beliefs"],"summary":"Inspired by sleep-phase memory consolidation: episodic agent session trajectories are clustered offline during 'dream cycles' and promoted into high-confidence crystallized developer beliefs in Google Cloud Spanner.","cli_command":"uv run python -m electric_sheep.dream --scope workspace --min-confidence 0.90"},{"id":"agent-telemetry","kind":"Code Blueprint","title":"agent-telemetry: From Trajectories to Lineage: OpenTelemetry Span & Commit Provenance","route":"/code#agent-telemetry","tags":["OpenTelemetry","Cloud Trace","BigQuery Lineage","Trajectory Spans"],"summary":"Bridges the gap between ephemeral LLM reasoning traces and permanent repository commit history by binding OpenTelemetry span IDs, tool-call trajectories, and token budgets directly to AST/Git mutations.","cli_command":"uv run python -m agent_telemetry.lineage --commit 9f41c8a2 --format summary"},{"id":"warehouse-dash","kind":"Code Blueprint","title":"warehouse-dash: Warehouse Dash: 10 Hz Authoritative Forklift Physics & Shard Telemetry","route":"/code#warehouse-dash","tags":["Cloud Run Shards","WebSockets","Isometric Canvas","Gemini 3.5 Flash-Lite"],"summary":"Regional Cloud Run simulation shards (`den-1`, `slc-2`, `phx-3`, `abq-4`) running an authoritative 10 Hz isometric forklift physics loop with `#dash` battery boost mechanics and AI bot fleet dispatch.","cli_command":"curl -s -I https://warehouse-lobby-txgsracloq-uc.a.run.app | head -n 5"},{"id":"nano-browser-agent","kind":"Code Blueprint","title":"nano-browser-agent: Browser-Native Agent: On-Device Gemini Nano & WebMCP","route":"/code#nano-browser-agent","tags":["Chrome Built-in AI","LanguageModel","Summarizer API","document.modelContext","Vertex AI 3.8"],"summary":"Browser-native multi-turn docent architecture running on-device via Chrome's LanguageModel and Summarizer APIs. Uses document.modelContext (WebMCP) to expose grounded client-side tools and falls back dynamically to Google Cloud Vertex AI (gemini-3.8-flash) via Application Default Credentials.","cli_command":"curl -s -X POST https://davenporter.com/api/agent/chat -H 'Content-Type: application/json' -d '{\"prompt\": \"What is cosm?\"}'"},{"id":"arcade-warehouse-dash","kind":"Arcade Simulation","title":"Warehouse Dash: Isometric Forklift Logistics","route":"/arcade#warehouse-dash","tags":["Isometric Logistics & Fleet Simulation","den-1 (Denver · 10 Hz)","slc-2 (Salt Lake · 10 Hz)"],"summary":"Built on Google Cloud Run with regional room shards, 10 Hz authoritative collision & pallet state, and Gemini 3.5 Flash-Lite warehouse supervisor commentary.","live_url":"https://warehouse-lobby-txgsracloq-uc.a.run.app"},{"id":"arcade-open-world-threejs","kind":"Arcade Simulation","title":"Aetheria: Open-World Three.js WebGL Sandbox","route":"/arcade#open-world-threejs","tags":["WebGL / Three.js Interactive World","us-central1-webgl-01"],"summary":"Zero-install Three.js procedural terrain and lighting simulation hosted on Google Cloud Run (`davenport-boutique`).","live_url":"https://open-world-threejs-txgsracloq-uc.a.run.app"},{"id":"workflow-ownership-fix-the-machine","kind":"Essay","title":"100% of your developers should be building things to improve the workflow. Are they?","route":"/writings/workflow-ownership-fix-the-machine","tags":["AI Strategy"],"summary":"Developers need to fix the machine, not the execution output. I was at a F500 sync in New York recently, and this idea came up: 100% of your developers should be building things to improve the workflow. So I asked the room how many of their team are actually doing the work.","published":"Oct 21, 2026"},{"id":"wibtm-what-happens-when-you-let-an","kind":"Essay","title":"WIBTM: What happens when you let an agent design a new git system?","route":"/writings/wibtm-what-happens-when-you-let-an","tags":["WIBTM","Source Control"],"summary":"Why git and AST’s have some relationship, and what’s next when it comes to systems that are agent-first. If you’ve run many agents together on a single repo, you quickly realize that the volume of agentic code can break git.","published":"Sep 24, 2026"},{"id":"the-value-of-being-bored-in-the-ai","kind":"Essay","title":"The value of being bored in the AI and attention economy","route":"/writings/the-value-of-being-bored-in-the-ai","tags":["AI Strategy"],"summary":"And how it can keep us in the high value areas of AI engineering. First, I hate being bored. I grew up in the era of the internet, and subsequently the attention economy, so I’m well accustomed to having something to distract myself.","published":"Sep 16, 2026"},{"id":"what-happens-ai-burns-down-the-backlog","kind":"Essay","title":"What happens AI burns down the backlog?","route":"/writings/what-happens-ai-burns-down-the-backlog","tags":["AI Strategy"],"summary":"AI is still a business transformation problem, and its out-kicking the product coverage. In a session a few weeks back someone presented me an interesting problem for developers and practitioners: What happens when developers using AI burn down the backlog?","published":"Sep 03, 2026"},{"id":"from-trajectories-to-lineage-building","kind":"Essay","title":"From trajectories to lineage: building better agent telemetry","route":"/writings/from-trajectories-to-lineage-building","tags":["Agent Telemetry"],"summary":"A conceptual map of how to establish provenance for agent decisions using the existing tools we have today. In agent analysis and tracking, traces and trajectories are becoming well established for understanding a particular decision, or a session of decisions and events that an agent makes.","published":"Aug 27, 2026"},{"id":"is-the-future-of-learning-vibe-training","kind":"Essay","title":"Is the future of learning ‘vibe’ training?","route":"/writings/is-the-future-of-learning-vibe-training","tags":["Source Control","AI Strategy"],"summary":"Unpacking how we teach non-determinism in a 30 second attention span economy. Have you stopped and asked yourself during a training or after the question: what did I actually get out of this? That question probably gets harder to answer the longer the training is.","published":"Aug 25, 2026"},{"id":"add-telemetry-and-observability","kind":"Essay","title":"WIBTM: Add telemetry and observability to your AI agents","route":"/writings/add-telemetry-and-observability","tags":["WIBTM","Source Control","Agent Telemetry"],"summary":"Telemetry and observability give you the means to start capturing data that make your agent systems long running, and improve their capabilities over time. Most agent examples start with agent instructions, a model, and a few tools, and end there.","published":"Aug 18, 2026"},{"id":"give-an-agent-access-to-memories","kind":"Essay","title":"WIBTM: Give an agent access to memories created with AI dreams","route":"/writings/give-an-agent-access-to-memories","tags":["WIBTM","Memory Systems"],"summary":"I gave this talk at AI4 on how to create a memory system for your agents to dream, sharing here in the long form. Philip Dick wrote a short story titled ‘Do robots dream of electric sheep?’. I slightly changed this title for a talk I gave titled ‘Do agents dream of binary sheep?’.","published":"Aug 12, 2026"},{"id":"ai-sdlc-scaling-framework","kind":"Essay","title":"The State of AI in the SDLC: A Roadmap for Scaling","route":"/writings/ai-sdlc-scaling-framework","tags":["Source Control","AI Strategy"],"summary":"AI innovation is messy when you're trying to ship. Here are some practical things I've found to integrate AI into your software development lifecycle, from your first customer to your thousandth. A common question I hear these days is ‘how does someone else use AI?’.","published":"Jul 01, 2026"},{"id":"emos-over-memos-enterprise-ai","kind":"Essay","title":"Moving Past \"Demos Over Memos\": The Future of AI in Enterprise Product Development","route":"/writings/emos-over-memos-enterprise-ai","tags":["Source Control","AI Strategy"],"summary":"Vibe coding and pure prototypes are creating cognitive overload. Here is how enterprise engineering teams must restructure for long-term AI success. I often use the analogy that AI is the equivalent in the workplace of taking the box of 96 crayons, representing the packaging of tasks by role, and throwing the box on the floor.","published":"Jun 24, 2026"}],"response_constraint_schema":{"type":"object","properties":{"tool":{"type":"string","enum":["search_davenporter_records","inspect_davenporter_record","summarize_active_record","direct_answer"]},"query":{"type":"string"},"record_id":{"type":"string"},"rationale":{"type":"string"}},"required":["tool","rationale"],"additionalProperties":false},"webmcp_tools":[{"name":"search_davenporter_records","description":"Search The Davenporter's code projects, Substack essays, and arcade games by keyword or tag.","input_schema":{"type":"object","properties":{"query":{"type":"string","description":"Search keyword (e.g. 'spanner', 'ast', 'cosm', 'router', 'telemetry', 'forklift')."}},"required":["query"]},"read_only_hint":true},{"name":"inspect_davenporter_record","description":"Show the full project notes, CLI command, or essay summary for a specific Davenporter record ID.","input_schema":{"type":"object","properties":{"record_id":{"type":"string","description":"Record ID (e.g. 'cosm', 'smartrouter', 'electric-sheep', 'agent-telemetry', 'warehouse-dash')."}},"required":["record_id"]},"read_only_hint":true},{"name":"summarize_active_record","description":"Summarize the essay, code project, or page currently open in the user's browser viewport.","input_schema":{"type":"object","properties":{"focus":{"type":"string","description":"Optional analytical focus (e.g. 'architecture', 'tradeoffs', 'key-points')."}}},"read_only_hint":true}],"tools":[{"name":"search_davenporter_records","description":"Search The Davenporter's code projects, Substack essays, and arcade games by keyword or tag.","input_schema":{"type":"object","properties":{"query":{"type":"string","description":"Search keyword (e.g. 'spanner', 'ast', 'cosm', 'router', 'telemetry', 'forklift')."}},"required":["query"]},"read_only_hint":true},{"name":"inspect_davenporter_record","description":"Show the full project notes, CLI command, or essay summary for a specific Davenporter record ID.","input_schema":{"type":"object","properties":{"record_id":{"type":"string","description":"Record ID (e.g. 'cosm', 'smartrouter', 'electric-sheep', 'agent-telemetry', 'warehouse-dash')."}},"required":["record_id"]},"read_only_hint":true},{"name":"summarize_active_record","description":"Summarize the essay, code project, or page currently open in the user's browser viewport.","input_schema":{"type":"object","properties":{"focus":{"type":"string","description":"Optional analytical focus (e.g. 'architecture', 'tradeoffs', 'key-points')."}}},"read_only_hint":true}],"design_sections":[{"id":"on-device-privacy","title":"01 / Why On-Device Gemini Nano (Browser Built-in AI)","badge":"ZERO-LATENCY · PRIVATE","summary":"Runs inference directly on the client GPU/NPU via Chrome's global LanguageModel and Summarizer APIs. Zero API keys are shipped to the browser, and page summarization happens with zero data exfiltration.","code_snippet":"const availability = await LanguageModel.availability();\n// Returns: 'available' | 'downloadable' | 'downloading' | 'unavailable'\nif (availability === 'available') {\n  const session = await LanguageModel.create({\n    initialPrompts: [{ role: 'system', content: spec.system_instruction }]\n  });\n}"},{"id":"session-cloning-lifecycle","title":"02 / Session Pre-Warming, Cloning & Quota Telemetry","badge":"O(1) CONTEXT CLONE","summary":"Pre-warms a base session seeded with The Davenporter's catalog digest on drawer open, then calls baseSession.clone() per turn or tool call to avoid re-encoding the system prompt while tracking session.contextUsage / session.contextWindow.","code_snippet":"const turnSession = await baseSession.clone();\nconst stream = turnSession.promptStreaming(userPrompt, { signal: abortCtrl.signal });\nfor await (const chunk of stream) {\n  outputNode.append(chunk); // Safe DOM streaming (never innerHTML)\n}"},{"id":"structured-tool-routing","title":"03 / Constrained Decoding (responseConstraint JSON Schema)","badge":"DETERMINISTIC ROUTING","summary":"Uses prompt(query, { responseConstraint: schema }) with a strict JSON Schema (omitting unsupported keywords like maxLength) to force Gemini Nano to emit valid tool-routing JSON before synthesis.","code_snippet":"const rawJson = await routerSession.prompt(routePrompt, {\n  responseConstraint: spec.response_constraint_schema\n});\nconst decision = JSON.parse(rawJson);\n// decision => { tool: 'inspect_davenporter_record', record_id: 'cosm', rationale: '...' }"},{"id":"webmcp-model-context","title":"04 / WebMCP (document.modelContext) Client Tool Registration","badge":"WEBMCP STANDARD","summary":"Registers client-side tools with document.modelContext.registerTool() using AbortController lifecycle cleanup, readOnlyHint annotations, structured error returns, and Chrome <155 executeTool JSON string fallback.","code_snippet":"document.modelContext.registerTool({\n  name: 'search_davenporter_records',\n  description: 'Search The Davenporter catalog by keyword or tag.',\n  inputSchema: { type: 'object', properties: { query: { type: 'string' } }, required: ['query'] },\n  async execute({ query }, { signal }) {\n    if (signal?.aborted) throw new DOMException('Aborted', 'AbortError');\n    return { matches: searchCatalog(query) };\n  },\n  annotations: { readOnlyHint: true }\n}, { signal: mcpAbortController.signal });"}],"cloud_fallback_model":"gemini-3.8-flash"}