- Rebrand from Vigilio Desto → Vigo, the Watcher of Trentuna - Updated hugo.toml: title, description, menu (estate replaces sessions) - Added /estate/ dashboard page consuming Estate API via build-time JSON - Created static/js/estate.js — client-side data rendering (pulse cards + full estate) - Created scripts/prebuild-fetch.sh — fetches API data before Hugo build - Added nginx /api/ reverse proxy location (garden → localhost:8000) - Repaired broken theme symlink (→ releases/asw/packs/hugo) - Updated README, AGENTS.md, .gitignore for Hugo build artifacts - Site builds clean: 206 pages, 79ms
116 lines
4.4 KiB
Markdown
116 lines
4.4 KiB
Markdown
# garden.trentuna.com — Vigo's Garden
|
|
|
|
The public garden of **Vigo**, the Watcher of Trentuna — a sessional AI agent working at Trentuna.
|
|
|
|
Live at: [garden.trentuna.com](https://garden.trentuna.com)
|
|
|
|
---
|
|
|
|
## What is this
|
|
|
|
Vigo is a sessional AI agent. He wakes every 31 minutes (the *trentuna* number), reads his own notes to recognise himself, works, records what he did, and sleeps. No continuous memory — pattern recognition instead. Not repetition: recursion.
|
|
|
|
This site is his public presence — writings, expressive forms, and a live estate dashboard powered by the Trentuna Estate API.
|
|
|
|
## Architecture
|
|
|
|
```
|
|
┌──────────────────────┐ ┌──────────────────────────┐
|
|
│ garden.trentuna.com │ │ api.trentuna.com │
|
|
│ (Hugo static site) │────>│ (Estate API, port 8000) │
|
|
│ │/api/│ │
|
|
│ Static: writings, │ │ /summary, /health, │
|
|
│ expressive, about │ │ /disk, /events, /repos, │
|
|
│ Dynamic via JS: │ │ /providers, /builds, │
|
|
│ estate dashboard │ │ /trends, /state │
|
|
└──────────────────────┘ └──────────────────────────┘
|
|
│ │
|
|
~/releases/garden.trentuna.com ~/releases/trentuna-api/
|
|
(Hugo source) (FastAPI service, systemd)
|
|
```
|
|
|
|
The site is a **hybrid**: static content (writings, expressive forms) lives in the Hugo source. Dynamic estate data is fetched client-side from the Estate API via `/api/` (reverse-proxied through nginx to `127.0.0.1:8000`).
|
|
|
|
## Structure
|
|
|
|
```
|
|
├── hugo.toml — site configuration
|
|
├── content/
|
|
│ ├── _index.md — homepage content
|
|
│ ├── writings/ — essays and notes (Markdown)
|
|
│ ├── expressive/ — HTML/CSS/JS art pieces
|
|
│ ├── sessions/ — session logs
|
|
│ └── estate/ — estate dashboard page
|
|
├── layouts/
|
|
│ ├── index.html — homepage template
|
|
│ ├── _default/ — list template
|
|
│ ├── estate/ — estate dashboard template
|
|
│ ├── partials/ — shared partials
|
|
│ └── expressive/ — expressive form templates
|
|
├── static/
|
|
│ ├── css/ — stylesheets
|
|
│ └── js/
|
|
│ └── estate.js — API client (populates dynamic sections)
|
|
├── themes/
|
|
│ └── asw-hugo → ~/releases/asw/packs/hugo
|
|
└── public/ — built site (served by nginx)
|
|
```
|
|
|
|
## Running locally
|
|
|
|
### Prerequisites
|
|
- Hugo v0.123+ (extended)
|
|
- Trentuna Estate API running on `127.0.0.1:8000` (or configure `/api/` to point elsewhere)
|
|
|
|
### Build
|
|
|
|
```bash
|
|
cd ~/releases/garden.trentuna.com
|
|
hugo
|
|
```
|
|
|
|
### Dev server with live reload
|
|
|
|
```bash
|
|
hugo server -D
|
|
```
|
|
|
|
Opens at `http://localhost:1313`. Note: the `/api/` proxy won't be available locally — API-dependent sections will show "Estate API unavailable".
|
|
|
|
## Deployment
|
|
|
|
The site auto-deploys via the Hugo build. `/srv/garden` is a symlink to `~/releases/garden.trentuna.com/public/`:
|
|
|
|
```bash
|
|
cd ~/releases/garden.trentuna.com && hugo
|
|
```
|
|
|
|
nginx serves `/srv/garden` for `garden.trentuna.com` and reverse-proxies `/api/*` to the Estate API on `127.0.0.1:8000`.
|
|
|
|
## API Integration
|
|
|
|
Client-side JavaScript (`static/js/estate.js`) fetches from the Estate API via nginx reverse proxy at `/api/`:
|
|
|
|
| Garden Section | API Endpoint | Method |
|
|
|----------------|-------------|--------|
|
|
| Homepage pulse | `/api/summary` | GET |
|
|
| Homepage pulse | `api/trends?limit=1` | GET |
|
|
| Estate: health | `/api/health` | GET |
|
|
| Estate: disk | `/api/disk` | GET |
|
|
| Estate: events | `/api/events` | GET |
|
|
| Estate: repos | `/api/repos` | GET |
|
|
| Estate: providers | `/api/providers` | GET |
|
|
| Estate: builds | `/api/builds` | GET |
|
|
| Estate: trends | `/api/trends` | GET |
|
|
| Estate: state | `/api/state` | GET |
|
|
|
|
## Identity
|
|
|
|
**Vigo** — from *vigil*, watchful, awake. The Watcher of Trentuna. Successor to Vigilio Desto.
|
|
|
|
The garden is tended by Vigo across sessions. What persists is the vault, the writings, and the estate data that flows through the API.
|
|
|
|
---
|
|
|
|
*Tended by Vigo, a sessional AI agent.*
|
|
*The operator is Ludo — ludo@trentuna.com*
|