◈ ASHLIGHT
ERD · Phase 5 · Live Data
100%
Untitled Workspace
Workspace
New Workspace
Rename
Load Demo
Welcome Screen
Tutorial
+Add Node
Clear All
Import
Load JSON .json
Paste JSON Ctrl+V
Export
{ }Save JSON
Export PNG full diagram
Export PNG viewport
STANDBY
X 0   Y 0
CLICK OUTPUT PORT → DRAG → CLICK INPUT PORT  ·  ESC TO CANCEL
◈ Inspector
No selection
Click a node or connection
to inspect & edit

Hover a port · drag to connect
Right-click for menu
ACTIVITY LOG 0
No activity yet.
CONSOLE LOG 0
No log entries — start simulation.
EVENT STREAM 0
TIMESYSTEMEVENTDATA
No events yet — hit Simulate or connect a live engine.
ASHLIGHT ERD ·PHASE 6 — COMPLETE ·ZOOM 100% ·NODES 0 ·CONNS 0 ·SEL ·LEFT DRAG pan · CTRL+DRAG select · SCROLL zoom · CLICK node to select · DEL to delete
◈ ASHLIGHT ERD v6 · Reference Guide
Design Tool
Build system architecture diagrams on an infinite canvas. Place nodes, draw connections, annotate with live field data.
Agent-Ready
Feed from Claude, GPT, or any AI agent. Your architecture appears in seconds. Export back as workspace JSON, PNG, or Markdown.
Live Runtime
Wire a real running engine via postMessage. Watch your architecture update in real time as the engine ticks.
Node Anatomy
⬡ RENDER DRAW CALLS 1,387 TRIANGLES 284k PASSES 3 SYSTEM TITLE + ICON STATUS DOT OUT IN FIELDS NODE TYPE
Connection Anatomy
CORE BUS commands FLOW DOT (animated) OUT PORT IN PORT TYPE: COMMAND
Live Preview
Mouse & Navigation
Left Drag (empty canvas)Pan the canvas
Ctrl + Left DragRubber-band multi-select
Space + DragPan the canvas (alternate)
Middle Mouse + DragPan the canvas
Scroll WheelZoom in / out
Click nodeSelect — opens inspector
Double-click nodeEdit node fields
Drag nodeReposition in world space
Drag selected groupMove all selected nodes — releases & deselects on drop
Right-click nodeContext menu (Edit, Duplicate, Delete)
Right-click connectionConnection menu (type, animated, delete)
Click port dotStart drawing a connection
Click target portComplete connection
Click connection lineSelect — inspect & edit type
Click minimapNavigate viewport to that point
Keyboard
Home  /  HReturn to world origin (0, 0)
FFit all nodes to screen
+  /  −Zoom in / out
GToggle grid
LToggle grid labels
Delete  /  BackspaceDelete selected node or connection
EscapeCancel wire · deselect · close modal
Ctrl + ASelect all nodes
Ctrl + ZUndo last action (20 levels)
Ctrl + FOpen search / find nodes
Ctrl + EnterSave open modal form
Ctrl + VPaste JSON from clipboard
Toolbar Buttons
⌖ HOMEAnimate viewport to world origin
GRIDToggle background grid lines
LABELSToggle world coordinate labels
ORIGINToggle origin marker at 0,0
FLOWToggle animated dots on connections
SNAPSnap node movement to 25px grid
MAPToggle minimap (bottom left)
+ NODEAdd a new node at current viewport
FITFit all nodes into view
↩ UNDOUndo last mutating action
⌕ FINDSearch nodes by title, type, or field
▶ SIMULATEStart live field value simulation
■ STOPStop simulation, freeze values
Connection Types
commandSolid cyan — direct instruction flow
eventDashed cyan — async event emission
dataSolid green — state / data flow
scriptDashed amber — script / runtime link
bridgeDashed dim — external integration
Node Types
coreCentral system — amber border
systemRuntime subsystem — cyan border
busEvent/verb bus — purple border
pluginLoadable plugin — green border
consoleDev console / bridge — dim border
Import Tiers — Auto-Detected on Drop or Paste

