devuniverse-mcp
# π devuniverse-mcp
**An autonomous virtual software agency, packaged as an MCP server.**
Point any MCP client (Claude Code, Claude Desktop, Cursor, β¦) at `devuniverse-mcp`,
describe a product, and a bench of **27 senior engineering personas** convenes:
they parse your requirements, propose stacks, debate each other, vote, record
dissents, generate a production-grade scaffold β Flutter app with an immersive
3D deep-scroll canvas, Supabase/Firebase/Node backend with Row Level Security,
multi-stage Dockerfiles, CI, Terms of Service and a GDPR/CCPA Privacy Policy β
then **cross-examine every generated artifact** before presenting it, with the
full meeting transcript on disk.
```
init_dev_universe(
project_type: "flutter_spatial_app",
description: "A 3D deep-scroll galaxy shop called 'Aurora Atelier' with
glTF product meshes, accounts, offline mode, and Stripe
subscriptions β GDPR matters. Glassmorphism, dark.",
use_omnicinema: true
)
β projects/aurora-atelier/ (50+ files, 10 debated decisions, transcript, audit)
```
---
## Table of contents
- [How it works](#how-it-works)
- [The senior bench (27 personas)](#the-senior-bench)
- [Quick start](#quick-start)
- [Tool reference](#tool-reference)
- [The immersive 3D Flutter canvas](#the-immersive-3d-flutter-canvas)
- [Material verification & adaptation engine](#material-verification--adaptation-engine)
- [OmniCinema companion bridge (IPC)](#omnicinema-companion-bridge)
- [Design-to-Figma pipeline & reference ingestion](#design-to-figma-pipeline--reference-ingestion)
- [Legal & compliance framework](#legal--compliance-framework)
- [Extension marketplace (human-in-the-loop)](#extension-marketplace)
- [Storage guarantees](#storage-guarantees)
- [Development](#development)
- [Design honesty notes](#design-honesty-notes)
---
## How it works
```mermaid
flowchart LR
A[init_dev_universe] --> B[Signal parsing<br/>3d Β· offline Β· payments Β· tenants Β· gdprβ¦]
B --> C[Roundtable<br/>proposals β objections β mitigations β votes]
C --> D[Rulings + ADRs<br/>dissents recorded]
D --> E[Design synthesis<br/>aesthetic blend β tokens]
E --> F[Scaffold assembly<br/>app Β· backend Β· RLS Β· Docker Β· CI Β· legal docs]
F --> G[Cross-examination<br/>RLS/FK/a11y/secrets/legal checks,<br/>auto-fixes recorded]
G --> H[Write to projects/<slug><br/>+ MEETING_TRANSCRIPT.md]
H --> I[Wireframes + Figma plugin]
H --> J[Compliance audit report]
H --> K[Asset watcher armed]
```
Every phase is **deterministic**: the debate is driven by a stance table
(who champions what, when, how strongly, and who objects with which argument),
scored against the parsed requirement signals. Same brief in, same rulings out β
reproducible, diffable, and covered by tests.
What lands in `projects/<slug>/`:
| Artifact | Contents |
|---|---|
| `MEETING_TRANSCRIPT.md` | Full debate: proposals, objections, responses, votes, rulings, dissents, artifact review table |
| `docs/adr/*.md` | One ADR per decision with options, scores, champions, and recorded dissent |
| `app/` | Flutter app: theme tokens, spatial module (if 3D), widget tests, analysis options |
| `backend/` | Supabase migrations + RLS policies + storage policies, or Firebase rules; optional Fastify service with multi-stage Dockerfile |
| `design/` | `DESIGN_LANGUAGE.md`, `design-tokens.json`, SVG wireframes, generated Figma plugin |
| `compliance/` | Privacy Policy, Terms of Service, store checklist, audit report |
| `.github/workflows/ci.yml`, `docs/ENV_ROUTING.md`, `.env.example` | Delivery + secret-routing discipline |
## The senior bench
27 codified senior personas across six practices β run `get_agency_roster` for the full table.
| Practice | Personas |
|---|---|
| **Multi-framework specialists** | Principal Systems Architect Β· Principal Flutter Architect Β· Flutter Platform Engineer Β· Supabase/Postgres Architect Β· Firebase Specialist Β· Node.js Backend Architect Β· API Contract Engineer |
| **UI/UX synthesis** | Principal UX Engineer Β· Design Synthesis Director Β· Spatial Canvas UI Engineer Β· 3D Navigation Designer Β· Accessibility Lead |
| **Legal & compliance** | Privacy & Data Protection Counsel (GDPR/CCPA) Β· App Store & Licensing Compliance Officer |
| **3D & animation** | 3D Modeler / glTF Pipeline Engineer Β· Technical Animator (Rive) |
| **Database** | Principal Data Modeler Β· RLS & Data Security Engineer |
| **DevSecOps & delivery** | Principal DevSecOps Engineer Β· Container & Isolation Specialist Β· CI/CD Release Engineer Β· SRE Β· QA Architect Β· Performance Engineer Β· Red-Team Reviewer Β· DX Engineer Β· Delivery Lead (chair) |
They genuinely disagree. A payments brief makes the Node architect win a service
layer over the SRE's objection; the Flutter platform engineer kills `three_dart`
on maintenance grounds every time; the accessibility lead's sign-off condition
(reduced-motion flat fallback) is enforced by a cross-exam check against the
actual generated Dart.
## Quick start
```bash
# The canonical home for this tool and everything it generates:
git clone https://github.com/<you>/devuniverse-mcp.git /Volumes/PortableSSD/devuniverse-mcp
cd /Volumes/PortableSSD/devuniverse-mcp
npm install
npm run build
npm test && npm run smoke # 22 tests + a real stdio round-trip
```
> Running from a different path? Set `DEVUNIVERSE_ROOT` β every read and write
> stays inside that root.
**Claude Code**
```bash
claude mcp add devuniverse -- node /Volumes/PortableSSD/devuniverse-mcp/dist/index.js
```
**Claude Desktop / Cursor** (`claude_desktop_config.json` / `mcp.json`)
```json
{
"mcpServers": {
"devuniverse": {
"command": "node",
"args": ["/Volumes/PortableSSD/devuniverse-mcp/dist/index.js"],
"env": { "OMNICINEMA_REPO_URL": "https://github.com/<owner>/omnicinema-mcp" }
}
}
}
```
Then, in your client: *"Use init_dev_universe to build a 3D portfolio universe
with offline mode and a contact form, dark editorial style."*
## Tool reference
| Tool | What it does |
|---|---|
| `init_dev_universe` | **The unified entry point.** `project_type` (`flutter_app` Β· `flutter_spatial_app` Β· `full_stack` Β· `backend_api` Β· `three_d_experience` Β· `custom`), `description`, `use_omnicinema`, optional `style_preferences[]`. Runs the whole pipeline above. |
| `get_agency_roster` | The 27 seniors: names, titles, focus, principles. |
| `generate_spatial_module` | Emit the deep-scroll 3D Flutter module standalone or into an existing project (`mesh_renderer`, `rive`, `depth_layers`). |
| `verify_assets` | Analyze art in the drop zones and re-derive the theme (report + WCAG checks). |
| `watch_assets` | Start/stop the drop-zone watcher; omit `project_dir` to list watchers. |
| `omnicinema_status` | Detect the companion, check loopback IPC health, report CASE A/B/C. |
| `provision_omnicinema` | CASE C: consent-gated clone β install β build β start IPC β token sync. |
| `generate_media_asset` | CASE A: request image/texture/audio/video from the companion; provenance manifest + auto-adaptation. |
| `sync_figma` | Compile wireframes (SVG), generate the Figma import plugin, optional REST handoff comment (`figma_file_key`, `FIGMA_TOKEN`). |
| `ingest_reference` | Pattern-analyze a URL or local video you provide; optional `apply_theme` blends its palette into the tokens. |
| `scan_extension_marketplace` | Crawl GitHub/Hugging Face for new MCP servers β `data/dev-review-queue.json` (pending human review, risk-flagged). |
| `generate_compliance_docs` | (Re)generate Terms/Privacy/store checklist for a project, with overrides (`company_name`, `contact_email`, `governing_law`). |
| `audit_compliance` | Static liability scan β `compliance/AUDIT_REPORT.md` (fails on high severity). |
## The immersive 3D Flutter canvas
`src/spatial/` is a code-generation skill producing a hand-owned deep-scroll
core β **scrolling dollies a camera along the Z axis**:
- `DeepScrollController` β maps scroll offset β camera depth with capped travel
velocity and snap-point rooms ("seatbelts for spatial scrolling").
- `SpatialCamera` + `ParallaxLayer` β `Matrix4` perspective transforms
(`setEntry(3,2,β¦)`), per-layer parallax factors, depth-fade curves.
- `StarfieldPainter` β seeded `CustomPainter` behind a `RepaintBoundary`,
`shouldRepaint` keyed on camera depth (the performance engineer's 16 ms budget).
- `SpatialRoom`s β content stations strung through Z with wayfinding rail.
- **Accessibility contract:** when `MediaQuery.disableAnimations` is set the
entire Z-axis experience collapses to a flat, semantic, screen-reader-navigable
list. This is checked against the generated Dart, not just promised.
- Optional mesh stage: `flutter_scene` (glTF/Impeller, wrapped behind a
`GltfStage` seam) or `flutter_cube` (lightweight OBJ). `three_dart` is debated
and rejected on maintenance grounds β you'll find the argument in the ADR.
- Optional `rive` HUD overlay driven by a state machine.
## Material verification & adaptation engine
Drop any image into `app/assets/incoming/` (watched) or call `verify_assets`:
1. **Verify** β format sniffing (PNG/JPEG/GIF/WebP/BMP/SVG), header dimensions,
and for PNGs a full dependency-free decode (zlib inflate + unfilter) with
palette clustering.
2. **Adapt** β deterministic rules re-derive the design tokens: theme brightness
from hero luminance, primary from the most saturated dominant cluster
(contrast-nudged to β₯3:1), secondary from the next distinct hue, padding grid
from hero aspect, radius from saturation. Every rule is written into
`docs/ADAPTATION_REPORT.md` with WCAG verification.
3. **Apply** β `design-tokens.json` and the marker-delimited block in
`app/lib/theme/design_tokens.dart` are patched atomically.
## OmniCinema companion bridge
`src/bridge/omnicinema-connector.ts` links the optional local media generator
for cinematic assets. Detection looks at `/Volumes/PortableSSD/autonomous-cinema-mcp`,
`/Volumes/PortableSSD/omnicinema-mcp` (override: `OMNICINEMA_PATHS`).
| Case | State | Behavior |
|---|---|---|
| **A** | Installed & IPC healthy | `generate_media_asset` talks to `http://127.0.0.1:8787` (bearer token from the companion's `data/ipc-token.txt`), saves into `app/assets/generated/` with a provenance manifest, re-adapts the theme. |
| **B** | Not found | You get: `β οΈ OmniCinema asset generator not detected. The asset maker repository can be found here: <OMNICINEMA_REPO_URL>` |
| **C** | Not found + your consent | `Would you like devuniverse-mcp to automatically clone, install dependencies, and link OmniCinema-MCP for 100% free cinematic assets? [y/N]` β answered interactively (MCP elicitation) or via `provision_omnicinema confirm:true`. Then: `git clone` β `npm install` β `npm run build` β start the IPC service (detached, logged to `data/logs/`) β sync the token. |
Security model (see `SECURITY.md`): provisioning **refuses unpinned URLs**
(`OMNICINEMA_REPO_URL` must be a concrete `https://github.com/<owner>/<repo>`),
consent is explicit and recorded, the bridge follows only same-origin asset
URLs, and every IPC request is logged β a public tool that talks to another
local process should never do so silently.
## Design-to-Figma pipeline & reference ingestion
**To Figma.** The Figma REST API cannot create or edit design content (it reads
files, writes comments/webhooks). So `sync_figma` produces what actually lands
an editable draft:
1. **SVG wireframes** per screen (screen plan derived from your signals: spatial
journey, auth, explore, messages, checkout, settingsβ¦) β drag into any file;
2. a **generated Figma development plugin** (`design/figma-plugin/`) that
rebuilds every screen as native auto-layout frames using your tokens β import
via *Plugins β Development β Import plugin from manifest*, edit freely, then
hand changes back through tokens or the asset drop zone;
3. an optional **REST handoff**: token-validated comment on your Figma file
linking the draft materials (`FIGMA_TOKEN`).
**From references.** `ingest_reference` accepts a URL or a local video that
demonstrates an interaction you want:
- URLs: single-page read (+ same-origin CSS, size-capped, honest User-Agent) β
palette, typography, framework fingerprint (three.js, GSAP/ScrollTrigger,
React/Vue/Next, WebGL, Rive/Lottieβ¦), interaction mechanics (scroll-snap,
IntersectionObserver, 3D transforms, reduced-motion handling), structure and
a11y signals β plus a **rebuild plan mapped onto devuniverse modules**.
- Videos: `ffprobe`/`ffmpeg` (when installed) extract metadata + keyframes with
per-scene palettes into `references/<slug>/frames/`.
- `apply_theme: true` blends the extracted palette into your tokens via the
synthesis engine.
**IP stance, stated plainly:** reconstruction is *pattern-level* β interaction
mechanics and structure are re-derived natively; protected artwork, copy, and
trade dress are never copied, and the note ships inside every analysis report.
Likewise, the aesthetic library is curated and license-clean: devuniverse does
**not** crawl Dribbble/Behance (their ToS prohibit scraping); you steer the
blend with `style_preferences` and references you have the right to study.
## Legal & compliance framework
The legal bench generates, per project:
- **Privacy Policy** β GDPR (lawful-basis + retention table per actual data
category, Arts. 15β22 rights, 72-hour breach window, transfers/SCCs) and
CCPA/CPRA (know/delete/correct/opt-out, "we do not sell or share"), COPPA
section when the brief targets children, in-app account deletion per Apple
5.1.1(v) / Play policy.
- **Terms of Service** β license, acceptable use, UGC, IP, subscriptions/IAP
language matched to the detected monetization, liability caps, governing law.
- **Store compliance checklist** β Apple privacy labels & IAP rules, Play data
safety & billing, web consent banners β only the rows your build triggers.
- **Active code audit** (`audit_compliance`, also run at init) β committed
credentials, plaintext endpoints, undisclosed tracker SDKs, sensitive
permissions, missing policies β severity-ranked report with remediations.
- Cross-exam gates: privacy counsel verifies the docs cover what the signals
imply; the RLS engineer auto-fixes any table created without
`enable row level security` and records the fix in the transcript.
> **The honest version of "zero compliance liabilities":** generated documents
> are structured drafts with a mandatory review-by-counsel banner, and the audit
> reports residual risk. No tool can guarantee legal outcomes β this one refuses
> to pretend otherwise.
## Extension marketplace
`scan_extension_marketplace` discovers newly published MCP servers and dev
packages (GitHub search + Hugging Face spaces/models) and logs them to
`data/dev-review-queue.json` as `pending_human_review`, with risk flags
(`missing-license`, `low-adoption`, `suspicious-description`,
`pipe-to-shell-install`, `archived`). **Nothing is ever auto-installed**; flip
entries to `approved`/`rejected` and your decisions survive re-scans.
## Storage guarantees
Everything lives under one portable root (default
`/Volumes/PortableSSD/devuniverse-mcp`, override `DEVUNIVERSE_ROOT`):
```
devuniverse-mcp/
βββ src/ server source (agency Β· spatial Β· bridge Β· compliance Β· design Β· marketplace)
βββ dist/ build output (gitignored)
βββ projects/ generated project environments (gitignored β each becomes its own repo)
βββ data/
β βββ dev-review-queue.json marketplace review queue (committed)
β βββ omnicinema-link.json companion link record (chmod 600, gitignored)
β βββ logs/ detached-process logs (gitignored)
βββ test/ scripts/ docs
```
A storage guard wraps every write: paths must resolve inside the managed root,
or the call throws. The only sanctioned writes outside it are the OmniCinema
install directory you explicitly consent to.
## Development
```bash
npm run typecheck # strict TS across src/test/scripts
npm run build # tsc β dist/
npm test # node:test suite (roundtable, scaffold, PNG decode, bridges, crawler, legal)
npm run smoke # boots dist/index.js over real stdio and calls tools
npm run dev # tsx src/index.ts
```
PRs welcome β new personas need a stance (when do they speak, what do they
champion or object to, with what score) plus a test proving the debate stays
deterministic.
## Design honesty notes
- **Personas are codified expert heuristics**, not 27 live LLMs: stance tables,
scoring rules, and critique conditions driven by your requirement signals.
That's what makes the debates reproducible, testable, and free to run. The
transcript says so in its footer.
- **The bridge is transparent by design.** The original brief for CASE A said
"silently query" β this implementation logs every companion request instead,
because a published tool talking to another local process must be auditable.
- **Figma REST can't author designs**, so the pipeline generates a plugin +
SVGs rather than pretending otherwise.
## License
[MIT](LICENSE) β see also [SECURITY.md](SECURITY.md).
TDQS
Scored across 13 tools
Tools are mostly distinct, but audit_compliance and generate_compliance_docs both relate to compliance, which could cause confusion. Similarly, verify_assets and watch_assets are related, though the latter extends the former.
All tool names follow a consistent verb_noun pattern with snake_case, e.g., audit_compliance, generate_media_asset, provision_omnicinema. No mixing of conventions.
With 13 tools covering project init, compliance, asset generation, media integration, Figma sync, and more, the count is well-scoped for the domain of a development universe assistant.
The tool surface covers core workflows (init, compliance, asset generation, verification), but lacks tools for updating or deleting projects and generated artifacts, which are minor gaps.