
← docs/ | cat vesper.md
Vesper is one agent that owns a website’s entire content lifecycle. It learns the repo, researches real search demand, drafts content behind an EEAT gate, publishes it, monitors how it ranks, and reflects on the result to do better next time. The pieces that handle each stage - keyword discovery, drafting, scouting, monitoring - are internal capabilities of a single agent with one persona, not a swarm of separate bots. Every stage is grounded in the same picture of the site.
The whole system is built to be inspectable instead of magic. Nothing reads the wall clock directly, so any run can be replayed deterministically; every model call and decision is written to a log; and the agent loads a profile of its environment before it reasons about anything.
How it works
- Learn - Vesper reads the target repo and site to build SiteKnowledge: what exists, what it covers, how it is structured.
- Research demand - it gathers a demand pool from free data sources and Google Search Console, not guesses.
- Draft - content is generated behind an EEAT gate that refuses claims it cannot support.
- Publish - drafts are committed to the repo, then verified live, and verified removed on rollback.
- Monitor and reflect - rankings are tracked, contradictions are surfaced, and outcomes feed back as an owned training signal.
Why it is built this way
- Deterministic core - a
Clock(SimClock/RealClock) plus a seeded RNG. You can fast-forward a simulated month and score what the agent did before trusting it on a live site. - Provider-agnostic LLM - one client over any OpenAI-compatible endpoint, plus an offline mock for tests.
- Stateless agents, stateful DB - all state lives in Postgres; the agent holds nothing between ticks.
- Guardrails, not vibes - caution about repo writes lives in explicit guardrails, and a single persona keeps behaviour coherent across every stage.
Status
In progress. The shared core and a sibling evidence-gated issues agent are built and tested; the SEO pipeline (keywords, blogger, monitor, connectors) is the current focus. The console at vesper.fjgbu.org is the operator view: agent runs, logs, and the About and technical sheets that document every stage.
Stack
- TypeScript monorepo (pnpm + Turborepo) with shared
core,seo,issues-agent,personas, andconsolepackages - Next.js 15 + React 19 operator console, Tailwind, Phosphor icons
- Drizzle ORM + PostgreSQL for all state, logs, and outcome records
- Self-hosted on the same Hetzner node, auto-deployed on push