A cross-platform editor for Visual Pinball X (.vpx) table files, with a 3D preview, a script editor, and an MCP server so AI assistants can help build tables.
Try it in your browser - No installation required!
VPX Editor is a cross-platform table editor for Visual Pinball, available as both a desktop application (Electron) and a web app. Built with TypeScript and Three.js, it uses vpin-wasm to extract and assemble VPX files.
This project was initially created with the assistance of Claude AI.
Warning
Always make a backup of your VPX files before editing! This editor is in early development and is bound to have bugs.
Note
This editor converts tables to use Part Groups instead of Layers, a new feature introduced in VPX 10.8.1. Tables saved with this editor require VPinball 10.8.1 or later to run.
Port of the Windows VPX 2D editor:
- All playfield elements (walls, ramps, flippers, bumpers, lights, primitives, and more)
- Drag-and-drop placement, multi-select, and transform operations
- Layers panel with per-layer visibility, filtering, and drawing order
- Properties panel for every element type
- Undo and redo for every edit, including edits made by AI assistants
- Real-time 3D rendering with Three.js
- Blender-style camera controls (see 3D Controls)
- Material and texture preview
- Play Mode preview: Desktop, Full Single Screen, Cabinet, Mixed Reality, and Virtual Reality
- Monaco-based VBScript editor with syntax highlighting
- Jump to any item, event, or function from the toolbar
- Function creation
![]() |
![]() |
- Image, Sound, and Material managers with usage counts
- Dimension, Collection, and Render Probe managers
- Checks the table for missing images, materials, surfaces and sounds, duplicate or reserved names, unused assets, timer and script problems, and more (powered by vpin)
- Runs automatically when a table opens and from Table > Table Audit
- Click a finding to select the element or jump to the script line
- Import and export meshes as OBJ, and export the whole table as OBJ or GLB for Blender
- Export filters: everything, Visual Pinball's own OBJ export set, skip hidden layers, or only the selected items
- Export a playfield blueprint image
- Configure the VPinball executable path in settings
- Launch and test tables directly from the editor
- Light and dark mode with system theme detection
The desktop editor runs a local Model Context Protocol server so an AI coding assistant can build and edit tables for you. Open Tools → MCP Server → Settings…, pick your client, and paste the command or config block it shows. Claude Code and Codex CLI are supported.
Once connected, the assistant can:
- Create a new table from a starter (a playable GLF table or a blank one) and save it straight into the folder you are working in
- Add and modify parts, materials, images, sounds, and meshes, with previews before destructive edits
- Wire game logic with GLF devices and generate Mission Pinball Framework hardware config
- Take screenshots of the 2D and 3D views to check placement
- Boot-test the table in VPinballX and report script errors
- Undo and redo its own edits alongside yours
See docs/mcp/getting-started.md for setup, GLF tables, and MPF export.
File → New offers stock Visual Pinball templates, the three VPin Workshop example tables, and two GLF tables: a minimal playable tutorial and the full GLF Example Table. They are downloaded or assembled from their upstream repositories on install and are credited under Acknowledgments.
Blender-style navigation:
| Input | Action |
|---|---|
| Middle-drag | Orbit camera |
| Shift + Middle-drag | Pan camera |
| Scroll wheel | Zoom |
| Numpad 1 | Front view |
| Numpad 3 | Side view |
| Numpad 7 | Top view |
| Ctrl + Numpad | Opposite views |
| Alt (hold) | Temporary orbit mode |
Download the latest release for your platform from the Releases page.
- VPinball 10.8.1+ - Required only for playing tables from the editor
- Node.js 20+
Install the node dependencies:
npm installThe install step also downloads the vendored scripts and assembles the example tables pinned in resources/vendor.json (a few hundred megabytes on a fresh checkout). Run npm run vendor to restore them later, or node scripts/fetch-vendor.mjs --check to verify them without downloading.
npm startLaunches the desktop app in development mode with hot reload.
npm run dev:webLaunches the web version in development mode with hot reload.
npm run makeCreates distributable packages for the current platform:
| Platform | Format | Architecture |
|---|---|---|
| macOS | DMG, ZIP | arm64 |
| Linux | DEB, RPM, Flatpak, ZIP | x64 |
| Windows | Squirrel Installer, ZIP | x64 |
If you have issues building the flatpak try this first:
flatpak --user remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepoTo get more output during the flatpak build:
DEBUG=electron-installer-flatpak,@malept/flatpak-bundler npm run makenpm run build:webCreates a production web build in dist-web/.
npm run typechecknpm run formatsrc/
├── desktop/ # Electron main process
│ └── mcp/ # MCP server, tools, and GLF/MPF library
├── web/ # Web entry point
├── platform/
│ ├── desktop/ # Desktop platform abstraction
│ └── web/ # Web platform abstraction
├── preload/ # Electron preload scripts
├── editor/ # Shared editor renderer
│ ├── components/
│ ├── meshes/
│ ├── parts/
│ └── undo/
├── features/ # Feature modules (managers, dialogs)
├── shared/ # Shared utilities
└── types/ # TypeScript definitions
docs/mcp/ # MCP setup and workflow guides
resources/vendor.json # Pinned upstream scripts and example tables
The tables under File > New are downloaded or assembled at install time from their upstream repositories and are the work of their original authors:
- VPW Example Tables (Basic, Example, and ROM Example, v1.7.x) by the VPin Workshop (VPW) team. Extracted copies are hosted at jsm174/vpw-example-tables; the tables remain the property of their authors, see the download page for terms.
- GLF Tutorial Plunger from the VPX Game Logic Framework (GLF) by mpcarr (MIT), built on a community base table by fuzzel, jimmyfingers, jpsalas, toxie, and unclewilly with contributions from zany, ninuzzu, rothbauerw, and arngrim.
- GLF Example Table by apophis and flux from mpcarr/vpx-example-glf (MIT).
- Blank, Example, and Light Sequence tables from Visual Pinball (GPL).
The bundled GLF framework script (vpx-glf.vbs) is also from mpcarr/vpx-glf (MIT). Exact pinned commits and checksums are in resources/vendor.json.
This project is licensed under the GNU General Public License v3.0 or later - see the LICENSE file for details.
This matches the license used by Visual Pinball.






