orchestra-mcp / panels
Orchestra MCP Panels — Electron BrowserWindow management with driver-based panel registry, open/close/focus/resize/move, position persistence, and MCP tools
Fund package maintenance!
fadymondy
Installs: 29
Dependents: 4
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/orchestra-mcp/panels
Requires
- php: ^8.2
- laravel/mcp: ^0.1|^0.5
- orchestra-mcp/desktop: v0.0.1
- orchestra-mcp/plugins: v0.0.1
Requires (Dev)
- carthage-software/mago: ^1.0
- laravel/pint: ^1.24
- orchestra/testbench: ^10.0
- pestphp/pest: ^3.0|^4.0
- pestphp/pest-plugin-laravel: ^3.0|^4.0
This package is auto-updated.
Last update: 2026-02-11 13:18:51 UTC
README
Panels
Orchestra MCP Panels plugin — Electron BrowserWindow management with a driver-based architecture, panel registry, position/size persistence, and MCP tools.
Features
- Driver Pattern — Swappable panel backends:
NativePanelDriver(NativePHP Window),NullPanelDriver(no-op for testing), or auto-detection - Panel Registry — Register panel definitions with full BrowserWindow configuration (dimensions, position, behavior flags)
- Base Panel Layout — Shared Blade layout (
panels::layouts.panel) with automatic live theme injection for all windows - Window Management — Open, close, focus, minimize, maximize, restore, resize, and move panels programmatically
- 5 Events —
PanelOpened,PanelClosed,PanelFocused,PanelResized,PanelMoved - Plugin Integration — Plugins implement
HasPanelsto contribute panel definitions - Desktop Integration — Implements
HasNativeBootCallbacksfor automatic panel boot via the desktop package - 4 MCP Tools — List, info, open, and close panels
Installation
composer require orchestra-mcp/panels php artisan orchestra:desktop-install
The service provider is auto-discovered. The install command (from the desktop package) publishes the config and creates the NativeAppServiceProvider. Then publish the panels config:
php artisan vendor:publish --tag=orchestra-panels-config
Quick Start
Register a Panel
use OrchestraMcp\Panels\Data\PanelDefinition; use OrchestraMcp\Panels\Facades\Panels; Panels::register(new PanelDefinition( id: 'settings', title: 'Settings', url: '/settings', width: 800, height: 600, ));
Open a Panel
Panels::open('settings');
Close a Panel
Panels::close('settings'); Panels::closeAll(); // close all open panels
Contribute Panels from a Plugin
use OrchestraMcp\Panels\Contracts\HasPanels; use OrchestraMcp\Panels\Data\PanelDefinition; use OrchestraMcp\Plugins\Plugin\Plugin; class MyPlugin extends Plugin implements HasPanels { public function panels(): array { return [ new PanelDefinition( id: 'my-plugin-panel', title: 'My Plugin', url: '/my-plugin', width: 640, height: 480, ), ]; } }
MCP Tools
| Tool | Annotation | Description |
|---|---|---|
panel-list |
#[IsReadOnly] |
List registered panels with open/closed status |
panel-info |
#[IsReadOnly] |
Get panel definition and runtime state |
panel-open |
#[IsIdempotent] |
Open a registered panel |
panel-close |
#[IsIdempotent] |
Close an open panel or all panels |
Artisan Commands
| Command | Description |
|---|---|
make:panel |
Generate a new panel definition class |
orchestra:panels-status |
Show panel service status, driver, registered/open panels |
Configuration
Publish the config:
php artisan vendor:publish --tag=orchestra-panels-config
| Key | Default | Env Variable | Description |
|---|---|---|---|
enabled |
true |
ORCHESTRA_PANELS_ENABLED |
Enable/disable panels plugin |
driver |
'auto' |
ORCHESTRA_PANELS_DRIVER |
Driver: 'auto', 'native', 'null' |
default_width |
800 |
— | Default panel width |
default_height |
600 |
— | Default panel height |
marketplace |
false |
— | Marketplace visibility |
Documentation
Full documentation is available in the docs/ directory:
- Getting Started — Installation, configuration
- Architecture — Driver pattern, services, plugin integration
- Contracts — PanelDriverInterface, HasPanels
- Data — PanelDefinition, PanelState DTOs
- Events — Event reference
- Tools — MCP tool reference
- Commands — Artisan command reference
- Configuration — Full config key reference
- API Reference — Facades, services, registry
Development
# Install dependencies composer install # Run tests composer test # Format code composer format # Static analysis composer check # Lint composer lint
License
MIT
