Skip to content

PyPLECS Web GUI Guide

Complete guide to the PyPLECS web monitoring interface.


Overview

The PyPLECS Web GUI provides a browser-based interface for:

  • πŸ“Š Real-time monitoring of simulation queue and status
  • πŸš€ Submit simulations with parameter configuration
  • πŸ’Ύ Cache management with statistics and controls
  • πŸ“ˆ Performance analytics and speedup tracking
  • βš™οΈ Configuration editing (planned)
  • πŸ“‘ Live updates via WebSocket

Built with FastAPI, Jinja2, and modern web technologies.


Table of Contents


Getting Started

Starting the Web GUI

# Method 1: Entry point (recommended)
pyplecs-gui

# Method 2: Direct module
python -m pyplecs.webgui

# Method 3: Python script
python start_webgui.py

# Custom port
pyplecs-gui --port 5001

# Custom host (bind to all interfaces)
pyplecs-gui --host 0.0.0.0

Expected output:

INFO:     Started server process
INFO:     Waiting for application startup.
INFO:     Application startup complete.
INFO:     Uvicorn running on http://0.0.0.0:5000

Accessing the Interface

Open your browser to: http://localhost:5000

Supported Browsers: - βœ… Chrome/Chromium (recommended) - βœ… Firefox - βœ… Edge - βœ… Safari - ⚠️ Internet Explorer (not supported)

First Time Setup

  1. Start PLECS with XML-RPC enabled
  2. PLECS > Preferences > Remote Control > Enable
  3. Default port: 1080

  4. Run setup wizard (if not done already)

    pyplecs-setup
    

  5. Start Web GUI

    pyplecs-gui
    

  6. Open browser to http://localhost:5000

You should see the dashboard with system status.


Dashboard

The main dashboard provides at-a-glance monitoring.

Layout

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  PyPLECS Dashboard                     [Status] β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                 β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”β”‚
β”‚  β”‚  Queue     β”‚  β”‚   Cache    β”‚  β”‚  System    β”‚β”‚
β”‚  β”‚  Status    β”‚  β”‚   Stats    β”‚  β”‚  Info      β”‚β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜β”‚
β”‚                                                 β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”β”‚
β”‚  β”‚        Active Simulations (Real-time)       β”‚β”‚
β”‚  β”‚  [====================>        ] 75%        β”‚β”‚
β”‚  β”‚  Task: abc123... | Running | 7.5s elapsed   β”‚β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜β”‚
β”‚                                                 β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”β”‚
β”‚  β”‚          Recent Completions                 β”‚β”‚
β”‚  β”‚  βœ… Task def456... | Completed | 8.2s       β”‚β”‚
β”‚  β”‚  βœ… Task ghi789... | Completed | 7.9s       β”‚β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜β”‚
β”‚                                                 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Widgets

Queue Status Card

  • Pending: Tasks waiting in queue
  • Running: Currently executing simulations
  • Completed: Successfully finished tasks
  • Failed: Tasks that encountered errors
  • Avg Duration: Average simulation time

Example:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Queue Status    β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Pending:     5   β”‚
β”‚ Running:     2   β”‚
β”‚ Completed: 1523  β”‚
β”‚ Failed:     12   β”‚
β”‚ Avg: 8.5s        β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Cache Stats Card

  • Hit Rate: Percentage of cache hits
  • Total Entries: Number of cached simulations
  • Disk Usage: Cache storage size
  • Speedup: Performance improvement from caching

Example:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Cache Stats     β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Hit Rate: 76.1%  β”‚
β”‚ Entries:  2001   β”‚
β”‚ Size:    145 MB  β”‚
β”‚ Speedup:  5.2x   β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

System Info Card

  • PLECS: Connection status
  • Version: PyPLECS version
  • Uptime: Server uptime
  • CPU Cores: Available cores for parallelization

Example:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  System Info     β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ PLECS: Connected β”‚
β”‚ Version: 1.0.0   β”‚
β”‚ Uptime: 1h 23m   β”‚
β”‚ Cores: 4         β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Real-Time Updates

Dashboard updates automatically via WebSocket: - ⚑ Live progress bars for running simulations - πŸ”„ Auto-refresh queue statistics - πŸ“Š Instant updates when simulations complete

Status indicators: - 🟒 Green: Healthy, PLECS connected - 🟑 Yellow: Warning, high queue depth - πŸ”΄ Red: Error, PLECS disconnected


Simulations Page

Submit and manage simulations.

Submit New Simulation

