The official cross-platform desktop application for browsing and monitoring I3X (Industrial Information Interface eXchange) API servers. Similar to MQTT Explorer but for the I3X protocol.
- Connect to any I3X-compliant server (auto-detects v0, v1-beta, and v1 wire formats)
- Three browse views in one tree:
- Namespaces → Object Types → Object Instances
- Objects (flat list of every instance the server exposes)
- Hierarchy (parent/child structure, with one root per upstream server when fronting a wrapper)
- Inline filter bar pinned at the top of the tree; deep matches surface their ancestor namespaces, types, and hierarchy parents so they stay visible
- Tree scrolls horizontally for long/deeply-nested labels, and the whole tree panel collapses/expands via the toolbar's panel-toggle button
- Top-level folders auto-expand on search so matches are visible without manual clicks
- Object counts at every level — folders, namespaces, types, and hierarchy nodes
- Authoritative chevron state: branches that have no expandable children don't show a chevron, even when the underlying object claims to be compositional
- View object details, metadata, schema extensions, and current values — with a Parsed/Raw toggle to inspect the raw HTTP response, and a copy-to-clipboard icon on every JSON view
- Relationship graph for non-compositional relationships; click any node to navigate directly to it in the tree; hover to see full names. The graph sizes to its content and stays centered
- Subscribe to objects for real-time updates via SSE (with polling fallback) and a trend chart for numeric values; subscriptions auto-recover transparently if the server expires them
- Global object search modal (⌘K / Ctrl+K) that navigates and expands to any match by name or elementId
- Tree auto-refresh: expanding a branch re-fetches from the server; 30s background poll keeps expanded branches current
- Light and dark theme with toggle button (follows OS preference by default)
Download the latest release for your platform:
| Platform | Download |
|---|---|
| macOS (Apple Silicon) | i3X Explorer-x.x.x-mac-arm64.dmg |
| macOS (Intel) | i3X Explorer-x.x.x-mac-x64.dmg |
| Windows (64-bit) | i3X Explorer-x.x.x-win-x64.exe |
| Windows (32-bit) | i3X Explorer-x.x.x-win-ia32.exe |
| Windows (Portable) | i3X Explorer-x.x.x-portable.exe |
| Linux (x64) | i3X Explorer-x.x.x-linux-x86_64.AppImage |
| Linux (ARM64) | i3X Explorer-x.x.x-linux-arm64.AppImage |
chmod +x "i3X Explorer-x.x.x-linux-x86_64.AppImage"
./"i3X Explorer-x.x.x-linux-x86_64.AppImage"Ubuntu 22.04+ / Debian: AppImages require FUSE 2, which is not installed by default on newer distributions. If the AppImage fails to launch, install the required library:
sudo apt install libfuse2Optionally, consider using AppImageLauncher to integrate into your Launcher.
- Node.js 18+ (recommend using nvm)
- npm
# Clone the repository
git clone https://github.com/cesmii/I3X-Explorer.git
cd I3X-Explorer
# Use correct Node version
nvm use 20
# Install dependencies
npm install
# Generate app icons (requires ImageMagick: brew install imagemagick)
./scripts/generate-icons.sh build/icon-1024.png
# Start Electron app in development mode (with hot reload)
npm run devYou can also run just the React UI in a browser without Electron, which is useful for quick testing or development:
npx viteThis starts a Vite dev server at http://localhost:5173/ where you can access the full UI in your browser.
Note: The best environment to build for all platforms is a modern macOS, however to sign the Windows binaries, you will have to build on Windows.
# Best way to build (mac/linux/web/all)
./scripts/build-all.sh [mac|win|linux|web|all]
# Manually Build for current platform
npm run build
# Manually Build Platform-specific
npm run build:mac # macOS (Intel + Apple Silicon)
npm run build:win # Windows (x64, x86, portable) — unsigned
npm run build:linux # Linux (AppImage x64 + ARM64)
npm run build:web # Web (static files → dist-web/)
npm run build:all # All platformsBuild artifacts are output to release/{version}/. The web build produces a i3x-explorer-{version}-web.zip ready to extract on any static web server.
Note:
build-all.sh winandnpm run build:winproduce unsigned Windows builds. For signed Windows builds (required to suppress SmartScreen), use the dedicated PowerShell script on a Windows machine — see Windows Signing below.
The web build (./scripts/build-all.sh web) produces a dist-web/ directory of static files that can be served by any web server (nginx, Apache, Caddy, S3, etc.).
On first visit (before the user has saved any settings), the app fetches config.json from the same directory as index.html. You can use this to point users at your server automatically instead of having them type a URL.
Create a config.json alongside index.html on the web server:
{
"serverUrl": "https://your-i3x-server.example.com/v1",
"recentUrls": [
"https://your-i3x-server.example.com/v1",
"https://api.i3x.dev/v1"
]
}| Field | Description |
|---|---|
serverUrl |
Pre-fills the Server URL field in the connection dialog |
recentUrls |
Pre-populates the Recent Connections list |
config.json is only applied on a user's first visit. Once they have saved settings in their browser, config.json is ignored — their local preferences take priority.
The default config.json shipped in dist-web/ points at https://api.i3x.dev/v1. Replace it (or delete it) as needed for your deployment.
If your server has the repo cloned and uses scripts/deploy-web.sh to build and serve the app, create a config.local.json at the root of the repo. The deploy script copies it over dist-web/config.json automatically after each build, so it survives rebuilds without being committed to git:
# On the server, create once:
cat > /home/cesmii/repos/i3X-Explorer/config.local.json <<'EOF'
{
"serverUrl": "https://your-i3x-server.example.com/v1",
"recentUrls": ["https://your-i3x-server.example.com/v1"]
}
EOF
# Then rebuild:
sudo systemctl restart i3x-explorer-webTo produce notarized macOS builds (required for arm64 downloads to open without a "app is damaged" error), you need an Apple Developer account and a Developer ID Application certificate in your keychain.
-
Create the certificate — Xcode → Settings → Accounts → your Apple account → Manage Certificates →
+→ Developer ID Application -
Create an app-specific password at appleid.apple.com → Sign-In and Security → App-Specific Passwords
-
Find your Team ID at developer.apple.com/account (top-right, 10 characters)
-
Create
scripts/set-apple-vars.sh(this file is git-ignored):export APPLE_ID="you@example.com" export APPLE_APP_SPECIFIC_PASSWORD="xxxx-xxxx-xxxx-xxxx" export APPLE_TEAM_ID="XXXXXXXXXX"
-
Build —
./scripts/build-all.sh macwill source the file automatically and notarize both Intel and Apple Silicon DMGs.
If set-apple-vars.sh is absent or the env vars are unset, the build completes unsigned with a warning.
To produce signed Windows builds (which fully suppress the SmartScreen "Unknown publisher" warning), run on a Windows machine:
.\scripts\build-sign-win.ps1This script builds the app, generates icons, and signs all .exe files using Azure Trusted Signing. It requires:
- ImageMagick installed and on PATH
winget install -e --id ImageMagick.ImageMagickfrom PowerShell
- Windows Developer Mode enabled (or run as Administrator)
- Azure Trusted Signing credentials in
scripts\set-azure-vars.ps1(git-ignored)- See WINDOWS-SIGNING.md for full Azure setup instructions.
If you don't have signing set up, unsigned builds still work — users just need to click More info → Run anyway in the SmartScreen dialog.
macOS / Linux (requires ImageMagick: brew install imagemagick):
./scripts/generate-icons.sh /path/to/your/icon.pngWindows (requires ImageMagick for Windows):
.\scripts\generate-icons.ps1 path\to\your\icon.pngBoth scripts write to build/ and are called automatically by the respective build scripts. After updating icons, rebuild the app.
- Launch i3X Explorer
- Enter the server URL (default:
https://api.i3x.dev/v1) - Click Connect
- Browse the tree to explore namespaces, object types, and objects
- Click any object to view its details and current value
- Click Subscribe on an object to monitor real-time updates
- Use the bottom panel to manage subscriptions and view live values
- Electron - Cross-platform desktop framework
- React - UI library
- TypeScript - Type-safe JavaScript
- Vite - Build tool with hot reload
- Tailwind CSS - Utility-first styling
- Zustand - Lightweight state management
MIT License - see LICENSE for details.