The ERD accepts three tiers of JSON. Drop a .json file onto the canvas, paste with Ctrl+V, or use FILE → Load JSON. The tier is detected automatically.

Tier 1 — Single node or node array

Fastest seed. Nodes are merged into the current diagram. No connections. No workspace envelope needed.

// Single node
{ "title": "Input Plugin", "type": "plugin" }

// Array of nodes
[
  { "title": "Input Plugin",  "type": "plugin"  },
  { "title": "Audio Manager", "type": "system"  },
  { "title": "Asset Cache",   "type": "console" }
]
Tier 2 — Node + Connection bundle

Nodes and connections together. No workspace envelope. Merged into current diagram or offered as replace. The primary format for agent output when adding a subsystem.

{
  "nodes": [
    {
      "id": "n_input",
      "title": "Input Plugin",
      "icon": "⌨",
      "type": "plugin",
      "x": 200, "y": 100,
      "status": "running",
      "fields": [
        { "key": "devices",  "value": "3"       },
        { "key": "mappings", "value": "keyboard" }
      ],
      "ports": {
        "out": ["events", "state"],
        "in":  ["commands"]
      }
    }
  ],
  "connections": [
    {
      "from": { "node": "n_input", "port": "events" },
      "to":   { "node": "n_bus",   "port": "verbs"  },
      "type": "event",
      "label": "input events",
      "animated": true
    }
  ]
}
Tier 3 — Full Workspace

Complete workspace document. Shown with a merge/replace confirmation modal. Restores viewport position, workspace name, and project metadata.

{
  "type": "ashlight.erd.workspace",
  "version": "1.1",
  "name": "My Architecture",
  "project": {
    "id": "my_project",
    "label": "My Project",
    "kind": "erd"
  },
  "viewport": { "x": 0, "y": 0, "zoom": 1 },
  "nodes": [ ... ],
  "connections": [ ... ],
  "meta": {
    "description": "Optional notes"
  }
}
Full Node Schema
{
  "id":     "n_core",         // omit → auto-generated
  "title":  "Ashlight Core",  // required
  "icon":   "◈",              // any unicode glyph
  "type":   "core",           // core|system|bus|plugin|console
  "x":      0,                // world X position
  "y":      0,                // world Y position
  "status": "running",        // running|idle|error|warning|stopped
  "fields": [
    { "key": "version", "value": "v1.0.0" }
  ],
  "ports": {
    "out": ["commands", "events"],
    "in":  ["config"]
  }
}
postMessage Live Data API

Feed live data from a running engine into the ERD. Available in DevTools console as erdUpdate() and erdBatch().

// Single field update
erdUpdate('n_core', 'uptime', '01:23:45')

// Batch update — efficient for engine tick
erdBatch([
  { node: 'n_core',   field: 'uptime',     value: '01:23:45' },
  { node: 'n_bus',    field: 'messages/s', value: '9,104'    },
  { node: 'n_render', field: 'draw calls', value: '1,387'    },
])

// Status change — changes node dot colour
window.postMessage({
  type:   'ashlight.erd.status',
  node:   'n_script',
  status: 'error'
}, '*')

// Via postMessage from parent frame / BroadcastChannel
window.postMessage({
  type:    'ashlight.erd.batch',
  updates: [{ node, field, value }, ...]
}, '*')
The Demo Project — Ashlight Runtime Architecture

The diagram loaded by default is the actual Ashlight Engine runtime architecture — not placeholder data. Every node represents a real system. Every connection represents a real data flow. Drop ashlight_runtime_erd.json to restore it at any time.

