Initially this repo contains the CLI/DevFlow proof-of-concept and supporting tooling for the WPF tooling research project. Now experiments on other UI frameworks like WinForms, WinUI 3, Uno Platform, MewUI, LibreWPF, and Jalium are also included for comparison and validation purposes.
This project is not affiliated with, endorsed by, or sponsored by Microsoft, or other vendors of the frameworks.
src/DevFlow/LeXtudio.DevFlow.Agent.Core/— shared DevFlow core service layer (HTTP server, CSS selector/query engine, network capture, Win32 alert detection).LeXtudio.DevFlow.Agent.XXX/— plain runtime implementation for DevFlow for XXX UI framework (WPF, WinForms, Uno, MewUI, LibreWPF, Jalium).LeXtudio.DevFlow.Agent.XXX.Tests/— integration tests covering DevFlow status, tree, screenshot, tap, and scroll behavior.XXXDevFlowTestApp/— a small sample app instrumented with DevFlow for runtime validation for XXX UI framework.LeXtudio.DevFlow.Driver/— HTTP client for querying a running DevFlow agent.LeXtudio.DevFlow.Inspector/— browser-based live UI inspector server (devflow inspector).LeXtudio.DevFlow.Broker/— multi-agent broker daemon for discovery/registration (devflow broker).LeXtudio.DevFlow.Analyzers/— Roslyn analyzer validating[DevFlowAction]usage at compile time.
src/Cli/— global tool prototypes for scaffolding and project workflows, one CLI per UI framework.docs/— plan and session documentation for the CLI/DevFlow work.
- Build DevFlow agents that expose runtime UI state for WinForms, WPF, WinUI 3, Uno Platform, MewUI, LibreWPF, and Jalium apps via HTTP.
- Reuse shared DevFlow infrastructure where it makes sense, while keeping platform code in focused runtime packages.
- Validate the approach with an end-to-end integration test and a live sample app.
Every agent (regardless of UI framework) exposes the same HTTP surface, reachable through each CLI's devflow subcommand:
| Area | Highlights |
|---|---|
| UI tree & interaction | Live tree/element inspection, screenshots, tap/fill/clear/focus/key/scroll/back |
extensions |
Discover and invoke [DevFlowAction]-annotated methods in the running app |
inspector |
Browser-based live UI inspector — proxies screenshots + tree + interaction over HTTP |
broker |
Multi-agent discovery daemon (start/stop/status/list) for targeting a specific running app |
network |
Captured HTTP traffic (list/detail/clear) for apps using DevFlowHttp.CreateClient() |
ui |
CSS-selector queries (query), point hit-testing (hit-test), and structural assertions (assert) |
alert |
Detect and dismiss native dialog boxes (detect/dismiss) |
webview |
WebView context listing, screenshot, and CDP command execution (WPF/WinForms/LibreWPF) |
batch / commands |
Scripted multi-command execution over stdin and machine-readable command schema discovery |
cd src
dotnet build labs.slnxcd src\DevFlow\WpfDevFlowTestApp
dotnet run --no-buildThe sample app starts DevFlow on port 9223 and exposes:
GET http://localhost:9223/api/v1/agent/statusGET http://localhost:9223/api/v1/ui/treeGET http://localhost:9223/api/v1/ui/element?id=<id>GET http://localhost:9223/api/v1/ui/screenshotPOST http://localhost:9223/api/v1/ui/tapPOST http://localhost:9223/api/v1/ui/actions/scroll
cd src\DevFlow\UnoDevFlowTestApp
dotnet run -f net10.0-desktop --no-buildThis launches the sample app on Uno Platform and it starts DevFlow on port 9223 and exposes:
GET http://localhost:9223/api/v1/agent/statusGET http://localhost:9223/api/v1/ui/treeGET http://localhost:9223/api/v1/ui/element?id=<id>GET http://localhost:9223/api/v1/ui/screenshotPOST http://localhost:9223/api/v1/ui/tapPOST http://localhost:9223/api/v1/ui/actions/scroll
Note: WinUI apps can also use the WinApp CLI UI commands to achieve a similar runtime UI inspection and interaction workflow. DevFlow is therefore optional for WinUI scenarios when comparable WinApp CLI support already exists.
To launch the sample app on WinUI 3,
cd src\DevFlow\UnoDevFlowTestApp
dotnet run -f net10.0-windows10.0.19041.0 --no-buildcd src\DevFlow\WinFormsDevFlowTestApp
dotnet run --no-buildThe sample app starts DevFlow on port 9223 by default and exposes the same shared DevFlow HTTP API used by the other runtime agents.
cd src\DevFlow\MewUIDevFlowTestApp
dotnet run --no-buildThe sample app starts DevFlow on port 9223 by default and exposes the same shared DevFlow HTTP API used by the other runtime agents.
cd src\DevFlow\LibreWpfDevFlowTestApp
dotnet run --no-buildThe sample app starts DevFlow on port 9223 by default and exposes the same shared DevFlow HTTP API used by the other runtime agents.
cd src\DevFlow\JaliumDevFlowTestApp
dotnet run --no-buildThe sample app starts DevFlow on port 9223 by default and exposes the same shared DevFlow HTTP API used by the other runtime agents.
cd src\DevFlow\LeXtudio.DevFlow.Agent.WPF.Tests
dotnet test --project LeXtudio.DevFlow.Agent.WPF.Tests.csprojcd src\DevFlow\LeXtudio.DevFlow.Agent.Uno.Tests
dotnet test --project LeXtudio.DevFlow.Agent.Uno.Tests.csprojcd src\DevFlow\LeXtudio.DevFlow.Agent.WinForms.Tests
dotnet test --project LeXtudio.DevFlow.Agent.WinForms.Tests.csprojcd src\DevFlow\LeXtudio.DevFlow.Agent.MewUI.Tests
dotnet test --project LeXtudio.DevFlow.Agent.MewUI.Tests.csprojYou can use prebuilt NuGet packages
dotnet add package LeXtudio.DevFlow.Agent.WPF
dotnet add package LeXtudio.DevFlow.Driverdotnet add package LeXtudio.DevFlow.Agent.Uno
dotnet add package LeXtudio.DevFlow.Driverdotnet add package LeXtudio.DevFlow.Agent.WinForms
dotnet add package LeXtudio.DevFlow.Driverdotnet add package LeXtudio.DevFlow.Agent.MewUI
dotnet add package LeXtudio.DevFlow.Driverdotnet add package LeXtudio.DevFlow.Agent.LibreWpf
dotnet add package LeXtudio.DevFlow.Driverdotnet add package LeXtudio.DevFlow.Agent.Jalium
dotnet add package LeXtudio.DevFlow.Driverdotnet tool install -g LeXtudio.Wpf.Cli
dotnet wpflex --helpdotnet tool install -g LeXtudio.Uno.Cli
dotnet unolex --helpdotnet tool install -g LeXtudio.WinForms.Cli
dotnet winflex --helpdotnet tool install -g LeXtudio.MewUI.Cli
dotnet mewlex --helpdotnet tool install -g LeXtudio.LibreWpf.Cli
dotnet librewpf --helpdotnet tool install -g LeXtudio.Jalium.Cli
dotnet jalex --help- The DevFlow agent is intentionally lightweight and focused on WPF/WinForms/WinUI 3/Uno Platform/MewUI/LibreWPF/Jalium runtime automation.
- The host app and test app demonstrate live UI tree inspection, screenshot capture, tap, and scroll interaction, plus the extensions/inspector/broker/network/ui/alert feature set described above.
- Documentation for the DevFlow plan is available under
docs/devflow/.
MIT
(c) 2026 LeXtudio Inc. All rights reserved.