Skip to main content
Glama
Alemusica

UI Canvas MCP

by Alemusica

jsOM ๐ŸŽจ

License: Source Available GitHub stars GitHub Sponsors

jsOM - The Definitive Designer Platform, LLM Friendly

Draw UI visually โ†’ Export precise JSON specs โ†’ Any LLM generates production code. The bridge between human creativity and AI code generation.


โš–๏ธ LICENSE CHANGE NOTICE

IMPORTANT: As of January 28, 2026, jsOM is licensed under a Source-Available License.

Version

License

Status

โ‰ค v1.4.0-beta (tag: v1.4.0-beta-MIT-LAST)

MIT

โš ๏ธ DEPRECATED - No updates, no support

โ‰ฅ v1.5.0

Source-Available

โœ… ACTIVE - All new features here

โš ๏ธ MIT Versions Are DEPRECATED

The MIT version (v1.4.0-beta and earlier) is officially deprecated:

  • โŒ No security updates

  • โŒ No bug fixes

  • โŒ No new features

  • โŒ No support

  • โŒ Architecturally diverging (incompatible soon)

Using the MIT fork = Using abandonware.

๐Ÿ“‹ Read the Ethics Statement

127 people cloned jsOM under MIT.

If you're one of them: Read MIT-ETHICS.md

TL;DR: You have legal rights. But parasitizing a solo dev's work for commercial gain is morally bankrupt and the community will know.

For Users of Pre-v1.5.0 (MIT versions)

If you downloaded jsOM under MIT before Jan 28, 2026:

โœ… Legitimate Use (learning, internal tools, contributions):

  • You're fine, keep learning!

โš ๏ธ Commercial Use (competitor products, SaaS, rebrand):

โŒ Parasitic Use (silent competitor, zero attribution):

  • See MIT-ETHICS.md

  • Your fork will be listed publicly

  • Community judgment is permanent

Note: v1.6.0+ will use AGPL-licensed dependencies, making MIT forks legally incompatible with new code.

Branches

Branch

Status

Description

master

Main

Stable release, production-ready

core

Dev

Development branch