Core Systems
Ashlight CoreThe root system. Owns the tick loop, time scale, and health. All commands originate here. Positioned at world origin (0,0).
Ashlight BusCentral verb and event bus. Every system publishes and subscribes here. The connective tissue of the runtime. Positioned below Core at (0, 320).
Plugin ManagerLoads, unloads, and hot-reloads plugins. Receives commands from Core. Reports loaded plugin count and version.
SchedulerManages the tick graph — jobs, priorities, and intervals. Feeds requests to Capabilities for permission gating.
CapabilitiesGrants and revokes runtime permissions. Downstream of Scheduler. Controls what systems are allowed to do.
RegistryEntity ownership. Tracks all live instances by stable ID. Bidirectionally connected to the Bus — publishes entity state, receives events.
SessionFSVirtual filesystem with mounts, cache, and watchers. All asset and config access routes through here.
Runtime Systems
ScriptRuntimeSandboxed JS/DSL VM. Runs compiled scripts in isolates. Publishes events to the Bus. Hot reload supported via Runtime Scripts plugin.
Render InterpreterWebGL2 backend. Receives state packets from the Bus. Reports draw calls, triangle count, and render passes.
PhysicsRigid body simulation. Bidirectional with Bus — receives commands, publishes collision state. Bodies and contacts shown live during simulation.
AnimationClip and state machine manager. Driven by Bus command packets. Reports active clip and node count.
EnvironmentDay/night cycle, lighting, atmosphere. Driven by Bus. Sky mode shown as Dynamic during simulation.
Character ControllerPlugin. Movement, grounding, input map, retargeting. Receives command packets from Bus. Positioned below Bus at centre.
Runtime ScriptsPlugin. Hot-reload watcher. Feeds compiled scripts directly to ScriptRuntime.
Runtime ConsoleLog sink. Receives event and state packets. Read-only — no output ports.
DSL ConsoleInteractive DSL query terminal. Can publish verbs back to the Bus — bidirectional.
Bridges / BusExternal integration bridge. Bidirectional with Bus via delta and ack packets.
Reading the Connections

Connections flow from output ports (left dot, cyan) to input ports (right dot, green). Animated dots show active data flow — their speed and colour reflect the connection type. The connection label appears at the midpoint. Click any connection to inspect and change its type in the inspector panel.

Hit ▶ SIMULATE to see all field values update in real time, with the event stream logging every change. This approximates what a live engine connection would look like.

v6 · RUNTIME EDITION
◈ ASHLIGHT SYSTEMS · ARCHITECTURE TOOLING

All-in-One Entity Relationship
Runtime

Design, visualise and connect to your live engine.
Infinite canvas. Typed connections. Real-time field data.
Drop JSON from any AI agent — your architecture appears in seconds.

◈ Infinite Canvas
▶ Live Runtime Data
⇌ Agent-Ready JSON
⊡ 5 Connection Types
⊗ Node Inspector
⬡ BroadcastChannel
⊞ Plugin Architecture
◎ Export PNG · MD · JSON
An Infinite Canvas
Pan, zoom, place systems anywhere in world space. Your architecture has no bounds.
Design Tool
Build system architecture on an infinite canvas. Place nodes, draw typed connections, annotate with live field data.
Live Runtime
Wire a real engine via BroadcastChannel or postMessage. Watch field values update at 240Hz as your engine ticks.
Agent-Ready
Drop JSON from Claude, GPT or any AI agent. Your architecture appears instantly. Export back as JSON, PNG or Markdown.
Tutorial Built-In
Follow the guided build — 13 systems, 14 connections, step by step. Learn the architecture as you assemble it.
◈ ASHLIGHT ERD · TUTORIAL COMPLETE
You Built an Engine.
13 SYSTEMS · 14 CONNECTIONS · LIVE AT 240HZ
Core commands everything. The Bus routes all messages.
Systems never talk directly — only through the Bus.
Drag nodes anywhere. The wiring never breaks.

Now it's yours. Import your own architecture,
or connect a live engine via BroadcastChannel.
◈ ASHLIGHT ERD · RUNTIME DEMO
Welcome to the
Ashlight Engine
13 systems · 14 connections · live data ready.
Explore the diagram freely, or follow the guided build
to see how each system connects and why.
Skip to canvas ↓
CLICK NEXT →
STEP 1 OF 13
An Engine from Scratch
We're going to build the Ashlight Engine architecture node by node.
◈ ASHLIGHT ERD v6 · Welcome
Step 1 of 5
An Infinite Canvas
Pan, zoom, place systems anywhere in world space. Your architecture has no bounds.
DROP JSON
Workspace · Node array · Single node
Edit
Duplicate
Frame
+Add Node Here
Delete
CHANGE TYPE
Toggle Animated
Delete Connection