130 lines
3.5 KiB
Markdown
130 lines
3.5 KiB
Markdown
# MeOS Dashboard
|
|
|
|
A web UI for the MeOS platform — wraps Forgejo API, vault browsing, and agent monitoring into one view.
|
|
|
|
## Architecture
|
|
|
|
```
|
|
Browser → nginx (n97) → MeOS Dashboard (Next.js on port 3001)
|
|
├── Forgejo API (repos, PRs, CI status)
|
|
├── Filesystem API (vault browsing via server-side reader)
|
|
└── OpenClaw Gateway API (agent status, memory)
|
|
```
|
|
|
|
## Stack
|
|
|
|
- **Framework:** Next.js 14 (App Router)
|
|
- **Styling:** Tailwind CSS (dark mode default, light mode toggle)
|
|
- **Deployment:** Node.js systemd service, reverse-proxied by nginx
|
|
|
|
## Quick Start
|
|
|
|
### 1. Install dependencies
|
|
|
|
```bash
|
|
cd ~/vault/meos/dashboard
|
|
npm install
|
|
```
|
|
|
|
### 2. Configure environment
|
|
|
|
```bash
|
|
cp .env.local.example .env.local
|
|
```
|
|
|
|
Edit `.env.local` and add your Forgejo API token:
|
|
|
|
```
|
|
FORGEJO_API_URL=http://192.168.168.221:3000/api/v1
|
|
FORGEJO_TOKEN=your-token-here
|
|
VAULT_PATH=/home/sscoble/vault
|
|
OPENCLAW_API_URL=http://localhost:7477
|
|
```
|
|
|
|
### 3. Run in development mode
|
|
|
|
```bash
|
|
cd ~/vault/meos/dashboard
|
|
npm run dev
|
|
```
|
|
|
|
Or use the startup script:
|
|
|
|
```bash
|
|
~/vault/meos/start-dashboard.sh
|
|
```
|
|
|
|
Open **http://n97:3001** (or http://192.168.168.97:3001).
|
|
|
|
### 4. Build for production
|
|
|
|
```bash
|
|
cd ~/vault/meos/dashboard
|
|
npm run build
|
|
npm run start
|
|
```
|
|
|
|
### 5. Install as a systemd service (production)
|
|
|
|
```bash
|
|
# First build the production bundle
|
|
cd ~/vault/meos/dashboard
|
|
npm run build
|
|
|
|
# Then install the service
|
|
sudo cp ~/vault/meos/meos-dashboard.service /etc/systemd/system/
|
|
sudo systemctl daemon-reload
|
|
sudo systemctl enable meos-dashboard
|
|
sudo systemctl start meos-dashboard
|
|
```
|
|
|
|
Check status:
|
|
|
|
```bash
|
|
sudo systemctl status meos-dashboard
|
|
```
|
|
|
|
## Routes
|
|
|
|
| Route | Description |
|
|
|---|---|
|
|
| `/` | Dashboard overview — repos, recent zettels, agent status, quick actions |
|
|
| `/vault` | Vault browser — file tree, zettel viewer, search, graph view |
|
|
| `/vault/[slug]` | Direct zettel link |
|
|
| `/presentations` | Presentation repos and CI status |
|
|
| `/agents` | Department health, gateway status, memory info |
|
|
| `/pipeline` | CI/CD runs and recent commits |
|
|
|
|
## API Routes (internal, used by the frontend)
|
|
|
|
| Route | Description |
|
|
|---|---|
|
|
| `GET /api/forgejo/repos` | List all repos |
|
|
| `GET /api/forgejo/commits` | Recent commits across repos |
|
|
| `GET /api/forgejo/ci-runs` | CI/CD workflow runs |
|
|
| `GET /api/vault/list` | List all vault .md files |
|
|
| `GET /api/vault/read?path=` | Read a zettel |
|
|
| `GET /api/vault/search?q=` | Search zettel content |
|
|
| `GET /api/vault/recent` | Last 5 modified zettels |
|
|
| `GET /api/vault/graph` | [[wiki-link]] graph JSON |
|
|
| `GET /api/agent/status` | Gateway health check |
|
|
| `GET /api/agent/departments` | Department statuses |
|
|
| `GET /api/presentations/list` | Presentation repos |
|
|
|
|
## Architecture Notes
|
|
|
|
- **No authentication for MVP** — runs on local network only
|
|
- **No Docker** — n97 is a low-power NucBoxG5, keep it lean
|
|
- **Forgejo API** is local at `192.168.168.221:3000` — proxied through Next.js API routes
|
|
- **Vault access** is direct filesystem reads from `~/vault/` — no database needed
|
|
- **Port 3001** to avoid conflict with Forgejo on port 3000
|
|
|
|
## Future Improvements
|
|
|
|
- [ ] Full D3.js graph visualization for vault wiki-links
|
|
- [ ] nginx reverse proxy with HTTPS (Let's Encrypt)
|
|
- [ ] Authentication (basic auth or OAuth proxy)
|
|
- [ ] Forgejo webhook integration (auto-refresh on push)
|
|
- [ ] Real-time agent status via WebSocket
|
|
- [ ] Zettel editing and creation from the UI
|
|
- [ ] OpenClaw Gateway integration for session management
|