Form Fields:

  1. Model File (required)
  2. Path to .plecs file
  3. Can be absolute or relative to working directory
  4. Autocomplete suggests recent models

  5. Parameters (optional)

  6. JSON format: {"Vi": 12.0, "Vo": 5.0, "fsw": 100000}
  7. Or key-value editor:

    Vi:  12.0
    Vo:  5.0
    fsw: 100000
    

  8. Output Variables (optional)

  9. Comma-separated: Vo, IL, Iin
  10. Leave empty to return all variables

  11. Priority (optional, default: NORMAL)

  12. CRITICAL: Highest priority
  13. HIGH: Important simulations
  14. NORMAL: Default
  15. LOW: Background jobs

  16. Metadata (optional)

  17. Custom JSON: {"user": "engineer@company.com", "project": "buck_design"}

Example:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Submit Simulation                          β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Model File: [models/buck.plecs         ] πŸ“ β”‚
β”‚                                             β”‚
β”‚ Parameters:                                 β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚ β”‚ {                                       β”‚ β”‚
β”‚ β”‚   "Vi": 12.0,                           β”‚ β”‚
β”‚ β”‚   "Vo": 5.0                             β”‚ β”‚
β”‚ β”‚ }                                       β”‚ β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚                                             β”‚
β”‚ Priority: [NORMAL β–Ό]                        β”‚
β”‚                                             β”‚
β”‚            [Submit Simulation]              β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

After Submission:

βœ… Simulation submitted successfully!
Task ID: abc123-def456-ghi789
Status: Queued
Priority: NORMAL

[View Status] [View Results (when ready)]

Batch Submission

For parameter sweeps or multiple simulations:

Batch Mode:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Batch Submission                           β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Model File: [models/buck.plecs         ] πŸ“ β”‚
β”‚                                             β”‚
β”‚ Parameter Sweep:                            β”‚
β”‚ Variable: [Vi            ]                  β”‚
β”‚ Start:    [12            ]                  β”‚
β”‚ Stop:     [48            ]                  β”‚
β”‚ Step:     [6             ]                  β”‚
β”‚                                             β”‚
β”‚ Or paste JSON array:                        β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚ β”‚ [                                       β”‚ β”‚
β”‚ β”‚   {"Vi": 12.0},                         β”‚ β”‚
β”‚ β”‚   {"Vi": 24.0},                         β”‚ β”‚
β”‚ β”‚   {"Vi": 48.0}                          β”‚ β”‚
β”‚ β”‚ ]                                       β”‚ β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚                                             β”‚
β”‚          [Submit Batch (3 simulations)]     β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

After Batch Submission:

βœ… Batch submitted: 3 simulations
Task IDs:
- abc123-def456-ghi789 (Queued)
- jkl012-mno345-pqr678 (Queued)
- stu901-vwx234-yza567 (Queued)

[Monitor All] [Export Results (when ready)]

Simulation Queue View

Table:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Task ID     β”‚ Status   β”‚ Prio   β”‚ Model    β”‚ Started  β”‚ Actions β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ abc123...   β”‚ Running  β”‚ HIGH   β”‚ buck.pl  β”‚ 10:30:05 β”‚ [View]  β”‚
β”‚ def456...   β”‚ Queued   β”‚ NORMAL β”‚ buck.pl  β”‚ --       β”‚ [Cancel]β”‚
β”‚ ghi789...   β”‚ Complete β”‚ HIGH   β”‚ boost.pl β”‚ 10:29:45 β”‚ [View]  β”‚
β”‚ jkl012...   β”‚ Failed   β”‚ LOW    β”‚ buck.pl  β”‚ 10:28:30 β”‚ [Retry] β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Filters: - Status: All / Queued / Running / Completed / Failed - Priority: All / CRITICAL / HIGH / NORMAL / LOW - Model: [Dropdown of recent models] - Date Range: Last hour / Last day / Last week / Custom

Actions: - View: See details and results - Cancel: Cancel queued/running simulation - Retry: Re-submit failed simulation - Clone: Submit similar simulation with modified parameters


Cache Page

Manage simulation result cache.

Cache Statistics

Overview:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Cache Performance                          β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚  Hit Rate: β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘ 76.1%      β”‚
β”‚                                             β”‚
β”‚  Hits:    1523                              β”‚
β”‚  Misses:   478                              β”‚
β”‚  Total:   2001                              β”‚
β”‚                                             β”‚
β”‚  Disk Usage: 145.7 MB / 1000 MB (14.6%)     β”‚
β”‚                                             β”‚
β”‚  Oldest Entry: 2025-01-20 08:00:00          β”‚
β”‚  Newest Entry: 2025-01-25 10:30:00          β”‚
β”‚                                             β”‚
β”‚  Estimated Speedup: 5.2x                    β”‚
β”‚  Time Saved: 3h 42m                         β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Cache Entries

