No description
  • Java 98.6%
  • CSS 1.2%
  • Kotlin 0.2%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Claude a00b3a21de
Stop jpackage jvmArgs wiping the module access flags
The packaged 1.4.5 build dies before it opens a window:

  IllegalAccessError: class AshigaruTerminal cannot access class
  com.sun.javafx.application.LauncherImpl because module javafx.graphics
  does not export com.sun.javafx.application to com.sparrowwallet.sparrow

main() calls LauncherImpl.launchApplication, an internal JavaFX API, which
is reachable only because applicationDefaultJvmArgs carries
--add-opens=javafx.graphics/com.sun.javafx.application=com.sparrowwallet.sparrow
and --add-opens implies --add-exports.

d7bd7b3 added jvmArgs = ['-Xms256m', '-Xmx1g'] to the jpackage block to
carry the heap cap into the packaged launcher. But the jlink plugin's
jpackage.jvmArgs REPLACES applicationDefaultJvmArgs rather than adding to
it, so the launcher was left with those two flags and nothing else - all
22 --add-opens and --add-reads went with it. The first internal-API call
then fails, which is main() itself.

The fix is to delete the override, not to extend it: the same commit had
already added -Xms256m and -Xmx1g to applicationDefaultJvmArgs, so the cap
still reaches the launcher through the default path. The jpackage block
now matches the 1.4.1 build that ran, which carried no jvmArgs at all.

A comment records why this must stay unset, since setting it looks
harmless and fails only in a packaged build.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PHUdtwrtSz8dSJaZWyLDyh
2026-09-07 13:49:36 +00:00
.github Remove the Test workflow 2026-09-07 11:59:21 +00:00
buildSrc Drop monocle JavaFX platform detection — monocle JARs not published for JavaFX 21 2026-04-18 21:16:36 +00:00
darkjar Fix misleading mix retry-delay log and throttle Tor newnym on reconnect 2026-08-07 23:38:41 +00:00
docs Shorten the Tools sidebar labels 2026-08-29 23:23:29 +00:00
drongo Initial commit - Ashigaru Terminal project 2025-06-23 06:44:39 -05:00
gradle/wrapper Initial commit - Ashigaru Terminal project 2025-06-23 06:44:39 -05:00
src Merge pull request #31 from linkinparkrulz/v1.4.5-cleanup 2026-09-06 13:48:22 +00:00
.gitignore Pin the toolchain and clean up build hygiene 2026-08-29 11:30:34 -05:00
.gitmodules Initial commit - Ashigaru Terminal project 2025-06-23 06:44:39 -05:00
.mailmap Initial commit - Ashigaru Terminal project 2025-06-23 06:44:39 -05:00
build.gradle Stop jpackage jvmArgs wiping the module access flags 2026-09-07 13:49:36 +00:00
gradle.properties Pin the toolchain and clean up build hygiene 2026-08-29 11:30:34 -05:00
gradlew Initial commit - Ashigaru Terminal project 2025-06-23 06:44:39 -05:00
gradlew.bat Initial commit - Ashigaru Terminal project 2025-06-23 06:44:39 -05:00
LICENSE Initial commit - Ashigaru Terminal project 2025-06-23 06:44:39 -05:00
README.md Shorten the Tools sidebar labels 2026-08-29 23:23:29 +00:00
RELEASE_NOTES.md Note the Linux launcher icon fix in the release notes 2026-08-30 11:52:41 +00:00
SECURITY.md Release 1.4.0: bump version and write release notes 2026-08-22 22:29:28 +00:00
settings.gradle Initial commit - Ashigaru Terminal project 2025-06-23 06:44:39 -05:00
THIRD_PARTY_NOTICES.md Drop the stale dice.png third-party notice 2026-08-29 15:57:16 -05:00

Ashigaru Desktop

A graphical Bitcoin wallet and desktop GUI front-end for Ashigaru Terminal, providing a full Whirlpool coinjoin experience.


2026-07-25_12-10

Features

  • Whirlpool coinjoin — Tx0, zeroleak coinjoin, Premix/Postmix/Badbank account management
  • Tor — built-in Tor support for network privacy
  • Mix To — Set to mix to an offline or different wallet
  • Receive Only — Decreases attack surface (spend is done on mobile)
  • Import/Export Labels — Transport your labels to any BIP-329 adhering wallet software
  • BIP47 Message Verifier — Verify that a message was signed by a specific entity
  • PepeHash PayNym Integration — BIP47 based transactions include the corresponding pepehash avatar in their transaction card for easy identification
  • Whirlpoolstats.xyz Tool — Want to know the latest Tx0? Pool totals? Unspent Capacity? It's all available as a tool now h/t to Black Coffee.
  • AmIExposed or BitHypha UTXO analysis — Do analysis on your own UTXO's
  • Dojo Bay Integration — Connect to geographically dispersed electrum servers with BIP47 Verified reputations.
  • Logs — See under the hood and share application logs with developers, with addresses, keys and wallet names redacted by default
  • Verified In-App Updates — Ashigaru finds new releases and checks them against the release signing key before you install, so you never have to go looking for a download again

Future Features

  • Eigenwallet Integration — Post bad bank funds for atomic swap into XMR
  • Dojo Integration — Get all the benefits of Dojo such as Nextblock estimates, personal electrum server detail and more

Download

Pre-built binaries for every platform are published on the Releases page.

