A universal desktop app that contains multiple tools to ease the customization and configuration of Power Platform
This repo is an open-source project that provides a code for a Power Platform Tool Box (PPTB)
Important
macOS users: If you see a "damaged" or "unidentified developer" warning after installation, run the following command in the terminal to mark the app as safe:
xattr -cr "/Applications/Power Platform Tool Box.app"
- Known Issues
- Features Overview
- Architecture
- Security Model
- Tool Development
- ToolBox development
- Dataverse Connections
- Releases & Downloads
- Auto-Updates
- Documentation
- Discussions
- License
- Contributing
- Auto-Update does not work for macOS users as it needs Apple Developer Id (still working through that process)
- 🔧 Tool Management: Install and manage external tools built by 3rd parties via npm
- 🔒 Secure Tool Host: VS Code Extension Host-inspired architecture for isolated tool execution
- 🛡️ Per-Tool CSP: Content Security Policy configuration with user consent for external resource access
- 🔗 Dataverse Connections: Create and manage connections to Dataverse environments
- ⚙️ Settings Management:
- User settings for the ToolBox application
- Individual tool-specific settings
- 🎨 Modern Interface: Built with Microsoft Fluent UI components for a consistent, accessible experience aligned with Power Platform
- 📡 Event-Driven API: ToolBox provides its own APIs that emit events
- 🔔 Notifications: Built-in notification system to keep users informed
- 🔄 Auto-Updates: Automatic application updates with user control
The application uses a robust Tool Host architecture inspired by VS Code's Extension Host.
See ARCHITECTURE.md for more information.
- Process Isolation: Each tool runs in a separate Node.js process
- Structured IPC: All communication via validated message protocol
- Limited API Surface: Tools only access specific ToolBox APIs
- No Direct Access: Tools cannot access file system, Electron APIs, or other tools
- Per-Tool CSP: Tools request specific Content Security Policy exceptions with user consent (see CSP Configuration)
Power Platform Tool Box uses a secure, extensible Tool Host architecture that allows developers to create custom tools as npm packages. Tools run in isolated processes and communicate with the ToolBox through a secure API.
See TOOL_DEV.md for the complete guide on creating tools.
Check out the sample-tools repository for complete, ready-to-use examples demonstrating different frameworks:
- HTML/TypeScript Sample - Basic HTML with TypeScript
- React Sample - React 18 with Vite and TypeScript
- Vue Sample - Vue 3 with Composition API
- Svelte Sample - Svelte 5 with TypeScript
See TOOLBOX_DEV.md for the complete guide on creating tools.
Users can install tools directly from the application:
- Navigate to the Tool Marketplace within the app
- Search for the tool and click on
Installbutton on the tool - The tool will be installed, loaded, and activated automatically
- Each tool runs in an isolated Node.js process
- Tools communicate with ToolBox via secure IPC protocol
- Tools only have access to the
Power Platform Tool BoxAPI - No direct access to file system, Electron, or Node.js APIs
Create connections to Dataverse environments:
- Navigate to "Connections" tab
- Click "Add Connection"
- Follow the prompt
Power Platform Tool Box releases are published on GitHub:
- Stable Releases: Published when PRs are merged to the
mainbranch - Nightly Builds: Pre-release builds from the
devbranch (built daily if there are new commits)
Visit the Releases page to download:
- Windows:
.exeinstaller - macOS:
.dmginstaller
The application supports automatic updates to keep your ToolBox up to date:
- Navigate to "Settings" tab
- Check the "Auto Update" checkbox
- The application will automatically check for updates every 6 hours
- Navigate to "Settings" tab
- Click "Check for Updates" button
- If an update is available, you'll be prompted to download it
- Once downloaded, restart the application to install the update
- Updates are downloaded in the background
- You control when to install updates
- Updates are published via GitHub releases
- The application checks for updates on startup (if auto-update is enabled)
- ARCHITECTURE.md - Application architecture overview
- TOOLBOX_DEV.md - Getting started with Tool Box development process
- TOOL_DEV.md - Complete guide for tool developers
- ICON_GUIDELINES.md - Application icon requirements and best practices
- Sample Tools Repository - Working examples of tools using different frameworks
- PORTING_XTB_TOOLS.md - Comprehensive guide for porting XrmToolBox tools to PPTB (recommended approach)
- PORTING_DLL_TO_WASM.md - Minimal-effort porting using WebAssembly/Blazor to reuse .NET DLLs
- PORTING_QUICK_START.md - Quick reference for XTB tool porting
- ADR_PORTING_STRATEGY.md - Technical rationale for porting strategy decision
- FetchXML Builder Sample - Example of a ported XTB tool
If you want to have any discussions on any feature, please use the Discussion Board.
This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.
Contributions are welcome! Please see CONTRIBUTING.md for guidelines on how to contribute to the project.
If you wish to offical be part of the team, please reach out to one of the listed contributor below for onboarding.
Offical Team (emoji key):
This project follows the all-contributors specification. Contributions of any kind welcome!