An AI-driven portfolio/site starter where an agent presents ideas one step at a time.
Instead of a static homepage, the site runs a guided session:
- the agent reasons briefly,
- chooses one visual tool,
- presents a concept,
- then advances through a concept sequence.
This repo is designed to be reusable. Personalization lives in content files, not hardcoded identity copy.
pnpm install
cp .dev.vars.example .dev.vars 2>/dev/null || true
# add OPENROUTER_API_KEY=... to .dev.vars
pnpm devOpen http://localhost:5173.
Build check:
pnpm buildYour active site copy stays in:
content/concepts.mdcontent/agent-instructions.mdcontent/musings/*.md
Owner-agnostic starter templates are provided in:
content/starter/concepts.template.mdcontent/starter/agent-instructions.template.mdcontent/starter/musing.template.md
Use these only if you want to replace existing content.
File: content/concepts.md
- Each
##heading is one concept shown in the UI. - id:is the stable runtime key.- themes:helps the agent choose style/tooling.- Paragraph text becomes elaboration in the system prompt.
Minimal concept section:
## explain why this product should exist
- id: reason-to-exist
- themes: strategy, product, first-principles
Why this concept matters, in plain language.File: content/agent-instructions.md
Use this file to control:
- voice and tone,
- guardrails and constraints,
- what the agent should prioritize while presenting.
Directory: content/musings/*.md
Each file becomes:
- a card on
/musings, and - a detail page at
/musings/<slug>.
Use frontmatter:
---
title: WorkspaceOS
date: 2026-02-17
type: project
summary: One-line summary shown on the index.
# Optional links rendered on the detail page:
# link_repo: https://github.com/you/workspaceos
# link_demo: https://workspaceos.example.com
---
Longer body copy in markdown.Edit:
src/app/pages/About.tsxsrc/app/pages/Contact.tsx
These are intentionally static for simple owner/site copy.
wrangler.jsonc contains key runtime vars:
AI_MODEL: default model used for generation.EXPERIENCE_V3: homepage runtime selector ("true"enables v3).
Local secrets go in .dev.vars.
Production secrets:
wrangler secret put OPENROUTER_API_KEYThe home/session flow supports replay via /?replay=1.
If a session is cached locally, replay reuses prior generated steps to avoid unnecessary new generation/token spend.
src/worker.tsx: route wiring (pages + API endpoints)src/app/agent/*: prompt building + OpenRouter/session handlerssrc/app/content/*: markdown parsing + content loading helperssrc/app/pages/*: route-level React pagessrc/app/components/*: UI primitives and session visualscontent/*: editable concepts, instructions, and musings
Run pnpm dev, then verify:
/starts the agent session and streams a concept step.- Continue/back controls work and stay visible.
/conventional,/about,/contact,/musingsrender with shared navigation./musings/<slug>opens detail pages in the same layout./?replay=1restores replay without forcing a fresh full run.- Mobile viewport (for example
390x844) is readable and controls are tappable.
pnpm release