flense /ˈflɛns/ (v) to strip the blubber or skin from, as from a whale.
A WinUI 3 desktop app for analysing Docker images, following in the footsteps of wagoodman/dive or fudanglp/peel.
I use dive often, and while it is an incredible tool that has helped me a lot, it's slow for larger images. While researching
the image analysis tool space before starting this project, I came across peel which is much faster. But the seed had already
been planted in my brain. Perhaps it was Raymond Chen's blog that put it there. Perhaps it was my nameless coworker who kept sending
me memes about the Win32 API. I needed to write a WinUI 3 C++/WinRT app.
Part of me feels like I'm offering this app as a heartfelt apology for the war crimes committed in my tenure thus far as a software engineer. I've written code you people wouldn't believe. React GUIs claiming the JavaScript heap as their birthright. C# code calling the database so often that MSSQL filed a restraining order. I watched C++ threads fight for a mutex like commuters for a train door at Shinjuku station.
This project, if I ever actually finish it, will be a love letter to deeply-integrated and fluid native apps. Perhaps I've over-corrected in not using Avalonia, or Qt, or even just CsWinRT, but I want it all. Every efficiency saving, every opportunity to look as native as possible. Even if it means I lose my sanity in the process, and start writing my shopping lists in MIDL.
Flense/— the WinUI 3 desktop app (C++/WinRT)Flense.Core/— a portable core library (plain C++, no WinRT/Windows headers)
A WinUI 3 app, implemented using C++/WinRT.
A static library deliberately kept free of any WinRT/Windows headers, so the actual processing logic could move to another platform/toolchain later without a rewrite.
To be confirmed: how on Earth the build system for that will work; we're 100% locked into MSBuild for WinUI 3, but other platforms will probably want to use CMake or Bazel to build this library and their own native GUIs.
-
OS: Windows 11 (Windows App SDK / WinUI 3 desktop app)
-
IDE/toolchain: Visual Studio 2026 with the C++ desktop and Windows App SDK workloads
-
Language: C++20 built with MSVC
-
Formatting:
.clang-formatat the repo root -
Third-party C++ dependencies: vcpkg, in manifest mode. Install it anywhere (e.g.
X:\vcpkg), bootstrap it (bootstrap-vcpkg.bat), and runvcpkg integrate installonce for machine-wide MSBuild integration.vcpkg.jsonat the repo root declares dependencies;Directory.Build.propspoints both projects at it viaVcpkgManifestRoot. -
Building: open
Flense.slnxin Visual Studio and build, or from the command line:msbuild Flense.slnx /p:Configuration=Debug /p:Platform=x64 -
Running: Flense is an MSIX-packaged app (
Package.appxmanifest,AppxPackage=true) — run it via Visual Studio (F5/deploy) rather than launching the.exedirectly. Requires Developer Mode enabled to sideload/debug locally.
There is an optional Windows container that carries the whole toolchain, intended for running Claude Code (or any agent) against the repo without giving it access to the rest of the machine. It builds Flense but cannot run the app as there is no GUI stack in the container.
To use it, run the script:
.\Scripts\enter-claude.container.ps1
If you encounter permission issues with the mounted volumes (e.g. can't restore packages, can't write Claude transcripts), you may need to grant full access on C:\ProgramData\Docker\volumes to 'Everyone', as described in this GitHub issue
