Polysona includes a local-first fullstack dashboard to inspect your persona data and pipeline state without leaving your machine. The dashboard is built on a Hono server (running on Bun) and a React 19 client, communicates over a set ofDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/LilMGenius/polysona/llms.txt
Use this file to discover all available pages before exploring further.
/api/* routes, and exposes everything the pipeline produces — personas, agent status, content drafts, and published files — as readable views. It does not write to or modify any persona files.
Starting the Dashboard
bun run dev builds the React client first, then starts the Hono server:
bun run dev runs vite build followed by bun run server/index.ts. The server looks for dist/index.html and, if it exists, serves the built client from dist/. If you need to rebuild the client separately (e.g. after editing the React source), run bun run build first.3000 by default. Set the PORT environment variable to override:
Dashboard Pages
Home
System status overview: version number, workspace path, persona count, and a system-online indicator. Below the status grid, active personas are listed as clickable cards linking to Persona Detail. Agent status cards show all five agents. A Quick Start panel displays the Codex and Claude Code command references side-by-side.
Personas
Grid of all personas discovered in the
personas/ directory. Each card shows the persona name and ID and links to the full Persona Detail view. If no personas exist yet, a prompt to run /interview is displayed.Persona Detail
Deep view for a single persona. Renders PLOON data from
persona.md (core, decide, energy, blind tables), nuance.md (voice, platform tables), and accounts.md (accounts, ideal, rolemodel, virtual tables). Also shows Self Layer Model diagram, Gap Analysis, Voice Mix bar, Framework Coverage, and Interview Timeline derived from the interview-log section.Agent Monitor
Live status for all five agents (profiler, trendsetter, content-writer, virtual-follower, admin). Each card reflects whether the agent’s skill file exists on disk and when it last had activity. Includes a How to Invoke panel showing Codex (
$) and Claude Code (/) commands side-by-side.Content Pipeline
Drafts and published content from
content/drafts/ and content/published/. Files are grouped by stage and filterable by platform (x, threads, linkedin, naver-blog, brunch). Each card shows the filename, platform tag, draft/published status, and a quality meter. Links to QA simulation per file are available inline.The dashboard is read-only. It visualizes data written by the agent pipeline but does not create, edit, or delete persona files or content files.
Tech Stack
| Layer | Technology |
|---|---|
| Server | Hono v4 on Bun |
| Client | React 19 + React Router v7 |
| Styling | Tailwind CSS v4 (via @tailwindcss/vite) |
| Build | Vite 7 (client/ root, output to dist/) |
| Runtime | Bun |
root: 'client' and outputs to ../dist (repo root dist/). The Hono server serves dist/index.html for all non-API routes, enabling React Router’s client-side navigation.
API Endpoints
The dashboard is powered by six REST endpoints under/api. These are also usable directly for scripting or external tooling.
| Method | Path | Description |
|---|---|---|
GET | /api/status | Returns version, persona count, content count, and last activity timestamp |
GET | /api/personas | Returns a sorted list of all persona IDs and names from personas/ |
GET | /api/personas/:id | Returns full PLOON data for a persona: persona, nuance, and accounts objects |
GET | /api/agents/status | Returns status for all five agents including skill file existence and last activity |
GET | /api/content/drafts | Returns a sorted list of filenames from content/drafts/ |
GET | /api/content/published | Returns a sorted list of filenames from content/published/ |
Example responses
Building for Production
If you want to serve the pre-built client without the Vite dev dependency, build first and then run the server directly:NODE_ENV=production environment the server always serves from dist/ regardless of whether dist/index.html exists, so make sure bun run build completes successfully before deploying.