Skip to content

Add Ultimatter - #6037

Merged
probonopd merged 1 commit into
masterfrom
discover/Ultimatter
Oct 19, 2026
Merged

probonopd merged 1 commit into
masterfrom
discover/Ultimatter

Conversation

@probonopd

Copy link
Copy Markdown
Member

Repository: https://github.com/saifmukhtar/ultimatter

Universal Mobile Gateway SDK — wrap any local web service or AI agent with encrypted mobile access, QR pairing, and a native PWA in seconds.

  • Stars: 12
  • Latest release: v1.1.2 (2026-09-20T22:08:31Z)
  • AppImage asset: Ultimatter-x86_64.AppImage
  • License: Apache-2.0

Found by .github/workflows/discover-apps.yml, which looks for GitHub
repositories that publish AppImages but are not in the catalog yet. This
entry was not tested by a human; please review it before merging.

Discovered on GitHub as publishing AppImages on its releases, by
discover-apps.yml. Needs a maintainer's review.
@github-actions github-actions Bot added error-app-exits Test failed: the application quit or crashed right after starting error-missing-library Test failed: see the test result comment labels Sep 28, 2026
@github-actions

Copy link
Copy Markdown
Contributor

❌ Test failure

@saifmukhtar: this pull request adds the AppImage from your GitHub repository to the AppImage catalog; the test reports the following. Could you have a look?

Compatibility: not self-contained: uses the C library of the system; references glibc 2.39

  • The application needs a library that is neither in the AppImage nor on the test system ("error while loading shared libraries", the first error below names it). Please bundle this library, and what it depends on, in the AppImage: an AppImage cannot rely on libraries that are not installed on every target system.
  • The application quit or crashed right after starting. The error below usually shows why.

First error in the log:

/run/firejail/appimage/usr/bin/ultimatter: error while loading shared libraries: libwebkit2gtk-4.1.so.0: cannot open shared object file: No such file or directory

ERROR: The application exited within 11 seconds instead of showing a window

Commit d154f96. Full log

@saifmukhtar

Copy link
Copy Markdown

Hi @probonopd, thank you for the PR! As a Tauri/Wry application, Ultimatter intentionally relies on the host system's libwebkit2gtk to render the webview, as bundling WebKit inside the AppImage usually breaks host graphics drivers.

@probonopd
probonopd marked this pull request as draft September 28, 2026 06:42
@probonopd probonopd added the toolchain-issue This issue may affect all AppImages built with an certain toolchain label Sep 28, 2026
@probonopd

Copy link
Copy Markdown
Member Author

Thanks @saifmukhtar for explaining the reasoning, much appreciated! I'd respectfully disagree that WebKit can't be bundled, though. It has been done successfully:

