Run any web app as a dedicated, supervised, properly-badged Windows app — using the system Microsoft Edge, no bundled Electron/Tauri runtime, no admin rights, deployable as a single double-clickable file.
Built for web softphones and contact-center agent consoles (where a missed,
hidden, throttled, or slept-through browser tab means a missed call), but the
kit is app-agnostic: define your apps in Apps.ps1 and it does the rest.
| Feature | How |
|---|---|
| Own window, no tabs/address bar | Edge app mode (--app=URL) |
| Own isolated browser profile | --user-data-dir per app (SSO/permissions persist per app) |
| Its own taskbar icon & identity (not Edge's) | AppUserModelID-stamped shortcuts + a WM_SETICON watchdog — see Taskbar identity |
| High process priority, continuously enforced | watchdog re-asserts on every Edge child process (the audio service spawns mid-call at Normal) |
| No background throttling, autoplay allowed | Edge flags — ringtones play, timers never sleep |
| Single-instance | relaunch focuses the existing window instead of duplicating |
| Optional: machine can't sleep while the app is open | SetThreadExecutionState held by the watchdog (KeepAwake) |
| Optional: surface + flash when it rings while hidden | WASAPI per-process audio-peak monitoring (CallAlert) — burst-sampled, hysteresis so live calls never re-alert |
| One-file deployment | Build-Deploy.ps1 packs everything into a self-extracting batch/PowerShell polyglot .cmd (per-user, no admin, /uninstall + /purge supported) |
- Edit
Apps.ps1— set your app's URL, profile name, display name, icon. (Make an icon from any SVG/PNGs withtools/Build-Ico.ps1.) .\Create-Shortcut.ps1 -Desktop— creates the shortcuts.- Launch it. Then run
.\tools\Discover-AppId.ps1 -App <YourApp>, click the window, and paste the discoveredAppIdintoApps.ps1; re-runCreate-Shortcut.ps1. Now the taskbar shows YOUR icon, merged correctly. - To deploy to others:
.\Build-Deploy.ps1→ hand out the generated.cmd. Variants:.\Build-Deploy.ps1 -Include AppA,AppB -OutName Deploy-Agents.cmd.
Requirements: Windows 10/11, Microsoft Edge (any recent), Windows PowerShell 5.1+ (both 5.1 and PowerShell 7 supported). No admin rights for install or use.
The part everyone gets wrong. Windows taskbar buttons are grouped by
AppUserModelID, not by window icon — a plain shortcut to an Edge app-mode
window shows Edge's icon and merges with the user's other Edge windows. Edge
assigns app-mode windows a deterministic AUMID derived from the app URL and the
profile folder name (with unpredictable abbreviation, so it can't be
computed — only discovered). Windows records it in
HKCU\...\Explorer\FeatureUsage\AppSwitched whenever the window is
foregrounded; tools/Discover-AppId.ps1 automates reading it. Stamping that
AUMID onto the kit's shortcuts (COM IPropertyStore, since WScript.Shell
can't) gives the running window its own merged taskbar button with your icon.
The watchdog separately keeps the window icon (title bar / Alt-Tab) correct
via WM_SETICON, because Chromium resets it on favicon changes.
Note: SHGetPropertyStoreForWindow is effectively same-process only —
cross-process writes return S_OK but silently don't persist. Days of our lives
went into learning that so yours don't have to.
Expected behavior on a deployed machine — none of this is malware or a bug:
msedge.exeprocesses at High priority with--user-data-dir=...<profile>- a hidden
powershell.exerunningWatch-8x8Icon.ps1while an app is open (exits ~90 s after the app closes); withKeepAwakeapps an elevatedpowercfg /requestsshows it holding a SYSTEM request — intentional - with
CallAlertapps, the window pops to the front (without stealing focus) and the taskbar flashes when the app makes sound while hidden — including voicemail playback, by design - re-running the deploy
.cmdis always the safe update path (profiles and sign-ins are preserved);/uninstallkeeps profiles,/uninstall /purgewipes them
| File | Purpose |
|---|---|
Apps.ps1 |
App registry — the only file you must edit |
Launch-8x8.ps1 |
-App <key>: launch/focus one app, arm its watchdog |
Watch-8x8Icon.ps1 |
per-app watchdog: icon, priority, keep-awake, call-alert |
Create-Shortcut.ps1 |
generates AUMID-stamped shortcuts for all apps |
Build-Deploy.ps1 |
builds the single-file installer (-Include for variants) |
Enable-AutoStart.ps1 |
per-app launch at sign-in (-App X, -Off) |
Enable-EdgePolicies.ps1 |
per-URL Edge policies (notifications/popups/mic/sleeping-tabs); prints GPO values on managed machines |
Enable-QoS.ps1 |
optional, admin: DSCP 46 tagging for softphone media |
tools/Discover-AppId.ps1 |
finds an app's taskbar AUMID (run once per app) |
tools/Build-Ico.ps1 |
builds a multi-resolution .ico from PNGs |
File names keep the 8x8 of the kit's birthplace; behavior is fully generic.
This kit was written almost entirely by an AI. It was built in and around a single working session in July 2026 by Anthropic's Claude (via Claude Code), directed step-by-step by an IT administrator who set the goals, tested every behavior live on a production machine, made the deployment decisions, and asked for the adversarial reviews that caught real bugs before release (including a call-alert design flaw and a Win32 struct-size stack bug). The human vouches for what it does; the AI wrote how it does it.
It is published so others can start from a working base instead of
re-discovering the hard parts (AUMID discovery via FeatureUsage\AppSwitched,
persistent WM_SETICON, WASAPI ring detection, the batch/PowerShell polyglot
installer). Treat it like any code from the internet: read it before you
deploy it, and test on one machine before a fleet.
MIT — see LICENSE.