Summary
Every release since v0.1.0 ships a single Thuki.dmg that is built as Mach-O thin (arm64) only. Intel Mac users (2019 MacBook Pro 16", Intel Core i9, etc.) cannot install or run the app — the thuki binary silently fails because Rosetta translates x86→arm, not arm→x86.
Reproduce
gh release download v0.6.1 --repo quiet-node/thuki --pattern 'Thuki.dmg'
hdiutil attach Thuki.dmg -nobrowse -quiet
file /Volumes/Thuki/Thuki.app/Contents/MacOS/thuki
# → Mach-O 64-bit executable arm64
codesign --display --verbose=2 /Volumes/Thuki/Thuki.app
# → Format=app bundle with Mach-O thin (arm64)
Impact
- Affects every Intel Mac still on macOS Tahoe (26.x) and earlier — a real population for a beta tool
- Silent-failure UX: drag to
/Applications, launch, nothing happens. No error about architecture.
README.md under ## Getting Started → Step 2: Install Thuki → Download (Recommended) makes no mention of required architecture
Suggested fix — universal binary
The cleanest path is a universal binary. Minimal changes to .github/workflows/release-please.yml in the build-and-release job:
- name: Install stable Rust toolchain
run: rustup toolchain install stable --no-self-update
+
+ - name: Add Rust targets for universal build
+ run: |
+ rustup target add aarch64-apple-darwin
+ rustup target add x86_64-apple-darwin
# ...
- - name: Build Tauri app
- run: bun run build:backend
+ - name: Build Tauri app (universal)
+ run: bun run build:backend -- --target universal-apple-darwin
Tauri v2 natively supports --target universal-apple-darwin and emits a single .app with both slices via lipo.
The resulting .app bundle path changes from
src-tauri/target/release/bundle/macos/Thuki.app
to
src-tauri/target/universal-apple-darwin/release/bundle/macos/Thuki.app
— so the create-dmg step and the ad-hoc sign step would need their paths updated to match.
Alternative — separate arm64 and x86_64 DMGs via matrix
If a universal binary is unwanted (larger artifact size), a matrix strategy also works:
build-and-release:
strategy:
matrix:
include:
- runner: macos-14
target: aarch64-apple-darwin
suffix: -arm64
- runner: macos-13
target: x86_64-apple-darwin
suffix: -x64
runs-on: ${{ matrix.runner }}
# ... and upload as Thuki${{ matrix.suffix }}.dmg
README change needed either way
Whatever fix lands, ## Step 2: Install Thuki should explicitly name the architecture(s) supported. Current wording implies any Mac works.
Workaround for now
Intel users can build from source per README.md's "Build from Source" path — git clone, bun install, bun run tauri build. That emits an x86_64 binary when run on an Intel host. Not a great UX for a "floating AI for macOS, no setup" positioning, though.
Happy to open a PR for the universal-binary change if it would help — just let me know if that matches how you want to ship.
Thanks for the project — the local-only, zero-telemetry positioning is exactly what this category needs.
Summary
Every release since
v0.1.0ships a singleThuki.dmgthat is built asMach-O thin (arm64)only. Intel Mac users (2019 MacBook Pro 16", Intel Core i9, etc.) cannot install or run the app — thethukibinary silently fails because Rosetta translates x86→arm, not arm→x86.Reproduce
codesign --display --verbose=2 /Volumes/Thuki/Thuki.app # → Format=app bundle with Mach-O thin (arm64)Impact
/Applications, launch, nothing happens. No error about architecture.README.mdunder## Getting Started → Step 2: Install Thuki → Download (Recommended)makes no mention of required architectureSuggested fix — universal binary
The cleanest path is a universal binary. Minimal changes to
.github/workflows/release-please.ymlin thebuild-and-releasejob:- name: Install stable Rust toolchain run: rustup toolchain install stable --no-self-update + + - name: Add Rust targets for universal build + run: | + rustup target add aarch64-apple-darwin + rustup target add x86_64-apple-darwin # ... - - name: Build Tauri app - run: bun run build:backend + - name: Build Tauri app (universal) + run: bun run build:backend -- --target universal-apple-darwinTauri v2 natively supports
--target universal-apple-darwinand emits a single.appwith both slices vialipo.The resulting
.appbundle path changes fromsrc-tauri/target/release/bundle/macos/Thuki.appto
src-tauri/target/universal-apple-darwin/release/bundle/macos/Thuki.app— so the
create-dmgstep and the ad-hoc sign step would need their paths updated to match.Alternative — separate arm64 and x86_64 DMGs via matrix
If a universal binary is unwanted (larger artifact size), a matrix strategy also works:
README change needed either way
Whatever fix lands,
## Step 2: Install Thukishould explicitly name the architecture(s) supported. Current wording implies any Mac works.Workaround for now
Intel users can build from source per
README.md's "Build from Source" path —git clone,bun install,bun run tauri build. That emits anx86_64binary when run on an Intel host. Not a great UX for a "floating AI for macOS, no setup" positioning, though.Happy to open a PR for the universal-binary change if it would help — just let me know if that matches how you want to ship.
Thanks for the project — the local-only, zero-telemetry positioning is exactly what this category needs.