WandEnhancer
WandEnhancer Performance and Cost: Measure Patch, Renderer, and Panel Overhead
A reproducible benchmark plan for WandEnhancer patch time, renderer-script startup, Remote Web Panel latency, client resources, and rollback effort.

What you will learn
- Design WandEnhancer performance fixtures
- Measure renderer and panel overhead
- Balance optimization with restore and trust checks
Before you start
- Basic Git and command-line usage
- Comfort reading a project README
You can explain the project, run its documented first step, and decide what to verify before adopting it.
Key takeaways
- Measure patch, startup, scripts, panel, and rollback as separate units.
- Use fixed client/version/network fixtures and p50/p95 resource evidence.
- Optimize operator cost and cleanup without trading away trust boundaries.
Define the measured surfaces
WandEnhancer has different performance units: patching a local installation, launching Wand with the proxy and renderer scripts, serving the Remote Web Panel, and handling a panel action. Fix the Wand client version, fork revision, patch options, script inventory, network, and test trainer state before measuring anything.
Do not mix first-run dependency downloads or antivirus scans with steady-state client behavior. Record cold and warm runs separately and keep the original client available so performance tests never become an irreversible upgrade experiment.
Capture latency and resource evidence
Measure patch duration, files changed, startup time, renderer script execution, panel connection, WebSocket round trip, and trainer action completion. Capture CPU, memory, process count, panel port state, and artifact size. Use p50/p95 over repeated disposable runs; one fast launch does not establish compatibility.
For custom scripts, measure each script independently and test the documented possibility that a script runs more than once per launch. A global guard can reduce duplicate work, but it should not hide a lifecycle bug or an expensive observer that remains attached after navigation.
Budget operational cost
The direct software cost is small, but operator time matters: fork maintenance, workflow minutes, malware scanning, client-version retesting, firewall support, and rollback. Keep a dated ledger of build duration, storage, support incidents, and time spent reviewing script changes rather than inventing a generic performance number.
Panel latency should be evaluated with the same LAN/VPN topology users will operate. A VPN may add round-trip time while reducing exposure; that is a security trade-off, not a reason to expose port 3223 publicly.
Optimize without weakening trust
Start with fewer renderer scripts, bounded observers, lazy panel assets, and explicit cleanup on disconnect. Re-run patch/restore, client startup, panel control, and antivirus review after each change. Accept an optimization only when the active trainer remains correct and every modified surface can still be removed.
Decision guide
| Criterion | Option A | Option B |
|---|---|---|
| Best when | You need predictable behavior and easy auditing | You need adaptive optimization and have reliable telemetry |
| Main risk | May leave performance on the table | Can become difficult to explain or debug |
Implementation steps
- 1
Fix client version, fork revision, options, scripts, network, and trainer fixture.
- 2
Measure cold/warm patch, startup, script, panel, and action latency.
- 3
Record CPU, memory, process, port, artifact, workflow, and support costs.
- 4
Re-run correctness, restore, security, and cleanup checks after optimizations.
Copy-ready example
{
"client_version": "<recorded>",
"patch_ms": 0,
"startup_p95_ms": 0,
"panel_roundtrip_p95_ms": 0,
"renderer_memory_mb": 0,
"restore_verified": true
}Frequently asked questions
Can panel latency be compared across networks?
Only when LAN/VPN topology, client state, and trainer action are fixed; exposure and security posture must be reported alongside latency.
Does a global script guard solve performance issues?
It can prevent duplicate initialization, but profile observers and cleanup to ensure the underlying lifecycle behavior is correct.
Sources
- WandEnhancer README (captured 2026-08-31)Source checked 2026-08-31
- WandEnhancer repositorySource checked 2026-08-31