feature/*

Experimental

Feature development branches


๐Ÿ’– Support This Project

If jsOM helps your workflow, consider supporting its development:

Sponsor Tiers

Tier

Perks

โ˜• Supporter (โ‚ฌ5/mo)

Name in README, Discord access

๐Ÿš€ Builder (โ‚ฌ10/mo)

Early access to features, priority support

๐Ÿ’Ž Patron (โ‚ฌ25/mo)

30min monthly consulting, feature requests


๐ŸŽฏ What is this?

UI Canvas MCP is a visual design tool that:

  1. Lets you draw UI visually - Like Figma/Keynote, with rectangles, text, buttons, etc.

  2. AI understands your design - Multi-agent pipeline analyzes layout, style, hierarchy

  3. Generates precise specs - Export universal format any LLM can understand

  4. MCP integration - AI agents can read and manipulate your designs

The key insight: Your drawing is the source of truth. AI doesn't guess layouts - it uses YOUR precise design.


๐Ÿ†• What's New (v1.4.0-beta - Jan 2026)

Fan Pivot - Gestural Fan Arrangement

  • Keychain Metaphor - Arrange elements like keys on a keychain, pinned at a pivot point

  • Click & Drag - Click to place pivot, drag to control spread and rotation

  • Progressive Rotation - Each element rotates more than the previous for natural fan effect

  • Physics Settling - Elements settle with inertia after gesture release

  • Polar Control - Angle controls rotation, distance controls spread

  • Access via ๐ŸŒ€ Fan icon in toolbar (requires 2+ selected elements)

PDD - Physics Driven Design (World Paradigm)

  • Enter the World - Instead of "simulate", you step into a physics environment

  • Spring Constraints - Connect elements with elastic springs (Soft, Medium, Stiff, Bouncy presets)

  • Real-time Physics - 60fps simulation via Konva direct manipulation

  • Tension Visualization - See constraint forces in real-time

  • Commit on Exit - Leave the world to commit final positions

  • Access via โš›๏ธ Atom icon in toolbar

Rotation Curve System (Beta)

  • Intelligent Rotation Distribution - Apply easing curves to control rotation across multiple elements

  • Preset Curves - Linear, Ease In/Out, Logarithmic, Exponential

  • Freehand Mode - Draw custom curves directly on canvas

  • Real-time Preview - See rotation changes as you draw

  • Keyboard Controls - Enter to confirm, ESC to cancel

TIP Lite Architecture

  • Layered Code Structure - archetipi (pure math) โ†’ molecole (domain rules) โ†’ organismi (orchestration)

  • World Paradigm - Enter/exit instead of start/stop for immersive interactions

  • Applied to Fan Pivot and PDD modules


What's New (v1.3.0 - Jan 2026)

UILayoutSpec v1.1 (LLM-Optimized Export)

  • Direct LLM Instructions - llmContext field with code generation guidance

  • Dual Type System - Both type (raw) and semanticType (inferred) for transparency

  • Token Optimization - Stripped default values based on fig2json research

  • Research-Backed - Based on Addy Osmani's LLM workflow best practices

Precise Mode & Snap Grid

  • Shift+Drag - DAW/synth-style fine movement (1/10 precision)

  • Alt+Drag - Temporary grid snapping (Apple Keynote-style)

  • Live Overlay - Coordinates display near cursor during precise mode

Typography Harmonization System

  • Font Database - 15+ fonts with classification metadata

  • Brand Archetypes - clean, classy, friendly, quirky, techie

  • Compatibility Scores - Algorithmic pairing analysis

  • Type Scales - Mobile, desktop, editorial presets

Test Suite & Code Quality

  • Vitest - 26 unit tests for canvasStore

  • DOMPurify - XSS prevention for user input

  • Quadtree - O(log n) marquee selection

  • Scoped Logging - Environment-aware debug utilities


๐Ÿ“œ Previous Updates (v1.2.0)

Blender-Style Smooth Zoom

  • Exponential Scaling - Perceptually linear zoom using Math.pow(2, -deltaY * ZOOM_SENSITIVITY)

  • Trackpad Friendly - No more "shooting off" with two-finger zoom gestures

  • Consistent Feel - Same zoom behavior regardless of scroll speed

  • Wide Range - 0.1x to 10x zoom levels

TOON Export Format

  • 40% Fewer Tokens - Optimized notation for LLM context windows

  • Tabular Format - Elements, events, voice notes in compact tables

  • Element Markers - Voice notes reference elements with @id syntax

  • Export Integration - Available alongside JSON, YAML, Markdown in Export Panel

Extended Device Support

  • 24+ Device Presets - iPhone 16 Pro/Max, Pixel 9, Samsung S24, iPad Air, Galaxy Tab S9, MacBook Pro 14", iMac 24", and more

  • Device-Aware Blueprints - Automatically scale UI elements based on device type (mobile/tablet/desktop)

  • Modern Devices - Latest 2024-2025 device dimensions

Semantic Layers System

  • HTML Structure Organization - Organize elements into semantic sections (navigation, header, hero, footer, etc.)

  • Dual View Mode - Toggle between Classic (z-index) and Semantic (hierarchy) views

  • Quick Assign - One-click element assignment to sections

  • CSS Hints - Each section includes layout hints (flexbox, grid, positioning)

Multi-LLM Support

  • Gemini 2.0 Flash - Use Google's latest model for faster, smarter generation

  • Ollama Integration - Local models with qwen2.5:7b and minicpm-v

  • Provider Switching - Easily switch between cloud (Gemini) and local (Ollama)

Style Blueprints

  • 9 Complete Design Systems - Bauhaus, Swiss, Glassmorphism, Brutalist, Material, Neomorphism, Retro80s, Japanese, Minimal

  • 6 UI Component Blueprints - Hero, Navbar, Landing Page, Dashboard, Product Card, Profile

  • LLM-Optimized - Each blueprint includes compositional rules, color palettes, and element specs

  • Device-Aware Scaling - Blueprints adapt to mobile/tablet/desktop automatically

  • Semantic Integration - Blueprints map to semantic sections automatically

Multi-Agent AI Pipeline

  • LangGraph Integration - Stateful agent orchestration with conditional routing

  • Smart Mode - One-click AI generation with vision analysis

  • Knowledge Base - Design intelligence powered by SurrealDB

  • PHI Algorithms - Golden ratio layouts, spacing, and color harmony

Enhanced Canvas

  • Marquee Selection - Drag to select multiple elements

  • Voice Notes - Record and transcribe design notes (Whisper support)

  • Storyboard Recording - Track element movements for animations


๐Ÿ—๏ธ Architecture

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                        UI Canvas MCP                                 โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚                                                                      โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”   โ”‚
โ”‚  โ”‚   Canvas     โ”‚    โ”‚         Multi-Agent Pipeline            โ”‚   โ”‚
โ”‚  โ”‚   Editor     โ”‚    โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”   โ”‚   โ”‚
โ”‚  โ”‚  (React +    โ”‚โ”€โ”€โ”€โ–ถโ”‚  โ”‚        SimpleOrchestrator       โ”‚   โ”‚   โ”‚
โ”‚  โ”‚   Konva)     โ”‚    โ”‚  โ”‚   (Browser-compatible runner)   โ”‚   โ”‚   โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜    โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜   โ”‚   โ”‚
โ”‚         โ”‚            โ”‚              โ”‚                          โ”‚   โ”‚
โ”‚         โ”‚            โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”             โ”‚   โ”‚
โ”‚         โ–ผ            โ”‚  โ”‚     RouterAgent       โ”‚             โ”‚   โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”‚  โ”‚  (Intent detection)   โ”‚             โ”‚   โ”‚
โ”‚  โ”‚  Properties  โ”‚    โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜             โ”‚   โ”‚
โ”‚  โ”‚    Panel     โ”‚    โ”‚              โ”‚                          โ”‚   โ”‚
โ”‚  โ”‚  + Notes     โ”‚    โ”‚      โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”                 โ”‚   โ”‚
โ”‚  โ”‚  + Voice     โ”‚    โ”‚      โ–ผ               โ–ผ                 โ”‚   โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜    โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”          โ”‚   โ”‚
โ”‚                      โ”‚  โ”‚ Vision โ”‚    โ”‚  Prompt   โ”‚          โ”‚   โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”‚  โ”‚ Agent  โ”‚    โ”‚ Engineer  โ”‚          โ”‚   โ”‚
โ”‚  โ”‚   Toolbar    โ”‚    โ”‚  โ”‚minicpm โ”‚    โ”‚  Agent    โ”‚          โ”‚   โ”‚
โ”‚  โ”‚  + PHI       โ”‚    โ”‚  โ””โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”˜    โ””โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”˜          โ”‚   โ”‚
โ”‚  โ”‚  Algorithms  โ”‚    โ”‚       โ”‚              โ”‚                 โ”‚   โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜    โ”‚       โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜                 โ”‚   โ”‚
โ”‚                      โ”‚              โ–ผ                          โ”‚   โ”‚
โ”‚                      โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”                 โ”‚   โ”‚
โ”‚                      โ”‚  โ”‚  ExecutorAgent    โ”‚                 โ”‚   โ”‚
โ”‚                      โ”‚  โ”‚ (Grid + Collision โ”‚                 โ”‚   โ”‚
โ”‚                      โ”‚  โ”‚   + Z-Index)      โ”‚                 โ”‚   โ”‚
โ”‚                      โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜                 โ”‚   โ”‚
โ”‚                      โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜   โ”‚
โ”‚                                     โ”‚                              โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”              โ”‚
โ”‚  โ”‚  MCP Server  โ”‚โ—€โ”€โ”€โ–ถโ”‚       Knowledge Base        โ”‚              โ”‚
โ”‚  โ”‚  (stdio)     โ”‚    โ”‚  - Style Systems            โ”‚              โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜    โ”‚  - Layout Patterns          โ”‚              โ”‚
โ”‚                      โ”‚  - Component Patterns       โ”‚              โ”‚
โ”‚                      โ”‚  - Design Rules             โ”‚              โ”‚
โ”‚                      โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜              โ”‚
โ”‚                                     โ”‚                              โ”‚
โ”‚                      โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”              โ”‚
โ”‚                      โ”‚         SurrealDB           โ”‚              โ”‚
โ”‚                      โ”‚   (Projects + Elements)     โ”‚              โ”‚
โ”‚                      โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜              โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐Ÿค– Multi-Agent System

Agent Pipeline

Agent

Model

Role

RouterAgent

qwen2.5:7b

Classifies intent (create/modify/vision)

VisionAgent

minicpm-v

Analyzes screenshots, extracts UI elements

PromptEngineerAgent

qwen2.5:7b

Transforms requests into design specs

ExecutorAgent

qwen2.5:7b

Generates canvas elements with positioning

Smart Mode Features

// Enable Smart Mode in LLMPanel
const orchestrator = new SimpleOrchestrator({ model: 'qwen2.5:7b' });

const result = await orchestrator.generate(prompt, device, {
  screenshot: imageData,           // Optional: analyze existing UI
  existingElements: elements,      // Context for modifications
  visionModel: 'minicpm-v',       // Vision model for screenshots
  onProgress: (step, progress) => console.log(step, progress),
});

LangGraph Workflow (Server-side)

import { UIGenerationGraph } from './orchestration';

const graph = new UIGenerationGraph();
const result = await graph.invoke({
  userPrompt: "Create a login form with email and password",
  device: { name: 'iPhone 14', width: 390, height: 844 },
  screenshot: base64Image,  // Optional
});

๐Ÿง  Knowledge Base

The Knowledge Base provides design intelligence to agents:

Style Systems

  • Swiss International - Bold typography, grid-based, minimal color

  • Material Design - Card-based, shadows, 8dp grid

  • Glassmorphism - Frosted glass, transparency, soft shadows

  • Brutalist - Raw, monospace, harsh borders

  • Japanese Minimalism - Extreme whitespace, earth tones

Layout Patterns

  • Hero Section - Full-width header with CTA

  • Dashboard - Grid-based cards and metrics

  • Form Layout - Labeled inputs with validation

Design Rules

  • Spacing guidelines (8px base, PHI scale)

  • Typography hierarchy

  • Color accessibility (WCAG AA)

  • Responsive breakpoints


๐ŸŒ€ PHI (Golden Ratio) Algorithms

Built-in golden ratio utilities for harmonious designs:

import {
  phiSpacing,        // PHI-based spacing scale
  phiColorScale,     // Golden angle color harmony
  phiLayerPalette,   // Layer-aware color palette
  phiGridLayout,     // Golden rectangle grid
  sunflowerPattern,  // Vogel spiral arrangement
  ensureContrast,    // WCAG contrast checking
} from './shared/phi';

// Generate PHI spacing: 16, 26, 42, 68, 110...
const spacing = phiSpacingScale(16, 5);

// Generate harmonious colors using golden angle
const colors = phiColorScale(210, 5); // 5 colors from blue

// Layer-aware palette for UI hierarchy
const palette = phiLayerPalette(220, true); // Dark theme
// { background, surface, content, interactive, overlay }

Toolbar Actions

  • PHI Spacing - Harmonize element spacing

  • PHI Colors - Apply golden angle color distribution

  • PHI Spiral - Arrange elements in Fibonacci spiral

  • Sunflower Pattern - Vogel spiral arrangement

  • PHI Sizes - Scale elements using golden ratio


๐Ÿš€ Quick Start

1. Install dependencies

git clone https://github.com/Alemusica/jsom.git
cd jsom
npm install

2. Start SurrealDB

surreal start --user root --pass root file:./data/ui-canvas.db

3. Configure LLM Provider

Option A: Ollama (Local)

# Text generation model
ollama pull qwen2.5:7b

# Vision model for screenshot analysis
ollama pull minicpm-v

Option B: Gemini 2.0 Flash (Cloud)

# Set your Gemini API key
export VITE_GEMINI_API_KEY=your_api_key_here

4. Run the app

npm run dev

Open http://localhost:5173


โ˜๏ธ Vercel Deployment

Deploy the canvas app to Vercel:

1. Install Vercel CLI

npm i -g vercel

2. Configure Environment

Create .env.production:

VITE_GEMINI_API_KEY=your_gemini_api_key
VITE_DEFAULT_PROVIDER=gemini

3. Deploy

vercel --prod

Note: Vercel deployment runs the canvas app only (client-side). For full MCP server functionality, deploy to a Node.js-compatible platform.


๐Ÿ“ฆ Project Structure

jsom/
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ canvas/
โ”‚   โ”‚   โ”œโ”€โ”€ components/
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ CanvasStage.tsx    # Konva canvas with marquee
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ Toolbar.tsx        # Tools + PHI buttons
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ PropertiesPanel.tsx # Element properties
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ NotesPanel.tsx     # Voice notes + transcription
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ LLMPanel.tsx       # Smart Mode UI
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ HelpPanel.tsx      # In-app manual
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ FisicaPanel.tsx    # Physics controls
โ”‚   โ”‚   โ”œโ”€โ”€ fan-pivot/             # Fan Pivot (TIP Lite)
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ archetipi.ts       # Pure math functions
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ molecole.ts        # Domain rules
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ FanPivotWorld.ts   # World orchestration
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ useFanPivot.ts     # React hook
โ”‚   โ”‚   โ”œโ”€โ”€ pdd/                   # Physics Driven Design
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ world/             # World paradigm
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ constraints/       # Spring, rope, rigid
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ usePDDWorld.ts     # React hook
โ”‚   โ”‚   โ”œโ”€โ”€ services/
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ agents/            # Multi-agent system
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ BaseAgent.ts
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ RouterAgent.ts
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ VisionAgent.ts
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ PromptEngineerAgent.ts
โ”‚   โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ ExecutorAgent.ts
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ orchestration/     # LangGraph + SimpleOrchestrator
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ UIGenerationGraph.ts
โ”‚   โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ SimpleOrchestrator.ts
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ knowledge/         # Design Knowledge Base
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ DesignKnowledgeBase.ts
โ”‚   โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ types.ts
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ llm.ts             # Ollama integration
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ toon/              # TOON format encoder
โ”‚   โ”‚   โ””โ”€โ”€ store/
โ”‚   โ”‚       โ”œโ”€โ”€ canvasStore.ts     # Zustand state
โ”‚   โ”‚       โ””โ”€โ”€ storyboardStore.ts # Animation recording
โ”‚   โ”œโ”€โ”€ mcp-server/
โ”‚   โ”‚   โ”œโ”€โ”€ index.ts               # MCP Server entry
โ”‚   โ”‚   โ””โ”€โ”€ storage.ts             # SurrealDB integration
โ”‚   โ””โ”€โ”€ shared/
โ”‚       โ”œโ”€โ”€ types.ts               # Shared types
โ”‚       โ””โ”€โ”€ phi.ts                 # Golden ratio utilities
โ”œโ”€โ”€ docs/
โ”‚   โ””โ”€โ”€ assets/                    # Screenshots and demos
โ”œโ”€โ”€ LICENSE                        # MIT License
โ””โ”€โ”€ README.md

๐ŸŽฎ Keyboard Shortcuts

Key

Action

V

Select tool

R

Rectangle

T

Text

C

Circle

L

Line

P

Path/Bezier

I

Image

B

Button

N

Input

Delete/Backspace

Delete selected

โŒ˜D

Duplicate

โŒ˜โ‡งD

Duplicate x5 with offset

โŒ˜Z

Undo

โŒ˜โ‡งZ

Redo

โŒ˜โ‡งH

Distribute horizontal

โŒ˜โ‡งJ

Distribute vertical

โŒ˜โ‡งG

Distribute grid

โŒ˜โ‡งR

Progressive rotation

Scroll

Zoom (Blender-style smooth)

Shift+Scroll

Pan canvas

F

Fit to screen

Drag on empty

Marquee selection


๐Ÿ› ๏ธ MCP Server Tools

Tool

Description

create_project

Create new canvas project

add_element

Add element at exact position

get_elements

Get all elements with positions

update_element

Modify element properties

delete_element

Remove element

export_layout_spec

Export universal UI spec (YAML/JSON/TOON)

export_code

Generate React/HTML code

MCP Configuration

{
  "mcpServers": {
    "ui-canvas": {
      "command": "node",
      "args": ["/path/to/jsom/dist/mcp-server/index.js"]
    }
  }
}

๐Ÿ“ฑ Device Presets

Mobile iOS: iPhone 16 Pro, iPhone 16 Pro Max, iPhone 15, iPhone 14, iPhone 14 Pro Max, iPhone SE

Mobile Android: Pixel 9, Pixel 7, Samsung S24, Samsung S23

Tablet iOS: iPad Mini, iPad Air, iPad Pro 11", iPad Pro 12.9"

Tablet Android: Galaxy Tab S9, Pixel Tablet

Desktop: HD 1080p, 2K, 4K, MacBook Air 13", MacBook Pro 14", MacBook Pro 16", Surface Laptop, iMac 24"


๐Ÿ”ง Development

# Run everything (canvas + MCP server)
npm run dev

# Build for production
npm run build

# Run MCP server only
npm run mcp

# Canvas only
npm run dev:canvas

๐Ÿ“š Documentation


๐Ÿค Contributing

Contributions are welcome! Please read our contributing guidelines and submit PRs.

  1. Fork the repo

  2. Create your feature branch (git checkout -b feature/amazing-feature)

  3. Commit your changes (git commit -m 'Add amazing feature')

  4. Push to the branch (git push origin feature/amazing-feature)

  5. Open a Pull Request


๐Ÿงฉ Tech Stack

  • Frontend: React 18, Konva.js, Zustand, TailwindCSS

  • AI: LangGraph, LangChain, Ollama (local), Gemini 2.0 Flash (cloud)

  • Vision: minicpm-v, Gemini 2.0 (UI screenshot analysis)

  • Database: SurrealDB

  • Protocol: MCP (Model Context Protocol)

  • Deployment: Vercel, Docker


๐Ÿ“„ License

jsom Source Available License v1.0

This project is source-available but NOT open source.

  • โœ… Free for personal, educational, and non-commercial use

  • โœ… View, modify, contribute to the source code

  • โŒ NO commercial use without permission

  • โŒ NO competing products or rebranding

  • โŒ NO redistribution under different names

See LICENSE for full terms.

๐Ÿ“œ On MIT Versions

If you downloaded jsOM under MIT (before Jan 27, 2026), you have legal rights to that version. But please read MIT-ETHICS.md on the moral expectations of open source.

For commercial licensing: alessioivoycazzaniga@gmail.com


๐Ÿ™ Acknowledgments


A
license - permissive license
-
quality - not tested
C
maintenance

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Alemusica/jsom'

If you have feedback or need assistance with the MCP directory API, please join our Discord server