Table:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Model      β”‚ Params  β”‚ Created    β”‚ Accessedβ”‚ Size  β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€
β”‚ buck.plecs β”‚ Vi=12.0 β”‚ Jan 25 10h β”‚ 5 times β”‚ 72 KB β”‚
β”‚ buck.plecs β”‚ Vi=24.0 β”‚ Jan 25 10h β”‚ 3 times β”‚ 71 KB β”‚
β”‚ boost.plecsβ”‚ Vi=48.0 β”‚ Jan 24 15h β”‚ 1 time  β”‚ 68 KB β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”˜

Cache Management

Actions:

[Clear All Cache] [Clear Old Entries (>30 days)]
[Export Cache Stats] [Optimize Storage]

Clear Cache Confirmation:

⚠️  Warning: Clear Cache?

This will delete 2001 cache entries (145.7 MB).
Simulations will need to re-run until cache rebuilds.

[Cancel] [Confirm Clear]

Cache Settings

Configuration Panel:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Cache Settings                             β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ β˜‘ Caching Enabled                           β”‚
β”‚                                             β”‚
β”‚ Storage Format: [Parquet β–Ό]                β”‚
β”‚   (parquet, hdf5, csv)                      β”‚
β”‚                                             β”‚
β”‚ Compression: [Snappy β–Ό]                     β”‚
β”‚   (snappy, gzip, lz4, none)                 β”‚
β”‚                                             β”‚
β”‚ TTL (Time to Live):                         β”‚
β”‚   [24] hours (0 = infinite)                 β”‚
β”‚                                             β”‚
β”‚ Max Cache Size:                             β”‚
β”‚   [1000] MB (0 = unlimited)                 β”‚
β”‚                                             β”‚
β”‚             [Save Settings]                 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜


Settings Page

Note: Full settings UI is planned for v1.x. Current version: read-only config display.

Current Implementation

Configuration Display:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Configuration                              β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚  PLECS:                                     β”‚
β”‚    Executable: C:/Program Files/...         β”‚
β”‚    XML-RPC Port: 1080                       β”‚
β”‚                                             β”‚
β”‚  Orchestration:                             β”‚
β”‚    Max Concurrent: 4                        β”‚
β”‚    Batch Size: 4                            β”‚
β”‚    Retry Attempts: 3                        β”‚
β”‚                                             β”‚
β”‚  Cache:                                     β”‚
β”‚    Enabled: Yes                             β”‚
β”‚    Format: Parquet                          β”‚
β”‚    Compression: Snappy                      β”‚
β”‚                                             β”‚
β”‚  [Edit config/default.yml manually]         β”‚
β”‚  [Reload Configuration]                     β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Planned (v1.x)

Editable Settings UI: - Inline editing of configuration - Validation before save - Hot-reload without restart - Import/export configuration - Multiple configuration profiles


WebSocket Live Updates

The Web GUI uses WebSocket for real-time updates without polling.

How It Works

  1. Browser connects to ws://localhost:5000/ws
  2. Server pushes updates when events occur:
  3. Simulation status changes
  4. Queue depth changes
  5. Cache hit/miss events
  6. System status changes
  7. UI updates instantly without refresh

Events

Simulation Status Update:

{
  "type": "simulation_update",
  "task_id": "abc123-def456-ghi789",
  "status": "running",
  "progress": 0.75,
  "elapsed_seconds": 7.5
}

Queue Update:

{
  "type": "queue_update",
  "pending": 5,
  "running": 2,
  "completed": 1523
}

Cache Hit:

{
  "type": "cache_event",
  "event": "hit",
  "task_id": "def456-ghi789-jkl012",
  "speedup": 1000.0
}

Connection Status

Indicator (top-right): - 🟒 Connected: Live updates active - 🟑 Reconnecting: Temporary connection loss - πŸ”΄ Disconnected: No live updates (manual refresh needed)

Auto-reconnect: Browser automatically reconnects if connection drops.


Keyboard Shortcuts

Navigate faster with keyboard shortcuts:

Global

  • ? - Show keyboard shortcut help
  • / - Focus search box
  • Esc - Close modal/dialog
  • g d - Go to Dashboard
  • g s - Go to Simulations page
  • g c - Go to Cache page
  • g t - Go to Settings page

Actions

  • n - New simulation
  • b - Batch submission
  • r - Refresh data
  • Ctrl+Enter - Submit form

