SAM AI Platform Registry - Complete Reference
SAM AI Platform Registry - Complete Reference
Date: October 9, 2025
Status: Production
Purpose: Complete list of all registered canvas platforms
Platform Registry Overview
The SAM AI Canvas Skeleton supports multiple platforms through the canvas.platform model. Each platform is registered with:
- Display Name - User-facing name shown in menus/UI
- Technical Name - Internal identifier used in code
- Renderer Class - JavaScript class that renders nodes
- Renderer Module - JS file path (or "preloaded")
- Icon - FontAwesome icon class
- Sequence - Display order (lower = first)
Registered Platforms
1. SAM Creative Platform (Poppy)
File: ai_sam/data/poppy/poppy_platform.xml
<record id="platform_poppy" model="canvas.platform">
<field name="name">SAM Creative Platform</field>
<field name="technical_name">poppy</field>
<field name="renderer_class">PoppyNodeRenderer</field>
<field name="renderer_module">preloaded</field>
<field name="icon">fa-magic</field>
<field name="description">Creative multimedia canvas with AI chat, rich text, images, video, and interactive content blocks</field>
<field name="active" eval="True"/>
<field name="sequence">10</field>
</record>
Features:
- Multimedia content blocks (text, image, video)
- AI chat integration
- Rich text editing
- Card-style DOM rendering
Menu: SAM AI → SAM Creative
Renderer: PoppyNodeRenderer (DOM-based)
Files: ai_sam/static/src/js/poppy_*.js
2. Memory Knowledge Graph
File: ai_sam/data/memory/memory_graph_platform.xml
<record id="platform_memory_graph" model="canvas.platform">
<field name="name">Memory Knowledge Graph</field>
<field name="technical_name">ai_sam_memory_graph</field>
<field name="renderer_class">MemoryGraphRenderer</field>
<field name="renderer_module">preloaded</field>
<field name="icon">fa-project-diagram</field>
<field name="description">Interactive knowledge graph visualization with domain-colored nodes and relationship mapping</field>
<field name="active" eval="True"/>
<field name="sequence">20</field>
</record>
Features:
- Knowledge graph visualization
- Entity nodes with relationships
- Domain-colored nodes
- Graph database integration (Apache AGE)
Menu: SAM AI → Memory
Renderer: MemoryGraphRenderer (Canvas2D-based)
Files: ai_sam/static/src/js/memory/memory_graph_renderer.js
3. SAM Automator Platform
File: ai_sam/data/automator/automator_platform.xml
<record id="platform_automator" model="canvas.platform">
<field name="name">SAM Automator Platform</field>
<field name="technical_name">automator</field>
<field name="renderer_class">AutomatorRenderer</field>
<field name="renderer_module">preloaded</field>
<field name="icon">fa-project-diagram</field>
<field name="description">N8N workflow automation with 1,500+ service connectors, visual canvas, and professional node rendering</field>
<field name="active" eval="True"/>
<field name="sequence">30</field>
</record>
Features:
- N8N workflow automation
- 1,500+ service connectors
- Visual workflow canvas
- Bezier connection lines
- N8N JSON import/export
Menu: SAM AI → Automator
Renderer: AutomatorRenderer (to be created)
Files: ai_sam/static/src/automator/n8n/*.js
Platform Manifest Loading Order
In ai_sam/__manifest__.py:
'data': [
...
'data/memory/memory_graph_platform.xml', # Sequence: 20
'data/poppy/poppy_platform.xml', # Sequence: 10
'data/automator/automator_platform.xml', # Sequence: 30
...
]
Display Order (by sequence):
1. SAM Creative (10)
2. Memory (20)
3. Automator (30)
Platform Renderer Files
SAM Creative Platform
ai_sam/static/src/js/
├── poppy_node_renderer.js # Main renderer
├── poppy_sidebar.js # Element palette
├── poppy_toolbar.js # Top toolbar
├── poppy_ai_chat_panel.js # AI chat integration
├── poppy_multimedia.js # Media handling
└── poppy_canvas_styles.css # Styling
Memory Platform
ai_sam/static/src/js/memory/
├── memory_graph_renderer.js # Main renderer
├── memory_sidebar.js # Graph controls
└── memory_graph_renderer_debug.js # Debug tools
Automator Platform
ai_sam/static/src/automator/n8n/
├── canvas/canvas_manager.js # Canvas manager
├── nodes/node_manager.js # N8N node CRUD
├── overlays/overlay_manager.js # Node palette
├── lines/connection_manager.js # Bezier connections
└── n8n_styles/n8n_node_canvas_styles.css
How Platform Loading Works
- User opens canvas (
/canvas/skeleton/open?canvas_id=X) - Controller checks
canvas.skeleton_platform_id - Platform config fetched from
canvas.platformregistry - Platform Loader (
platform_loader.js) dynamically loads renderer - Renderer instantiated and injected into node manager
- Canvas loads with platform-specific tools
Code Flow:
// Step 1: Fetch platform config
const config = await platformLoader.fetchPlatformConfig(platformId);
// Result: { name: "SAM Creative Platform", renderer_class: "PoppyNodeRenderer", ... }
// Step 2: Load renderer module (if needed)
await platformLoader.loadRendererModule(config.renderer_module);
// Step 3: Instantiate renderer
const RendererClass = window[config.renderer_class];
const renderer = new RendererClass();
// Step 4: Inject into node manager
window.skeletonNodeManager.setRenderer(renderer);
Adding a New Platform
To add a new platform (e.g., "Mind Map"):
Step 1: Create Platform XML
<!-- ai_sam/data/mindmap/mindmap_platform.xml -->
<record id="platform_mindmap" model="canvas.platform">
<field name="name">Mind Map Platform</field>
<field name="technical_name">mindmap</field>
<field name="renderer_class">MindMapRenderer</field>
<field name="renderer_module">preloaded</field>
<field name="icon">fa-brain</field>
<field name="sequence">40</field>
</record>
Step 2: Create Renderer
// ai_sam/static/src/js/mindmap_renderer.js
class MindMapRenderer {
initialize(canvasElement, canvasContext) { ... }
renderNode(node) { ... }
updateNode(node) { ... }
removeNode(nodeId) { ... }
clearCanvas() { ... }
}
window.MindMapRenderer = MindMapRenderer;
Step 3: Add to Manifest
'data': [
...
'data/mindmap/mindmap_platform.xml',
],
'assets': {
'web.assets_backend': [
...
'ai_sam/static/src/js/mindmap_renderer.js',
]
}
Step 4: Create Canvas
canvas = env['canvas'].create({
'name': 'My Mind Map',
'skeleton_platform_id': env.ref('ai_sam.platform_mindmap').id,
})
Platform Comparison Table
| Platform | Technical Name | Renderer | Rendering Type | Primary Use |
|---|---|---|---|---|
| SAM Creative | poppy |
PoppyNodeRenderer |
DOM (divs) | Multimedia content |
| Memory | ai_sam_memory_graph |
MemoryGraphRenderer |
Canvas2D | Knowledge graphs |
| Automator | automator |
AutomatorRenderer |
Canvas2D | N8N workflows |
Current Status
✅ Memory Platform - Fully registered and functional
✅ SAM Creative Platform - Fully registered and functional
✅ Automator Platform - Newly registered (Oct 9, 2025)
Next Steps:
- Create AutomatorRenderer class (currently uses legacy N8N rendering)
- Migrate N8N canvas to use unified skeleton system
- Test all three platforms with skeleton canvas
Document Version: 1.0
Last Updated: October 9, 2025
Related Docs:
- CANVAS_SKELETON_CORE_ARCHITECTURE.md
- PLATFORM_SIDEBAR_ARCHITECTURE.md