Platform Package Min OS Notarized
Windows .exe installer, .msi, portable .zip Windows 10 —
macOS (Apple Silicon) Ashigaru-X.Y.Z-aarch64.dmg, -osx-aarch64.zip macOS 11.0 No, ad-hoc signed
macOS (Intel) Ashigaru-X.Y.Z-x86_64.dmg, -osx-x86_64.zip macOS 11.0 No, ad-hoc signed
Linux (desktop) .deb, .rpm, .tar.gz, .AppImage — —
Linux (headless / server) ashigaru-server .deb, .rpm, .tar.gz — —

Each release also includes SHA256SUMS, MESSAGE.txt, and RELEASE-BIP47-SIGNATURE.txt for verification.

macOS installation

Requires macOS 11.0 (Big Sur) or later. macOS builds are ad-hoc signed but not Developer ID signed or notarized. On macOS Ventura and later, Gatekeeper is stricter for quarantined, non-notarized apps downloaded from the internet — ad-hoc signing alone does not satisfy trust requirements, and you may see "damaged and can't be opened" or a blocked launch. This can also indicate a bad signature or packaging issue, so verify the file hash first (see Verifying a release below).

If the hash checks out, two options:

Option A — Remove quarantine (recommended for nightly builds):

  1. Mount the DMG
  2. Copy Ashigaru.app to /Applications
  3. Open Terminal and run:
xattr -rd com.apple.quarantine /Applications/Ashigaru.app
  1. Open normally

If you already copied it to Applications:

xattr -rd com.apple.quarantine /Applications/Ashigaru.app

Option B — Open Anyway via System Settings:

After a blocked launch attempt, go to System Settings → Privacy & Security and click Open Anyway next to the Ashigaru entry.

Developer ID signing and notarization require an Apple Developer Program account. Current macOS packages are ad-hoc signed only, which is common for open-source desktop applications distributed without a paid Apple license.


Verifying a release

Every release is signed by the maintainer using the private key for the notification address derived from the Ashigaru release-signing BIP47 Payment Code. This lets users verify that the release message was signed by the owner of the payment code, without exposing private keys.

From 1.4.5, Settings → Update performs every check below for you and shows each one as it passes, refusing and deleting anything that fails. (1.3.0 shipped the updater but cannot reach GitHub — see the 1.4.5 release notes — so it has to be replaced by hand.) The manual steps remain here for anyone verifying a download obtained outside the app, or checking the app's own work.

Release signing identity

PM8TJM51x2mDd85CzEgVc2y7vdyB3eBj93JVjVtCt6PZtmfzhFzYPMXYBXh28zthWhVKGjVQZPT1MKxGxEtfenLYEkuc5GhoWtMzQCF8c8mrckYFM7r1
  • Notification address: 1K8CDoBYWBuaeAhejLAk5hiACAgbbPnDCJ

That address is derived from the payment code above, and is what every release signature must recover to. It is published here so you can confirm the recovered signer without deriving it yourself.

Step 1 — Verify the file hash

sha256sum -c SHA256SUMS --ignore-missing

Confirm the downloaded binary appears as OK.

Step 2 — Verify the hash commitment in MESSAGE.txt

sha256sum SHA256SUMS

Compare the output against the SHA256(SHA256SUMS): ... line inside MESSAGE.txt. They must match.

Step 3 — Verify the Bitcoin message signature

Open RELEASE-BIP47-SIGNATURE.txt. It is a standard Bitcoin signed message block: the contents of MESSAGE.txt between -----BEGIN BITCOIN SIGNED MESSAGE----- and -----BEGIN BITCOIN SIGNATURE-----, then the signing address and a base64 signature.

The simplest check is in Ashigaru itself — Tools → Verifier, use the release signing code, paste the whole file into the signed message block, then parse and verify. You can also use Ashigaru Mobile or a BIP47 message verifier such as https://paymentcode.io/lab with:

  • Payment Code: the release signing payment code above
  • Message: the exact contents of MESSAGE.txt
  • Signature: the base64 value from RELEASE-BIP47-SIGNATURE.txt

The verifier derives the notification address from the payment code and checks the signature against it. Confirm the recovered signer is the notification address published above — that is what ties the release to the maintainer's key.


Build from source

Requires JDK 21 (Temurin recommended).

git clone --recursive https://github.com/linkinparkrulz/ashigaru-desktop.git
cd ashigaru-desktop
./gradlew jpackage

The packaged application is written to build/jpackage/.

Additional distribution archives can be built with:

./gradlew packageZipDistribution packageTarDistribution

On Linux, an AppImage and an RPM can be built with:

./gradlew packageAppImage
./gradlew packageRpmDistribution   # needs rpmbuild on PATH

On Windows, an MSI can be built alongside the .exe installer with:

.\gradlew.bat packageMsiDistribution

The AppImage task downloads appimagetool from the official AppImageKit continuous release and writes the package to build/distributions/.

For proving reproducibility, see docs here.


Documentation


Software license:

Ashigaru Desktop is released under the Free and Open Source license GNU GPLv3.

Declaration as per Apache v2.0, section 4: Ashigaru Desktop has been forked from/built upon Sparrow wallet Source Code, v1.8.4 released 7th March 2024. Additionally the Sparrow wallet Source Code for Nightjar library, including commits up to and including 14th February 2024, has been imported as a module directly into this Ashigaru Desktop code repository. Original source code was released under license Apache v2.0, and changes/modifications under this Ashigaru Open Source Project code repository are done so under the GNU GPLv3 license.