Table Navigation

  • j / ↓ - Next row
  • k / ↑ - Previous row
  • Enter - View selected

Enable keyboard shortcuts: Settings > Keyboard Shortcuts > On


Troubleshooting

Issue: "Cannot connect to server"

Symptoms:

⚠️ Connection Error
Unable to connect to PyPLECS server at http://localhost:5000

Solutions: 1. Check server is running:

pyplecs-gui
# Should show: Uvicorn running on http://0.0.0.0:5000

  1. Verify port not in use:

    # Windows
    netstat -ano | findstr :5000
    
    # Linux/macOS
    lsof -i :5000
    

  2. Try different port:

    pyplecs-gui --port 5001
    # Then access http://localhost:5001
    


Issue: "PLECS disconnected"

Symptoms: - πŸ”΄ Red status indicator - "PLECS: Disconnected" in system info

Solutions: 1. Start PLECS manually

  1. Enable XML-RPC in PLECS:
  2. PLECS > Preferences > Remote Control
  3. Check "Enable XML-RPC server"
  4. Port: 1080 (default)

  5. Check firewall: Allow port 1080

  6. Verify config:

    # config/default.yml
    plecs:
      xmlrpc:
        host: "localhost"
        port: 1080
    


Issue: "WebSocket disconnected"

Symptoms: - 🟑 Yellow connection indicator - No real-time updates

Solutions: 1. Check browser console (F12): - Look for WebSocket errors

  1. Refresh page (F5)

  2. Clear browser cache:

  3. Ctrl+Shift+Delete
  4. Clear cached files

  5. Try different browser:

  6. Chrome/Firefox recommended

  7. Check proxy settings:

  8. WebSocket may be blocked by proxy
  9. Try direct connection

Issue: "Simulation not appearing in queue"

Symptoms: - Submitted simulation doesn't show in queue

Solutions: 1. Check for errors in submission response

  1. Verify model file path is correct:
  2. Use absolute path
  3. Check file exists: ls models/buck.plecs

  4. Check browser console (F12) for JavaScript errors

  5. Refresh page to force update


Issue: "Slow page loading"

Symptoms: - Page takes >5 seconds to load - Sluggish UI

Solutions: 1. Clear cache (browser)

  1. Reduce queue size in config:

    orchestration:
      queue_size: 100  # Reduce from 1000
    

  2. Check system resources:

  3. High CPU/memory usage
  4. Close other applications

  5. Disable animations (if supported in settings)


Performance Tips

For Best Experience

  1. Use Chrome or Firefox (best WebSocket performance)

  2. Keep queue manageable (<1000 tasks)

  3. Clear old cache entries periodically

  4. Use batch submission for parameter sweeps (faster than individual submissions)

  5. Monitor in background while working in other tools

Remote Access

Access Web GUI from other machines:

  1. Start with external host:

    pyplecs-gui --host 0.0.0.0
    

  2. Open firewall port 5000

  3. Access from remote machine:

    http://<your-ip-address>:5000
    

⚠️ Security Warning: No authentication in v1.0.0. Use VPN or SSH tunnel for remote access.

SSH Tunnel (secure remote access):

# On remote machine
ssh -L 5000:localhost:5000 user@pyplecs-server

# Then access http://localhost:5000 in browser


Advanced Features

API Integration

Web GUI is built on top of REST API. You can: - Submit via Web GUI, monitor via API - Submit via API, monitor via Web GUI - Mix Web GUI and programmatic access

See API.md for API documentation.

Custom Dashboards

Web GUI exposes WebSocket endpoint for custom dashboards:

// Connect to WebSocket
const ws = new WebSocket('ws://localhost:5000/ws');

// Handle updates
ws.onmessage = (event) => {
  const data = JSON.parse(event.data);
  updateCustomDashboard(data);
};

Build custom monitoring tools using the same data stream.


Configuration

Web GUI settings in config/default.yml:

webgui:
  host: "0.0.0.0"        # Bind to all interfaces
  port: 5000             # Web GUI port
  debug: false           # Debug mode (auto-reload)
  template_dir: "templates"  # Custom templates
  static_dir: "static"       # Custom static files

Environment Variables:

export PYPLECS_WEBGUI_HOST="0.0.0.0"
export PYPLECS_WEBGUI_PORT="5001"
export PYPLECS_WEBGUI_DEBUG="true"

pyplecs-gui


Support

  • GitHub Issues: https://github.com/tinix84/pyplecs/issues
  • Email: tinix84@gmail.com
  • Documentation: See README.md

Monitor your simulations in style with PyPLECS Web GUI! πŸš€