Multi-Map Master Reference
Welcome to the definitive documentation for Multi-Map v14.11. This wiki serves daily users navigating the spatial interface, developers building federated companion applications, and AI agents interpreting the platform's data structures. Multi-Map is a spatial mapping ecosystem where information is organized into "Constellations" of interconnected nodes rather than traditional folders and files.
Part I
User Guide
1. Getting Started
Multi-Map is a spatial mapping ecosystem. Instead of folders and files, you organize information into "Constellations" of interconnected nodes. Every map begins with a Universe Root. From there, you can spawn Hubs, Notes, Portals, and structured schema elements depending on the Map's designated Type (Generic, Web Architecture, Prompt Engine, Agent Config, Flowchart, Person Profile, Link Hub, Data Architecture, or File System).
Quick Overview
- Maps are JSON documents containing nodes, connections, and metadata.
- Nodes are typed data points (Root, Hub, Portal, Note, etc.) with spatial coordinates.
- Connections define relationships: Structural (parent/child), Association (conceptual), or Flow (sequential logic).
- Projects group multiple map pages together with folder organization.
- Phase Engines are alternative visual renderers (views) for the same underlying data.
3. Node Operations & Linking
Two-Step Targeted Linking
While "Add" creates strict hierarchical structures (solid lines), you can draw conceptual relationships between any two nodes using the Two-Step Linking workflow (dotted lines).
- Select your source node and click the Link (🔗) button on its Radial Menu.
- The system enters Linking Mode. A pulsing gold banner appears at the top of the screen.
- You are free to pan the map, open other nodes, and explore. Your clicks are not hijacked.
- When you find your target node, select it. Its Radial Menu will appear.
- Click the pulsing Green Confirm Link button to finalize the connection. (Or click the Red Cancel button on the original node to abort).
Changing Parents (Reparenting)
To move a node to a different branch, you can either:
- Click the Select Parent (👆) button in the radial menu.
- Shortcut: Alt + Click the node you want to move.
The screen will show a pulsing overlay. Next, simply click the new parent node and select the green Confirm button. Schema rules are strictly enforced (e.g., a node cannot be its own child, nor can a portal have children).
Clipping Branches
If a map becomes too cluttered, select the Clip (✂️) action on a node. This deletes the node and its downstream children from the current map, pastes them into an entirely new Map file, and leaves behind a Portal node in its exact place pointing to the new file.
4. Phase Engines (Views)
Multi-Map separates your raw data from how it is displayed. "Phases" are different iframe-based lenses through which you can view the exact same Mapstate JSON. Switching phases never alters the underlying data—only how it's rendered.
-
🗺️
Celestial Map (Default)
The default spatial graph. Free-form dragging, force-directed physics engine enabled. Nodes float as constellations with organic branching layouts.
-
🔮
Orbital Focus (Magic Circle)
A strict hierarchical view. Displays only the selected "Sun" node, its immediate "Planets" (children), and its "Halo" (parent). Clicking planets navigates deep into the tree without visual clutter.
-
🌐🌐Web Architect & Spatial Browser
A live HTML compiler. If your map uses
web-*nodes, this engine dynamically compiles them into live, rendered HTML/Tailwind inside an iframe.Advanced Iframe Integration: If you input a valid URL (e.g.google.comorhttps://wikipedia.org) into the payload of aweb-rootnode, the engine will automatically mount the live website into the background iframe. Any children attached to that node will physically render beneath the live website. If a site employs X-Frame blocking, an "Open in New Tab" escape hatch appears. -
📜
Prompt Engine
Compiles downstream
prompt-*nodes (role, context, goal, instructions, constraints, examples, variables) into a linear, formatted Markdown document for LLM consumption. Supports chaining viaprompt-chainnodes with portal execution. -
🤖
Agent Config
Dedicated sandbox viewport providing a dynamic overview of the agent architecture—persona, router, skills, tools, memory, and guardrails—rendered from
agent-*node hierarchies. -
👤
Person / Identity
Translates
person-rootnode data into a professional profile or CV format. Hub children represent career sections, skills, and experience.
5. Project Directory & Data Manager
Multi-Map organizes files hierarchically into Projects, Folders, and Pages. The left-hand Data Manager sidebar and the right-hand Profile drawer provide full project and library management.
📁 The Master Map (Project Directory)
Every project automatically generates a special Project Directory page. This acts as the "Master Map" for the project.
- It visually represents your project's architecture using a
file-rootstructure withfile-folderchildren. - Bi-directional Sync: Moving a map portal into a folder node on the
Canvas automatically updates the folder hierarchy in the left-hand Data Manager UI, and
vice-versa. Powered by
syncProjectMasterMap(). - One per Project: A project can strictly only have one master directory.
- Quick Access: From any map, selecting the "Project Directory (🏠)" button on a root node instantly returns you to the Master Map.
🌐 Cloud Templates
Provides read-only master templates. You can import these directly into your active workspace. Click "Upload" to upload external JSON templates to your local library.
📚 Saved Constellations
Your personal repository. You can Save your active session, Load previous sessions, or click "Export" to download your entire constellation library as a single JSON array. Accessible via the "Profile" icon in the top right corner.
6. Smart Roots & Portals
To link maps together, create a Portal node. Portals act as wormholes to other pages in
your library. Maps have intrinsic Subtype Mapstates (e.g., "Generic", "Web
Architecture") which enforce strict Ontology rules globally across the map.
Dynamic Portal System
In previous versions, a specialized smart-portal node type existed separately. Now,
all Portals are dynamic. The system utilizes Smart Roots to
determine behavior. Using the Portal Inspector, you can either select an existing map as the
destination, or create a New Submap by selecting a Map Type.
- Every Root node contains standardized
root_metadata. - When you interact with a Portal, it peeks at the target map's root metadata.
- openPortal(): If configured, interacting with the portal automatically spawns child data natively within the current map based on the target map's payload (e.g., executing a prompt chain and returning the result locally).
- enterPortal(): The standard action replaces your current workspace with the destination map. The system maintains a "Portal History" stack allowing you to safely "Exit Portal" (🔙 button) back up the chain.
Entering a portal automatically switches your Phase Engine to
match the destination map's type. For example, jumping into a Web Architecture map auto-activates
the Web Architect phase. Creating a "Web Architecture" submap instantly enforces Web-only rules
and generates a web-root node.
7. MM-AI Assistant
Multi-Map features a native LLM integration (Gemini) capable of converting natural language into spatial MapState JSON, modifying existing maps, and providing structural tutoring.
✨ Autocomplete Commands
/generate- Create a completely new map or branch from a description./edit- Modify the current graph structurally./project- Generate a multi-page project package./explain- Narrate the current map context and structure.
🗣️ Local Sandbox Commands
The AI can interpret commands locally without hitting the cloud API. Try commands like:
"Select node Alpha", "Rename node X to Y", "Delete node Z", or
"Link Alpha to Beta".
Part II
Developer Documentation
8. Core Architecture
The platform relies on a Decoupled State Machine pattern. The DOM never dictates truth.
multi-map-core.js)
Holds the MapState object. Performs all
array mutations, handles UUID generation, runs the resolveOverlaps() physics
loop, manages the Breadth-First Search (BFS) algorithm for cascading downstream node
deletions, handles syncing logic with Firestore, and enforces the "Project
Directory" bidirectional folder-to-node synchronization via
syncProjectMasterMap(). Emits this.notify() on state change.
multi-map-sandbox.js)
The View Controller. Subscribes to the Kernel. Utilizes
pure mathematical DOM-Diffing (checking dataset.stateHash) to apply targeted
innerHTML updates without destroying active mobile keyboards or CSS animation frames. Handles
DOM events, viewport transforms, UI overlay logic, Radial Menu generation, keyboard
navigation routing, and phase engine iframe communication.
multi-map-rules.js)
Defines the complete node ontology: 50+ node type
definitions, structural connection rules (which children each parent allows), map type
configurations, and the canConnect() validation function. Exports the
MultiMapSchema singleton.
engines/*.html)
Each phase is an independent HTML file loaded into an
iframe. Engines communicate with the Sandbox via postMessage() and receive the
current MapState as serialized JSON. Engines: universal.html (Celestial Map),
orbital-focus.html, web-architect.html,
prompt-engine.html, agent-config.html, person.html.
9. Node & Connection Ontology
Defined in multi-map-rules.js, this schema dictates what types of nodes can exist and
how they are allowed to connect. Universal Exception: Any node is allowed to have a child of type
note or web-link.
Connection Types
- Structural (Solid): Strict Parent/Child hierarchy. Acts as a spring in the physics engine. Triggers cascading deletions.
- Association (Dashed): Loose conceptual relation. Ignored by physics springs and orbital views. Created via 2-Step linking.
- Flow (Dotted): Directional sequence logic (reserved for Logic Gates / execution loops).
Schema Hierarchy by Map Type
| Map Type | Root Node | Key Children |
|---|---|---|
| Generic Space | root |
hub, portal, smart-portal, note, all root types |
| Prompt Engine | prompt-root |
role, goal, context, instruction, constraint, example, variable, chain, image, data-analytic, text-to-text, code-gen |
| Agent Config | agent-root |
persona, router, skill, tool, memory, guardrail |
| Flowchart | flow-root |
process, decision, terminal |
| Web Architecture | web-root |
nav, hero, section, footer, card, button, text, image, video, form, input, grid, list, modal, carousel |
| Person Profile | person-root |
hub, portal, note |
| File System | file-root |
file-folder, portal, note |
| Link Hub | link-root |
hub, portal, web-link, note |
| Data Architecture | data-root |
hub, portal, note |
Web Architect Nodes (Detail)
| Node Type | HTML Element | Allowed Children (Strict) | Behavior |
|---|---|---|---|
| web-root | <body> / <iframe> |
nav, hero, section, footer, modal | Mounts embedded URLs or basic HTML roots. |
| web-nav | <nav> |
link, button, image | Sticks to top of compiled page. |
| web-section | <section> |
text, image, card, button, link, grid, list, video, form, carousel | Standard flex container. |
| web-card | <article> |
text, image, button, link, list | Contained card component. |
| web-grid | <div> (grid) |
card, image, text, video, form | CSS Grid layout container. |
| web-form | <form> |
input, button, text | Form container with input children. |
| web-text | <p> / <h3> |
None | Renders text block w/ line breaks. |
| web-link | <a> |
None | Content payload acts as href target. |
10. JSON Schema & Arrays
The JSON standard for importing/exporting mapstates. The system can parse a single object OR
an array [{...}, {...}] of mapstates during upload.
{
"map_id": "u7b9v2z1x",
"meta": {
"title": "Project Master Plan",
"type": "generic", // Map type: generic|web|prompt|agent|flow|person|link|data|file
"created": "2026-02-24T12:00:00Z",
"notes": "System schema reference",
"shared": false,
"project_id": "proj_abc", // Links to parent project
"isMaster": false // true only for Project Directory pages
},
"nodes": [
{
"id": "abc123xyz",
"type": "hub", // Must match MultiMapSchema.definitions
"title": "Central Architecture",
"content": "Description payload here...",
"data": {
"x": 145.2, // Canvas X coordinate
"y": -22.4, // Canvas Y coordinate
"isCore": true, // Pinned (immune to physics)
"collapsed": false // Children hidden behind Moons
},
"submaps": []
}
],
"connections": [
{
"id": "edge_999",
"from": "abc123xyz", // Source node ID
"to": "def456lmn", // Target node ID
"type": "structural" // structural | association | flow
}
],
"session": {
"viewport": { "x": 960, "y": 540, "scale": 1 },
"selectedId": null,
"remoteTemplates": [],
"layoutMode": "organic"
},
"submaps": [] // Caches templates or local portal configurations
}
11. Force-Directed Physics
The layout is driven by a custom iterative algorithm found in Kernel.resolveOverlaps().
It applies two simultaneous forces to form organic trees dynamically.
1. Universal Repulsion
An O(N²) calculation where every node pushes away from every other node if distance < 240px. (kRepel = 0.08).
2. Hooke's Law Springs
Only applies to structural connections. Pulls
connected nodes toward an ideal resting distance of 160px. (kSpring = 0.05).
Upon node creation, a fast 40-iteration burst runs to clear space. Clicking the "Arrange" UI button
triggers a deep 150-iteration simulation to organically untangle complex webs. Pinned nodes
(isCore: true) are immune to physics forces.
12. Serverless Library Engine
In v14.7, we deprecated fetch() calls to external JSON files to bypass local
file:// CORS restrictions. The engine now uses a globally mounted
MultiMapLibrary object loaded via multi-map-library.js.
How AI Integration Works
To add new templates generated by an LLM, you have two options:
- Manual Source: Paste the generated JSON directly into the
defaults: [...]array insidemulti-map-library.js. - Runtime Upload: Save the AI output as a
.jsonfile, open the Data Manager Phase in the app, and click the Upload Template button to write it permanently to your LocalStorage.
13. Federation & API Roadmap
The platform is actively transitioning toward a federated, decentralized storage model.
Bring Your Own Storage (BYOS)
Currently, maps are saved to localStorage or a centralized Firebase Cloud
Vault. The map schema includes a storage_target property preparing for
Google Drive and Local OS integration via the HTML5 File System API.
True Federation (WebRTC + CRDTs)
Upcoming releases will transition live collaborative edits from Firestore
onSnapshot listeners to direct P2P WebRTC data channels, utilizing
CRDT frameworks (like Yjs or Automerge) to handle conflict resolution across community
colab-root spaces.