xenolith-graph
AI-native, embeddable node-graph editor for the web. Blueprint-style typed pins, in-node widgets, macros, React/Vue adapters, and a built-in MCP server so Claude Desktop / Cursor can build graphs over a localhost bridge.
Install / Use
claude mcp add XenolithEngine -- npx -y github:XenolithEngine/xenolith-graphIf the server publishes to npm under a different name, use that package instead — check the repo README.
MCP Server
Model Context Protocol server
Quality Score
Category
Development & EngineeringSupported Platforms
Our assessment of xenolith-graph
xenolith-graph scores 76/100 on our quality scale, 3690th of 4,623 Development & Engineering skills we index.
Its MCP Server is 21 KB long, well organised into 16 sections with 5 code examples: a thorough specification that gives an agent plenty to work with.
It has 10 GitHub stars, so there is little community track record yet; judge it on its content.
Maintenance, license and trust
- The repository was last updated 5 days ago, so xenolith-graph is actively maintained.
- It is released under the MIT license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 97/100, with no cautions. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
xenolith-graph compared with similar skills
All 4 of these similar skills score higher than xenolith-graph; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| xenolith-graph (this skill)by XenolithEngine | 76 | 10 | 5d ago | MCP Server |
| Agent-Reachby Panniantong | 100 | 91.8k | 20d ago | CLAUDE.md |
| headroomby headroomlabs-ai | 100 | 74.5k | today | CLAUDE.md |
| CowAgentby zhayujie | 100 | 47.2k | today | CLAUDE.md |
| ai-job-searchby MadsLorentzen | 100 | 45.0k | today | CLAUDE.md |
Frequently asked questions
- How do I install xenolith-graph?
- Run
claude mcp add XenolithEngine -- npx -y github:XenolithEngine/xenolith-graph. The install tabs above show the steps for each supported agent. - Which AI agents does xenolith-graph work with?
- It is written for Claude Code, Claude Desktop and Cursor, as a MCP Server file. Other agents that read the same format can often use it too.
- Is xenolith-graph safe to use?
- It is MIT-licensed and scores 97/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is xenolith-graph still maintained?
- The repository was last updated 5 days ago, so xenolith-graph is actively maintained.
Skill content
View source on GitHubXenolithGraph
An embeddable, drop-in node-graph editor for the web with a polished design system inside the package — typed Blueprint pins, live templates, macros, in-node widgets, a plugin host — and a swappable theme architecture that replaces the renderer's material entirely, not just its palette.
<p align="center"><a href="https://graph.xenolith.studio/playground/" target="_blank" rel="noopener noreferrer"><img alt="Try it live" src="https://img.shields.io/badge/%E2%96%B6%20Try%20it%20live%20%E2%80%94%20open%20the%20playground-FCB400?style=for-the-badge&labelColor=0A0A0A" /></a> <a href="https://graph.xenolith.studio/examples/" target="_blank" rel="noopener noreferrer"><img alt="Examples gallery" src="https://img.shields.io/badge/Examples%20gallery%20%E2%86%92-1d1d1d?style=for-the-badge" /></a></p> <p align="center"> <a href="https://graph.xenolith.studio/playground/?demo=agent" target="_blank" rel="noopener noreferrer"> <img src="docs/screenshots/agent-demo.gif" alt="An agent session builds a 14-node telemetry-anomaly pipeline through the MCP tool surface, runs it with per-node timing, and verifies its own output" width="86%" /> </a> </p>Status: v0.7 BETA. The public API documented in
STABLE-API.mdis the surface we plan to freeze, but it is NOT frozen yet — breaking changes can land at any point before v1.0. If you adopt now, pin an exact version. Initial touch / mobile support landed (pinch, two-finger pan, long-press menu, drawer chrome) but a few polish items remain. See Roadmap below.
Agents build. Humans debug. The capture above is a scripted session driving the editor through the exact MCP tool surface Claude Desktop or Cursor gets — list_node_types → add_node ×14 → connect_pins ×17 → auto_layout → set_category_palette — then it executes the graph for real (step-by-step, per-node timing) and verifies its own output (anomalies=2 ✓). Every agent edit rides the same command bus as a human edit, so Ctrl+Z just works. Run it live: playground/?demo=agent.
Agents propose. Humans approve. Connect with mode: 'propose' and every mutating tool call ENQUEUES instead of applying — a badge surfaces the waiting batch, the review panel lists each operation (tool, args digest, predicted effect, client identity), and Approve all lands the whole batch as ONE atomic, undoable transaction. Reject discards. Provisional node ids let the agent chain operations inside a batch; approval re-resolves everything against the current graph (ADR 0007). Run it live: playground/?demo=agent&mode=propose.
What it does
Vanilla / any framework:
import { XenolithEditor } from '@xenolithengine/graph-editor'
const editor = await XenolithEditor.init('#app')
editor.loadJSON(graphDoc)
editor.fitView()
React:
import { XenolithGraph } from '@xenolithengine/graph-react'
<XenolithGraph
graph={graphDoc}
fitOnLoad
onReady={(editor) => editor.registry.register(MyNodeSchema)}
/>
Vue 3:
<script setup lang="ts">
import { XenolithGraph } from '@xenolithengine/graph-vue'
function onReady(editor) { editor.registry.register(MyNodeSchema) }
</script>
<template>
<XenolithGraph :graph="graphDoc" fit-on-load @ready="onReady" />
</template>
One call (or one component) boots: fonts, PIXI v8 renderer, viewport, grid, pan/zoom, marquee, multi-drag with snap, connect-pins-by-drag, Alt+drag rewire, two reroute kinds, comments, collapsed macros, live templates with dive-in editing, in-node widgets, K2-style Tab palette, properties sidebar, undo/redo, JSON serialize with schema migrations, minimap, drag-and-drop palette sidebar. Headless @xenolithengine/graph-core is zero-dependency.
Highlights
- Blueprint-first. Typed pins (
execvsdata), per-type colour and shape (circle/arrow/diamond), registerable type conversions (editor.types.registerConversion('number', 'text', String)). Exec pins hoist onto the node header line (UE-Blueprint layout). Header glyphs from a Feather icon set or your own SVG. - Live templates + macros. Reusable subgraphs with one shared definition + many instances; double-click to dive in, a breadcrumb tracks the path (
Root › Pipeline › Stage). One-off inline grouping via macros — convert macro ↔ template either direction.unpackTemplateInstance()inlines a copy. - Comments. Drag a coloured rectangle behind nodes; spatial group-drag moves everything inside it. Tab → "Comment" or context menu.
- In-node widgets. Declarative
number/slider/combo/text/toggle/color/button, plus custom canvas-draw or DOM-mount widgets (reactWidget,vueWidget,svelteWidgetviaregisterWidget(name, controller)). Conditional visibility on widget state (displayOptions.show), free-floating widgets (freeFloating: true), live values on display widgets, properties sidebar. Solid and Angular have no widget bridge — use canvas widgets oreditor.chrome. - Named commands + hotkeys. Register actions through
editor.commandswith typedCommands.Undo/Commands.Redo/… constants; cross-platform hotkey grammar (Mod+Zresolves to Cmd on macOS, Ctrl elsewhere). Built-in shortcuts are overridable. - Events + history. Listen with
editor.on(event, fn)— including cancellable variants (edge:connecting,edge:disconnecting,node:removing,node:clickingwith acancel()closure). Group many mutations into one undo entry viaeditor.transaction(fn)(orbeginGroup({ idleTimeoutMs })/endGroup()for keystroke coalescing). - Save · restore · migrate · export. Versioned
xenolith.v1JSON (ID-sorted for clean git diffs) with per-schemamigrate(oldNode, fromVersion)hooks — old graphs upgrade automatically. ComfyUI workflow importer. Export the whole graph (not the viewport) to PNG or JPEG at any resolution. - Auto-layout plugin.
@xenolithengine/graph-plugin-autolayoutwith Dagre and ELK adapters. One call arranges any graph; animated tweens included; bypasses the command bus per-frame and commits the final positions as one undo entry. - Pluggable edge paths. Per-edge style:
bezier(default),smoothstep,step,linear. Labels, arrowheads, animated marching dashes. - Plugin host.
editor.use(plugin)with aPluginContextthat exposes schema/types/icons/widgets, an event bus, and runtime-delegation surfaces (onTick,startLoop/stopLoop/step,setNodePins,setWidgetValue({ephemeral}),setNodePositionEphemeral,expandTemplateInstance,graphSnapshot,setEdgeAnimated). - Three themes shipped. Xen (dark/gold, original design system), Daylight (light-mode, protruding pin halos, Helvetica typography), and Liquid Glass (shader-based refraction + rim lighting via PIXI Mesh+Shader). Swap at runtime with
editor.setTheme(theme). - Live Mode.
editor.setLiveMode(true)hides editor chrome (palette, breadcrumb, controls) — perfect for read-only previews and demos. - Perf for real graphs. Viewport virtualization + 3-tier LOD (full → sprite-baked → flat-batch). Render-on-demand (static graphs idle at 0 fps cost). BitmapText glyph atlas for node/widget text. Shared GPU texture caches.
- Framework adapters. Six packages, each with a Learn page. React and Vue 3 ship panel components (
XenolithPanel,Controls,MiniMap,Button,ProposalQueue), a hook/composable set including the controlled tripleuseNodesState(), andreactWidget/vueWidget. Svelte ships ause:xenolithaction andcreateXenolithStores()(includingnodesState()); panel components andsvelteWidgetlive on the@xenolithengine/graph-svelte/componentssubpath and need Svelte 5, while the package root stays pure TypeScript and runs on Svelte 4. Solid ships ause:xenolithdirective andcreateXenolithStores()/nodesState()— panels and a widget bridge are absent there, useeditor.chrome. Angular ships a decorator-freeXenolithGraphService(RxJS, includingnodesState()); there is no library component, because an AOT consumer cannot compile a raw decorator class. Web Components (<xenolith-graph>) ship the attribute dictionary and all 25 editor events plusready; reactive stores belong to the host framework, which receives the editor onready. - AI-native via MCP. Ships its own Model Context Protocol server (
@xenolithengine/graph-mcp-server). Start the CLI, click Connect in the editor, and Claude Desktop / Cursor can build graphs directly —list_node_types→add_node→connect_pins→auto_layout. Twenty-six tools + three resources (graph://current,schema://types,audit://recent). Every mutation flows through the command bus so undo and the live event stream just work. Token-auth + read-only mode supported. Propose mode (connectMCP(url, { mode: 'propose' })) is the trust boundary: agent edits queue for human approval in the built-in review panel and land as one undo step. - Visual stepping debugger.
StepDebuggeris part of@xenolithengine/graph-editor— wrap any executor (StepExecutor), and you get pause/step/continue, breakpoints, per-node timing, and a live trace. The Step debugger / Time-travel scrubber / Per-node cost heatmap / Grap
Truncated for display — read the full file on GitHub.
Related Skills
Agent-Reach
91.8kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
headroom
74.5kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
CowAgent
47.2kOpen-source personal AI assistant & Agent Harness. Plans tasks, runs tools and skills, self-evolves with memory and knowledge. Multi-agent, multi-model, multi-channel. Lightweight, extensible, one-line install.
ai-job-search
45.0kThe job search that runs on your machine. AI job application framework built on Claude Code: evaluate postings, tailor CVs, write cover letters, prep interviews. Fork it and own it.
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