PrusaSlicer faced exactly this question when it started depending on WebKit (prusa3d/PrusaSlicer#15714). An AppImage that bundles webkit2gtk together with all other dependencies (https://github.com/probonopd/PrusaSlicer.AppImage) was tested and works on Windows 11 WSL2 (Debian), Ubuntu 16.04 and 20.04, Fedora 38 and 40, Manjaro, Chimera Linux (musl!) and NixOS, and was confirmed by a user on Gentoo. The only issue reported was a missing locale, which was fixed. And at 201 MB it is about a quarter of the size of the Flatpak (854 MB).

What must come from the host system is the graphics driver itself (libGL/libEGL/Mesa or the Nvidia driver), not WebKit. That is handled by either leaving those out of the AppImage (the usual excludelist) or bundling Mesa as a whole. Bundling WebKit does not require replacing the host's GPU driver.

Relying on the host's WebKit, on the other hand, is what makes the AppImage fail here: our test system (Ubuntu 22.04) has no libwebkit2gtk-4.1.so.0, so Ultimatter exits right away:

·/·r·un/firejail/appimage/usr/bin/ultimatter: error while loading shared libraries: libwebkit2gtk-4.1.so.0: cannot open shared object file: No such file or directory

Many users will be in the same situation: it is not installed by default on many distributions, and the ABI differs between versions (4.0, 4.1, 6.0). That takes away the main promise of an AppImage: download one file and run it, without installing anything.

So what would be needed:

  1. Bundle libwebkit2gtk-4.1 and its dependencies, including WebKit's helper processes (WebKitWebProcess, WebKitNetworkProcess), in the AppImage. Leave the graphics driver libraries on the host, or bundle Mesa completely.
  2. Build on the oldest still-supported Ubuntu LTS (22.04). The AppImage currently references glibc 2.39, so it would not run on 22.04 even with WebKit present.

Once a release with such an AppImage is out, just leave a comment here and the test will run again. Thanks again for Ultimatter!


Generated by Claude Code

@saifmukhtar

saifmukhtar commented Sep 30, 2026 •

Copy link
Copy Markdown

Hi @probonopd , thank you so much for taking the time to test Ultimatter and for the detailed feedback!

You were 100% right about the glibc bug. Our GitHub Actions were using ubuntu-latest (24.04), which broke backwards compatibility. I have just updated our CI pipeline to build on ubuntu-22.04, which resolves the glibc 2.39 issue.

Regarding bundling WebKit: After a lot of architectural discussion, we are going to respectfully stick to relying on the host system's WebKit. Ultimatter is designed as an ultra-lightweight networking utility (~25MB). Inflating the binary to ~200MB to bundle the web engine defeats the purpose of choosing Tauri/Wry over Electron. More importantly, bundling a web engine makes us directly responsible for patching upstream WebKit CVEs, rather than letting the host OS package manager handle security updates.

I completely understand that this breaks the core "one file runs everywhere" promise of the AppImage Hub, and I accept that this disqualifies Ultimatter from the official Hub catalog. We will continue providing the raw .AppImage on our GitHub Releases page for developers who already have libwebkit2gtk-4.1-0 installed.

Thank you again for the incredible work you do for the Linux community and for reviewing this!

Follow-up: After reading through the PrusaSlicer threads you linked and thinking about it more, you make a compelling case for an independent WebKit.

While I am going to push the current version as-is to avoid delaying the release, I am going to dedicate time during the next release cycle to experiment with bundling it properly. If I can strip it down and find a sweet spot for the file size, I will definitely adopt it. Thanks again for pushing me to look deeper into this!

@saifmukhtar

Copy link
Copy Markdown

@probonopd I bundled the core WebKit runtime (libwebkit2gtk-4.1, libjavascriptcoregtk, and helpers) while stripping unneeded debug symbols and excluding heavy, non-essential libraries (like GStreamer and media codecs). This keeps the AppImage fully functional across distributions while maintaining a compact ~68MB size.

@probonopd

Copy link
Copy Markdown
Member Author

/retest

@probonopd probonopd closed this Oct 12, 2026
@probonopd probonopd reopened this Oct 12, 2026
@github-actions

Copy link
Copy Markdown
Contributor

❌ Test failure

Tested:

Compatibility: not self-contained: uses the C library of the system; references glibc 2.35

  • The application needs a library that is neither in the AppImage nor on the test system ("error while loading shared libraries", the first error below names it). Please bundle this library, and what it depends on, in the AppImage: an AppImage cannot rely on libraries that are not installed on every target system.
  • The application quit or crashed right after starting; the error below usually shows why. Note that the test runs the application without network access, on purpose, and that this is a requirement for the catalog: an AppImage must start without network (users are offline too). If the application needs a server, a login or an update check to start, please make it show its window (or at least a message) first and connect afterwards, and handle a failed connection instead of exiting.

First error in the log:

/run/firejail/appimage/usr/bin/ultimatter: error while loading shared libraries: libsoup-3.0.so.0: cannot open shared object file: No such file or directory

ERROR: The application exited within 11 seconds instead of showing a window

What next: once the AppImage is fixed (e.g. in a new release), comment /retest here to test it again. If it should not be in the catalog after all, close this pull request; an app that is already in the catalog can be removed by a maintainer with /remove.

Commit d154f96. Full log

@saifmukhtar

Copy link
Copy Markdown

/retest

@probonopd probonopd closed this Oct 12, 2026
@probonopd probonopd reopened this Oct 12, 2026
@github-actions github-actions Bot added error-no-window Test failed: no window appeared within 30 seconds and removed error-app-exits Test failed: the application quit or crashed right after starting error-missing-library Test failed: see the test result comment labels Oct 12, 2026
@github-actions

Copy link
Copy Markdown
Contributor

❌ Test failure

Tested:

Compatibility: not self-contained: uses the C library of the system; references glibc 2.35

  • The application did not open a window within 30 seconds. It must show its main window when started without arguments.

First error in the log:

ERROR: Could not find a single window on screen :-(

What next: once the AppImage is fixed (e.g. in a new release), comment /retest here to test it again. If it should not be in the catalog after all, close this pull request; an app that is already in the catalog can be removed by a maintainer with /remove.

Commit d154f96. Full log

@saifmukhtar

Copy link
Copy Markdown

/retest

@probonopd probonopd closed this Oct 13, 2026
@probonopd probonopd reopened this Oct 13, 2026
@github-actions github-actions Bot added screenshot-ok Test passed; the screenshot was checked and looks fine and removed error-no-window Test failed: no window appeared within 30 seconds labels Oct 13, 2026
@github-actions

Copy link
Copy Markdown
Contributor

✅ Test passed

Please check that the screenshot shows the application's main window.

Ultimatter

Ultimatter

Tested:

Compatibility: not self-contained: uses the C library of the system; references glibc 2.35

Warnings:

Commit d154f96. Full log

@saifmukhtar

Copy link
Copy Markdown

@probonopd Test is passing. Any more details needed to add in the app image hub.

@probonopd
probonopd marked this pull request as ready for review October 19, 2026 00:25
@probonopd
probonopd merged commit abe95bd into master Oct 19, 2026
11 of 14 checks passed
@probonopd
probonopd deleted the discover/Ultimatter branch October 19, 2026 00:25
@probonopd

Copy link
Copy Markdown
Member Author

Thanks @saifmukhtar

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

auto-discovered screenshot-ok Test passed; the screenshot was checked and looks fine toolchain-issue This issue may affect all AppImages built with an certain toolchain

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants