A frontend for vpinball with the following features:
- Works on Linux, Windows, Mac, and ARM (Windows must use Standalone dir structure)
- Multiscreen - Supports up to 3 screens (Backglass, DMD, and Table)
- Fully remote cabinet management
- Keyboard & Controller Input support
- Table and Media Manager (Auto download art via VPinMediaDB)
- Build custom table collections (VPS ID-based and filter-based)
- Automatic vpx patching for Linux & Mac
- Fully customizable UI theming using HTML, JS and CSS
- JSON-based table metadata with VPX file parsing and feature detection
- DOF Support using libdof-python
- Real DMD Support using libdmdutils-python ZeDMD, Pixelcade and PIN2DMD.
- Mobile transfer support for VPinball on Android and iOS (Web Send & VPXZ Download)
- VPinballX.ini config editor with backup/restore for multi-config enviroments
- Importing roms, pupacks, altcolor, and altsound.
- Optional online ratings, scoring and play tracking via VPin Play. The GitHub Project
Join us on VPC discord channel @ vpinfe
- A special thanks to @jsm174 for making VPX available to all these other platforms. He's also a great mentor. I learned a tremendous amount working with him on the vpx project and he is the epitome of the VPinball community.
- @MajorFrenchy is another great example of what the VPinball community is all about. He jumped in right away and provided invaluable testing and feedback. And we can't forget his great video on using VPinFE on the MAC! He also made the VPinFE logo and splash video! Thank you, thank you!!!
- Huge thanks to @Gonzonia for all his work on the Mac app bundle. This simply wouldn’t have happened without his knowledge and contributions.
- A big high five to @evilwraith for making the ARM build!
- A big thank you to all the hard work and dedication the VPS Team: (@Dux, @Fraesh and @Studlygoorite) has put into creating this great table finding resource! And they made it "open" so others can leverage it as they want.
- A big thank you to Pinball Primer for creating and sharing such a great rules and tutorial resource for the pinball community.
Youtube Playlist https://www.youtube.com/playlist?list=PLMRebAANedgX9YDbl0gte_ZgoYU9VQF8j
The install is the same for all platforms you need to download the right release for it. Currently there are two different builds available for each platform:
- A slim build (has slim in its name) is for people who already have chrome installed locally on there machine. (Recommend bundle)
- A fat build (no slim in its name and larger binary) that bundles chromium with VPinfe
The latest version can be downloaded from Releases.
Download the latest release and unzip it and then run:
cd vpinfe
./vpinfe
This is unsigned APP bundle so you need to do a few things to get VPinFE running. @MajorFrenchy has put together an excellent video on setting this up for the MAC here. He also has a written tutorial available at his site @ Major Frenchy's VPinFE on MacOS. If you are a MAC user this is best route to take. Watch the video and/or read the tutorial, and you'll be running quick.
The windows package has a vpinfe.bat file for launching it. Unless your in a terminal always use the batch file or you will end up window focus issues when using VPinFE. Either double click on it to launch or from the CLI:
cd vpinfe
vpinfe.bat
When you run VPinFE the first time it load into the ManagerUI. You need setup the minimum settings to get things to work.
The frist is the "display" panel. Its recommend you just start with one screen as its auto-configured.
Next you must configure these three essential settings in the [Settings] section:
- vpxbinpath - Full path to your VPinball executable (e.g.,
/home/user/vpinball/build/VPinballX_BGFX) - tablerootdir - Root directory where all your tables are located (e.g.,
/home/user/tables/) - vpxinipath - Path to your VPinballX.ini file (e.g.,
~/.vpinball/VPinballX.ini)
Once these are configured you can exit the ManagerUI by clicking the shutdown button in the UI (upper left area). Anytime you want to return to the ManagerUI look in the console for its webserver address. Its a line that looks like this:
NiceGUI ready to go on http://localhost:8001, and http://192.168.1.228:8001
Put that URL in a browser and your in the ManagerUI.
If you plan on using the Shutdown or Reboot option in the frontend or the remote page, some Linux systems need an explicit polkit rule so the VPinFE user can power off or reboot the machine without an interactive prompt.
Create /etc/polkit-1/rules.d/49-allow-poweroff.rules:
polkit.addRule(function(action, subject) {
if (
(
action.id == "org.freedesktop.login1.power-off" ||
action.id == "org.freedesktop.login1.power-off-multiple-sessions" ||
action.id == "org.freedesktop.login1.power-off-ignore-inhibit" ||
action.id == "org.freedesktop.login1.reboot" ||
action.id == "org.freedesktop.login1.reboot-multiple-sessions" ||
action.id == "org.freedesktop.login1.reboot-ignore-inhibit"
) &&
subject.user == "superhac"
) {
return polkit.Result.YES;
}
});Then restart polkit:
sudo systemctl restart polkitOn Kubuntu/KDE you may see journal lines about /run/polkit-1/rules.d or /usr/local/share/polkit-1/rules.d not existing right after the restart. Those are normal informational messages, not a shutdown failure by themselves.
Now that your vpinfe.ini file has the basics you need build the metadata. Your table folder names and layouts should follow the VPinball table organization standard.
Example of how your table directory should look:
superhac@linpin:~/tables$ ls -las
total 28
4 drwxrwxr-x 7 superhac superhac 4096 Feb 21 12:03 .
4 drwxr-x--- 23 superhac superhac 4096 Feb 21 14:49 ..
4 drwxrwxr-x 2 superhac superhac 4096 Feb 21 12:03 '24 (Stern 2009)'
4 drwxrwxr-x 2 superhac superhac 4096 Feb 21 12:09 'AC-DC LUCI Premium VR (Stern 2013)'
4 drwxrwxr-x 3 superhac superhac 4096 Feb 21 15:08 'American Graffiti (Original 2024)'
4 drwxrwxr-x 2 superhac superhac 4096 Feb 21 12:49 'Andromeda (Game Plan 1985)'
4 drwxrwxr-x 2 superhac superhac 4096 Feb 21 12:51 'Back To The Future - The Pinball (Data East 1990)'
Example of whats inside a table folder:
superhac@testrig:~/test/dof$ tree ~/tables/Hurricane\ \(Williams\ 1991\)/
/home/superhac/tables/Hurricane (Williams 1991)/
├── Hurricane Balutito MOD V2.directb2s
├── Hurricane Balutito MOD V2.vpx
├── Hurricane (Williams 1991).info
├── medias
│ ├── audio.mp3
│ ├── bg.png
│ ├── cab.png
│ ├── dmd.png
│ ├── flyer.png
│ ├── realdmd.png
│ ├── table.mp4
│ ├── table.png
│ └── wheel.png
└── pinmame
├── cfg
│ ├── default.cfg
│ └── hurr_l2.cfg
├── ini
│ └── hurr_l2.ini
├── nvram
│ └── hurr_l2.nv
└── roms
└── hurr_l2.zip
VPinFE will try to automatch your tables to VPSID's, but in the event it can't you will have to match it manually. Any table that is not matched shows up as a "UNMATCHED TABLE" in the UI:
Click on the unmatched tables button and walkthtough the dialogs. Once comleted the table will show in your tables list.
When VPinFE starts for the first time it opens the ManagerUI on the Configuration page. On later runs it remembers the last page you had open. The ManagerUI header also includes:
- Restart VPinFE to restart the frontend process
- Quit VPinFE to close the app
- Version and update status with direct install support when the running build supports in-app updates
The main navigation includes:
- Tables
- Collections
- Media
- Themes
- Mobile Uploader
- System
- Configuration
- Remote Control opens in a separate tab at
/remote
The Configuration page edits vpinfe.ini. Changes are only written when you click Save Changes.
Core startup and launch behavior:
- VPX Executable Path: main VPinball executable or app bundle used to launch tables
- VPX Launch Environment: optional environment variable overrides added only to VPX launches. Accepts
KEY=valuepairs, multiple lines, or semicolon-separated entries - Global ini Override: adds
-ini <path>to all VPX launches - Global tableini Override Enabled: enables masked per-table
-tableinilaunching - Global tableini Override Mask: builds
{TableName}.{mask}.inibeside the.vpxand uses it only when the file exists - Tables Directory: root folder scanned for tables, metadata, media, mobile transfer, and VPinPlay sync
- VPX Ini Path: path to your VPinballX ini file
- Active Theme: currently selected frontend theme
- Startup Collection: collection opened when VPinFE starts
- Auto Update Media On Startup: enables startup media refresh behavior
- Enable splashscreen: shows the frontend splash screen during startup
- Mute Frontend Audio: mutes frontend audio playback
- Hide Quit from MainMenu: hides the Quit item from the frontend main menu; saved as
Settings.MMhideQuitButtoninvpinfe.ini
The page also shows a VPinball Launch Command w/Options preview so you can verify the exact launch command and launch environment before saving.
Screen assignment and playfield layout:
- Playfield Monitor ID
- Backglass Monitor ID
- DMD Monitor ID
- Backglass Window Override (x,y,width,height): optional explicit bounds passed to themes
- DMD Window Override (x,y,width,height): optional explicit bounds passed to themes
- Playfield Orientation (Landscape/Portrait)
- Playfield Rotation (0/90/270)
- Cabinet Mode
The right side of the page lists detected displays so you can map IDs correctly. On macOS it also shows NSScreen coordinates used for window placement.
Gamepad button mappings stored in vpinfe.ini:
- Left
- Right
- Up
- Down
- Select
- Menu
- Back
- Tutorial
- Exit
- Collection Menu
Keyboard mappings are also stored in the same [Input] section using matching key* entries:
keyleftkeyrightkeyupkeydownkeyselectkeymenukeybackkeytutorialkeyexitkeycollectionmenu
These keyboard values apply only to the VPinFE frontend. They do not affect the Remote Control page. Each entry accepts a comma-separated list of browser key values or key codes such as ArrowLeft,ShiftLeft or Escape,q.
You normally set these from ./vpinfe --gamepadtest, but the values are visible and editable here.
Logging behavior:
- Log Verbosity: debug/info/warning/error/critical
- Console Logging: enables console log output
The Logs page also opens the current vpinfe.log and vpinball.log. VPinFE writes its own logs to the standard config directory and starts a fresh log file on each launch. The VPinball Log card can enable Settings.vpxlogdeleteonstart, which deletes vpinball.log before each frontend table launch. VPinFE resolves that log path from Settings.vpxinipath by using the directory that contains VPinballX.ini.
Default metadata/media behavior:
- Table Type: preferred media type family when downloading media
- Default Table Resolution
- Default Table Video Resolution
- Default Missing Media Image
- Thumbnail Cache Max (MB): cap for generated media thumbnails used by ManagerUI
Local service ports:
- Theme Server Port: media/theme asset server
- Manager UI Port: NiceGUI management interface
Saved defaults for the Mobile Uploader page:
- Mobile Device IP
- Mobile Device Port
- Mobile Chunk Size
- Enable Rename Mask To Default INI
- Rename Mask To Default INI Mask
When the rename-mask option is enabled for Web Send, VPinFE can send {VPX_FILENAME}.{MASK}.ini to the mobile device as {VPX_FILENAME}.ini.
Frontend DOF integration:
- Enable DOF: starts the bundled DOF runner for frontend events
- DOF Config Tool API Key: used by the online config sync helper
The page also includes:
- DOF Event Test: starts and stops a test event token like
E900orS27 - Online Config Tool: runs the bundled
ledcontrol_pull.pyhelper using your API key, with an optional force update
Real DMD output integration:
- libdmdutil Service: enables the bundled libdmdutil controller
- ZeDMDDevice: explicit ZeDMD device path
- ZeDMDWiFiAddr: ZeDMD network address
- PIN2DMD
- PixelcadeDevice
VPinFE currently uses the service enable flag plus the ZeDMD device/Wi-Fi settings directly. If both ZeDMD fields are blank, libdmdutil falls back to its own auto-detection behavior.
Experimental online metadata sync:
- API Endpoint: VPinPlay service base URL
- User ID
- Initials: uppercased in the UI and limited to 3 characters
- Machine ID: auto-generated if missing and read-only in the UI
- Sync on Exit: sends installed table metadata during shutdown when all required values are present
The page also provides:
- VPinPlay Home and Your Stats links
- Sync Installed Tables button that posts installed table metadata to the configured VPinPlay endpoint
The Tables page scans your tables root for folders that contain both a .vpx file and a matching .info file. It provides:
- Search by table name
- Filters for manufacturer, year, theme, type, and PUP Pack presence
- Multi-select with Select Page
- Batch Add to Collection
- Links to IPDB and VPS
- A PP pill that opens the Pinball Primer tutorial when the table has a
PinballPrimerTutlink - Badges for rating, collection membership, and per-table overrides
Header actions:
- Scan Tables opens the Build Metadata workflow
- Apply Patches runs standalone VPX patching across supported tables
- Unmatched Tables opens folders that have a
.vpxbut no.info - Import Table imports a new table package into your tables root
Build Metadata options:
- Update All Tables reparses tables even if
.infoalready exists - Download Media downloads media from VPinMediaDB while building metadata
When a matching https://pinballprimer.github.io/ tutorial exists in VPSdb, VPinFE also writes Info.PinballPrimerTut into the table's .info file during metadata generation.
Clicking a table opens a detail dialog with:
- Table information from
.info - Detected feature flags such as nFozzy, Fleep, SSF, LUT, ScoreBit, FastFlips, and Flex
- Addon detection for PupVideos, Serum, VNI, and AltSound
- Editable Rating
- Collection membership management
- Per-table overrides:
- Alt Title
- Alt VPS ID
- Alt Launcher
- FrontendDOFEvent
- Delete NVRAM on close
- Addon upload tools:
- PUP packs as
.zip - Serum
.cRZ - VNI
.vniand.pal - AltSound files
- PUP packs as
- Rebuild Meta for that single table
The Unmatched Tables dialog lets you:
- Search VPS by name
- Associate a table folder with a VPS entry
- Optionally rename the folder to
Table Name (Manufacturer Year) - Either download media from VPinMediaDB or claim your existing local media as user-owned
The Import Table dialog lets you:
- Choose a VPS entry first
- Upload a required
.vpx - Optionally upload
.directb2s, ROM.zip, PUP pack.zip, and music.zip - Create the table folder, generate metadata, copy/extract uploaded files, and download media
VPinFE includes a built-in Pinball Primer tutorial overlay for tables that have Info.PinballPrimerTut in their .info metadata.
- Press
ton the keyboard to open or close the tutorial overlay - The keyboard defaults come from
[Input]key*mappings invpinfe.ini - You can also map a controller button to Tutorial /
joytutorial - The overlay uses the built-in
#overlay-rootsystem, so it does not require any theme changes - Tutorials are loaded through a local Pinball Primer proxy so they can be displayed inside VPinFE reliably
Tutorial overlay controls:
- Up or Left scroll up
- Down or Right scroll down
- Back closes the overlay
- t closes the overlay
The Collections page manages both collection types used by VPinFE:
- Table collections: explicit VPS ID lists
- Filter collections: dynamic collections based on metadata filters
Supported collection filters:
- Starting letter
- Theme
- Table type
- Manufacturer
- Year
- Rating
- Rating or higher
- Sort by alpha, newest, last run, start count, or runtime
- Order by descending or ascending
From this page you can:
- Create, edit, rename, and delete collections
- Search installed tables and add them to a table collection
- Edit filter rules for filter collections
- See collection contents directly in the list
The Media page scans each table folder and shows which standard media assets are present. Supported media keys are:
- BG
- DMD
- Table
- FSS
- Wheel
- Cab
- Flyer
- Real DMD
- Real DMD Color
- Table Video
- BG Video
- DMD Video
- Audio
Features on this page:
- Search by table name
- Filters for manufacturer, year, theme, and type
- Missing-media filters per media type
- Generated image thumbnails with on-demand caching
- Click any media cell to replace that asset for the selected table
Replacement behavior:
- New files are written to the table's
medias/folder using the standard VPinFE filename - The table's
.infomedia entry is updated as user media - The cached media listing refreshes immediately
The Themes page loads the remote theme registry and compares it to locally installed themes. It shows:
- Preview image
- Theme name, author, description, version, and supported screen count
- Theme type: desktop, cab, or both
- Whether the theme is built-in, installed, active, or has an update available
- Optional change log text when a new version exists
Actions:
- Refresh Registry
- Install
- Update
- Set as Active which writes
Settings.themeand restarts VPinFE - Delete for non-default themes
The Mobile Uploader page has two tabs.
Web Send
Uses the built-in web server in the mobile VPX app on Android/iOS. VPinFE can:
- Save the target device IP/port/chunk size in
vpinfe.ini - Check the device and compare which table folders are already installed
- Filter to Show Installed Only
- Send a single table or Send Selected for multiple tables
- Delete a table from the mobile device
- Request a mobile-side table refresh after uploads or deletes
Send options:
- Exclude {VPX_FILENAME}.ini files prevents sending table-specific default ini files
- Enable Rename Mask To Default INI can copy
{VPX_FILENAME}.{MASK}.inito the mobile device as{VPX_FILENAME}.ini
VPXZ Download
Creates a .vpxz archive from an installed table folder and downloads it from the ManagerUI.
The System page shows live host metrics and build information:
- CPU utilization
- Memory utilization
- Free disk space for the monitored tables/config volume
- Hostname and OS details
- Build flavor and release target
- Frontend browser name, version, and path
- Last refresh timestamp
On Linux, it also supports optional GPU Monitoring using nvtop. When enabled it shows:
- GPU utilization
- Device name
- Temperature
- Power draw
- GPU and memory clocks
- Fan speed
- Per-device metrics when multiple GPUs are present
The Remote Control page is available from the left nav and directly at /remote. It uses the configured VPX and PinMAME key mappings through the internal key simulator.
Modes:
- VPX Maintenance
- Reset
- Quit
- Volume up/down
- Toggle stereo
- In-game UI navigation
- Debugger
- Debug balls
- Performance overlay
- VPX Game
- Start
- Pause
- Quit
- Show Rules
- Extra Ball
- Lockbar / Fire
- Credit 1-4
- Launch Table picker with collection filter and search
- PinMAME
- Coin Door
- Up/Down
- Enter/Cancel
- Service 1-8
- VPinFE
- Restart VPinFE
- Reboot system
- Shutdown system
Remote table launch behavior:
- Uses
Settings.vpxbinpathunless the table has a per-table Alt Launcher - Applies
Settings.globalinioverrideand masked-tableinioverrides when configured - Applies
Settings.vpxlaunchenvenvironment overrides - Stops DOF and libdmdutil before launching
- Restarts DOF after the launched process exits
The page also includes a Virtual Keyboard dialog for sending manual key presses.
On X11, the remote page can inject keys using the existing keyboard backend. On Wayland compositors such as Hyprland, synthetic key input usually requires ydotool.
VPinFE will automatically detect Wayland and switch the remote key simulator to ydotool when it is available. For a cabinet-style setup, the most reliable approach is to run ydotoold as a system service with a shared socket path.
- Install
ydotool. - Create
/etc/systemd/system/ydotoold.servicewith:
[Unit]
Description=ydotool daemon
After=systemd-udevd.service
Wants=systemd-udevd.service
[Service]
Type=simple
ExecStart=/usr/bin/ydotoold --socket-path=/run/ydotool/socket --socket-own=0:0 --socket-perm=0666
Restart=always
RestartSec=1
RuntimeDirectory=ydotool
[Install]
WantedBy=multi-user.target- Reload systemd and start the service:
sudo systemctl daemon-reload
sudo systemctl enable --now ydotoold.service
sudo systemctl status ydotoold.serviceNotes:
- The
inputgroup is not required for the user running VPinFE whenydotooldis running asrootand owns/dev/uinput. 0666on the socket is convenient for a dedicated pinball cabinet, but it allows any local process to inject input throughydotool.- If you prefer tighter security, reduce the socket permissions and grant access only to the user or group that launches VPinFE.
- VPinFE looks for
YDOTOOL_SOCKETfirst, then checks/run/user/<uid>/.ydotool_socket,/run/ydotool/socket, and/tmp/.ydotool_socket.
On some Kubuntu / KDE Wayland systems, ydotoold may work more reliably when bound directly to /tmp/.ydotool_socket. If ydotoold starts but ydotool key ... still fails until you point it at /tmp/.ydotool_socket, use this service instead:
[Unit]
Description=ydotool daemon
After=systemd-udevd.service
Wants=systemd-udevd.service
[Service]
Type=simple
ExecStart=/usr/bin/ydotoold --socket-path=/tmp/.ydotool_socket --socket-own=0:0 --socket-perm=0666
ExecStartPost=/usr/bin/chmod 666 /tmp/.ydotool_socket
Restart=always
RestartSec=1
[Install]
WantedBy=multi-user.targetAfter changing the unit, reload and restart it:
sudo systemctl daemon-reload
sudo systemctl restart ydotoold.service
sudo journalctl -u ydotoold.service -bYou can then verify the socket manually with:
YDOTOOL_SOCKET=/tmp/.ydotool_socket ydotool key 28:1 28:0| Action | Key |
|---|---|
| Left or Up | Shift left |
| Right or Down | Shift Right |
| Menu | m |
| Collections Menu | c |
| Select | Enter |
| Quit | q or ESCAPE |
VPinFE includes an interactive gamepad configuration tool that makes mapping your controller buttons easy. Run the gamepad test with:
./vpinfe --gamepadtest
The gamepad configuration interface provides:
Button Tester - Real-time visual feedback showing which buttons are being pressed on your gamepad (numbered 0-16)
Interactive Button Mapping - Click on any mapping card (Left, Right, Up, Down, Select, Menu, Back, Tutorial, Exit, Collection Menu), then press the corresponding gamepad button to assign it. The mapping is automatically saved to your vpinfe.ini file.
Visual Workflow:
- Click a mapping card (e.g., "Left") - it will highlight with an orange pulsing glow
- Press the desired button on your gamepad
- A green success message confirms the mapping
- The button number is saved to
vpinfe.iniimmediately
Press ESC to exit the gamepad configuration tool when you're done mapping your buttons.
VPinFE includes two bundled integrations in its release distributions:
- DOF for cabinet output events such as feedback devices and toys
- libdmdutil for sending the table's real DMD image to supported external DMD hardware
They are fetched during the GitHub build workflow and packaged into the distributed app under third-party/dof and third-party/libdmdutil. You can leave either integration disabled in vpinfe.ini, but the supporting files are included with the release builds.
Release builds already include the DOF files in third-party/dof. If you are running from source or want to refresh the bundled files locally, use:
./scripts/fetch_dof_bundle.shYou can also point VPinFE at a custom DOF bundle location by setting VPINFE_DOF_DIR.
Enable DOF in the ManagerUI under the DOF section, or in vpinfe.ini:
[DOF]
enabledof = true
dofconfigtoolapikey =Notes:
- VPinFE starts the DOF runner automatically when
enabledof = true. - The ManagerUI includes a DOF Event Test panel where you can send event tokens like
E900orS27. - If you use the VPUniverse online config tool, put your API key in
dofconfigtoolapikeyand use the Update DOF via Online Config Tool button. That uses the bundledledcontrol_pull.pyhelper from the DOF package.
Release builds already include the libdmdutil files in third-party/libdmdutil. If you are running from source or want to refresh the bundled files locally, use:
./scripts/fetch_libdmdutil_bundle.shYou can also override the lookup path with VPINFE_LIBDMDUTIL_DIR.
Enable it in the ManagerUI under the libdmdutil section, or in vpinfe.ini:
[libdmdutil]
enabled = true
pin2dmdenabled = false
pixelcadedevice =
zedmddevice =
zedmdwifiaddr =Notes:
- VPinFE loads
libdmdutil_wrapper.pyfrom the bundled package whenenabled = true. - If
zedmddeviceis set, VPinFE connects to that device path first. - If
zedmddeviceis blank andzedmdwifiaddris set, VPinFE connects over Wi-Fi instead. - If both are blank, libdmdutil falls back to its default auto-detection behavior.
pin2dmdenabledandpixelcadedeviceare preserved invpinfe.inifor libdmdutil-related configuration, even though VPinFE currently only uses the ZeDMD device and Wi-Fi address fields directly.
options:
-h, --help show this help message and exit
--listres ID and list your screens
--listmissing List the tables from VPSdb
--listunknown List the tables we can't match in VPSdb
--configfile CONFIGFILE
Configure the location of your vpinfe.ini file. Default is cwd.
--buildmeta Builds the meta.ini file in each table dir
--vpxpatch Using vpx-standalone-scripts will attempt to load patches automatically
--gamepadtest Testing and mapping your gamepad via js api
--headless Run web servers/services only, skip the Chromium frontend
--claim-user-media Bulk mark existing media files as user-sourced so they won't be overwritten by vpinmediadb
--no-media When building meta.ini files don't download the images at the same time.
--update-all When building meta.ini reparse all tables to recreate the meta.ini file.
--user-media With --buildmeta: skip vpinmediadb downloads and claim existing local media as user-sourced
--table TABLE Specify a single table folder name to process with --buildmeta or --claim-user-media
There are three server listeners started on your machine:
| Service | Bound Address/Port | Description |
|---|---|---|
| HTTP | 127.0.0.1:RANDOM | Frontend web asset server (themes/UI content) |
| HTTP | 127.0.0.1:8000 | Python HTTPServer. Serves tables media assets (configurable) |
| HTTP | 0.0.0.0:8001 | NiceGui sever. Handles the UI for configuration and management (configurable) |
The only service that externally accessable from your machine its UI for managing it. This is setup like this so people with cabinets can administer it remotely.
External Web Endpoints:
- Table/VPX Configuration and Management: http://{YOUR-IP}:8001
- Remote Control: http://{YOUR-IP}:8001/remote
- Mobile Uploader: http://{YOUR-IP}:8001/mobile
VPinFE includes an experimental VPINPlay integration for syncing your installed table metadata and usage stats to the VPinPlay service.
- Main site: vpinplay.com
- API default:
https://api.vpinplay.com:8888 - ManagerUI config page:
vpinplaysection in VPinFE Configuration
See Theme Doc