The product dashboard for oto-mcp — account management, connectors, organizations,
groups, doctrines and memory. It is the successor to the legacy oto-app/account/
SPA (ADR 0007),
served at dashboard.oto.ninja.
There is no backend in this repo. The dashboard's backend is
oto-mcp: the front talks to its REST API
(https://mcp.oto.ninja/api/*) with a Logto (ES384) JWT and holds no secrets of its own.
- Vue 3 + Vite + TypeScript (
frontend/), dev port 5192 - shadcn-vue (reka base, vega style, stone) + Tailwind CSS v4
- Otomata "Manuscrit chaud" design tokens in pure CSS — no
@otomata/uidependency. SeeDESIGN.mdfor the console design system. - Auth:
@logto/browser(PKCE) viasrc/composables/useAuth.ts - API:
src/api.ts— authenticated fetch againstVITE_OTO_MCP_BASE
frontend/src/views/console/ holds the console screens, grouped in the nav:
- Overview / Connectors / Connector library — connect credentials, browse the catalogue.
- Organizations & groups — orgs, departments with a team lead, shared secrets, toolset presets and doctrine.
- Memory — datastore (native PG tabular storage) and knowledge (org Documents).
- Doctrine library — marketplace of public doctrines (fork / publish).
The topbar carries an MCP identity badge (account × active org) showing which identity Claude acts under when it calls tools.
cd frontend && npm install
npm run dev # Vite dev server on port 5192
npm run build # vue-tsc + vite build → frontend/dist.env: copy frontend/.env.example. VITE_LOGTO_APP_ID is a pre-created Logto SPA
client (no DCR) with redirects https://<domain>/callback + http://localhost:5192/callback.
Skeleton validated (Logto login + GET /api/me); features from the old account/ SPA are
being migrated screen by screen. The legacy SPA stays in production until cutover.
See CLAUDE.md for dev orientation and conventions, and the oto-mcp
docs/rest-api.md
for the API contracts.