Skip to content

feat(launcher): ship an AppImage on tagged releases - #12647

Merged
mudler merged 3 commits into
masterfrom
feat/launcher-appimage
Oct 12, 2026
Merged

mudler merged 3 commits into
masterfrom
feat/launcher-appimage

Conversation

@mudler-agent

@mudler-agent mudler-agent commented Oct 12, 2026 •

Copy link
Copy Markdown
Collaborator

Description

Package the existing Linux launcher as a thin x86_64 AppImage. The launcher continues to download LocalAI on first use; the image does not bundle the server, backends, or models.

  • Add AppDir/AppRun packaging with pinned, SHA-256-verified AppImage tools and runtime.
  • Build and smoke-test on Ubuntu 22.04, without requiring FUSE for packaging or the extraction-based smoke.
  • Upload LocalAI-Launcher-x86_64.AppImage and its checksum to version-tag releases after GoReleaser succeeds. Preserve existing release artifacts.
  • Separate read-only build jobs from the tag-gated release upload job.
  • Document installation, extraction fallback, graphics requirements, and build dependencies.

Notes for Reviewers

Verification on the PR head:

make test-launcher-appimage
make build-launcher-appimage APPIMAGE_ARCH=amd64
bash contrib/appimage/smoke.sh

All seven packaging tests passed. The real AppImage build and extraction/Xvfb startup smoke passed in a native amd64 Ubuntu 22.04 Docker container. Shell syntax and diff checks passed, and independent code review passed after fixes for permission isolation, smoke failure detection, and the missing file dependency.

The startup smoke checks initialization progress, writable data directories, missing libraries, and fatal errors. It does not prove UI responsiveness or model/GPU operation. Real desktop interaction and tag-triggered GitHub release upload have not been exercised. The container launch logs include a missing dbus-launch systray warning and a Fyne main-goroutine diagnostic at launcher.go:550; neither fails the limited startup criteria, so tray and interactive UI behavior still need a desktop check. Support initially targets x86_64 with glibc 2.35 or newer and host graphics libraries. Worker-mode controls and launcher self-updates are outside this PR.

Signed commits

  • Yes, I signed my commits.
  • Documentation updated (docs/content/) for user-facing changes

Ship the existing Fyne launcher as an additive release asset without
bundling the server or changing its runtime downloader.

Pin packaging tools and the type-2 runtime, preserve the caller
environment, and document the native amd64 graphics requirements.
Validate packaging contracts and wire extraction smoke checks into CI.

Assisted-by: Codex:gpt-5
PR builds must not receive repository write credentials. Isolate uploads
in a gated job that consumes the tested artifact without checkout.
Keep the existing release check and dependency on GoReleaser.

A surviving process does not prove that the UI event loop works.
Require observable startup progress, reject initialization errors, and
bound termination. Document the remaining limits without changing the
launcher application. Add permission and smoke failure regressions.

Assisted-by: nib:unknown
appimagetool fails after Go compilation when file is missing. Install
it explicitly in CI and document the local build dependency. Check for
it before compilation and cover the missing-command failure in tests.

Assisted-by: nib:unknown
@mudler
mudler merged commit 33459f2 into master Oct 12, 2026
72 of 73 checks passed
@mudler
mudler deleted the feat/launcher-appimage branch October 12, 2026 15:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants