Skip to main content
Masamune logo

Masamune

Local, verified Morphe APK builds configured and monitored from a terminal UI.

GitHub | Releases | Issues

Python Java uv


Masamune is a Textual terminal interface for building Morphe APKs from user-supplied local APK and split-APK files.

It verifies local inputs, merges splits, resolves Morphe tooling, applies patches, signs outputs, and optionally packages modules. It does not download stock APKs from Google Play or fallback providers.

Preview

Masamune preview

Requirements

Requirement Version Notes
Python 3.11–3.13 Runtime and development support.
Java 21+ Required by Morphe CLI, APKEditor, and uber-apk-signer.
uv latest Recommended for installation and development.
Local APKs user-provided Base APK or complete split set for each build job.

Windows and Linux are supported. Morphe CLI, patch bundles, APKEditor, and uber-apk-signer are prepared in the user cache when a build starts.

Features

  • Local-only APK input: native APK and folder pickers; no stock APK downloads.
  • Input verification: package identity, version, version code, architecture, split coverage, hashes, and signing certificates are checked before use.
  • Config-driven builds: apps, architectures, versions, patch sources, and build modes live in morphe.toml.
  • Morphe patch workflow: discover patches, select exact patch sets, and edit configurable patch options.
  • APK and module output: build patched APKs plus optional deterministic Magisk/KernelSU modules.
  • Background execution: current stage, per-job status, redacted events, and build logs remain visible while tools run.
  • Signing controls: bundled public template keystore for checkout testing, or a private user keystore for real signing.
  • Build history: completed, failed, and cancelled builds remain available with output paths and summaries.
  • Safe cache cleanup: inspect cache areas and remove only disposable data.
  • Atomic publication: existing outputs are never overwritten; failed builds publish nothing.
  • Terminal-native UI: keyboard navigation, command palette, themes, compact sidebar, and reduced-motion support.

Install

From PyPI

uv tool install masamune-tui
masamune

From source

git clone https://github.com/Villoh/masamune.git
cd masamune
uv sync
uv run masamune

Running masamune without arguments opens the TUI. The explicit masamune tui form accepts launch options.

Configure local APKs

Create morphe.toml:

[toolchain]
morphe-source = "MorpheApp/morphe-desktop"
morphe-version = "latest"
patches-source = "MorpheApp/morphe-patches"
patches-version = "latest"

[[apps]]
package = "com.google.android.youtube"
name = "YouTube"
source-dir = "C:/Users/me/Downloads/youtube-splits"
version = "auto"
arch = "arm64-v8a"
build-mode = "apk"
include-patches = ["GmsCore support", "SponsorBlock"]

source-dir is optional. If omitted, Start build asks for a source for each enabled app through the native picker:

  • Select an APK to use its containing directory.
  • Select a folder to use that folder directly.
  • Use {arch}, {abi}, or {module} placeholders for architecture-specific directories.

The TUI writes validated configuration changes atomically. Unsupported TOML fields remain safe to edit manually.

Launch options

masamune tui \
  --config morphe.toml \
  --cache /path/to/cache \
  --output build \
  --keystore /path/outside/repository/masamune.p12 \
  --keystore-alias masamune
Option Default Meaning
--config PATH User config path Configuration displayed and edited by TUI.
--cache PATH Platform cache root Toolchain, patch, and build cache.
--output PATH build Atomic build publication directory.
--keystore PATH Bundled template in checkout; generated key otherwise Signing keystore.
--keystore-alias ALIAS masamune Signing alias.

Private keystore passwords are read only from MORPHE_KEYSTORE_PASSWORD. They are never displayed or stored by TUI.

Interface

View Key Purpose
Dashboard 1 Inspect and edit configured applications.
Build 2 Review parameters, start builds, and monitor results.
Builds 3 Review persisted build history and outputs.
Patches 4 Discover patches and save exact selections.
Cache 5 Inspect cache paths and remove disposable work.
Bundles 6 Discover supported applications from patch sources.
Key Action
Ctrl+B Toggle compact sidebar.
Ctrl+P Open command palette.
? Show available keys.
T Open theme selector.
Q Quit.

Build flow

  1. Add or select an application.
  2. Select a local APK or split directory.
  3. Review version, architecture, patches, output, and signing key.
  4. Confirm the build.
  5. TUI verifies inputs, merges splits, applies Morphe patches, signs outputs, and publishes verified artifacts atomically.

Build view reports:

  • pending, running, success, failed, and cancelled states;
  • current stage and per-job state;
  • redacted, scrollable subprocess events;
  • output paths and artifact names;
  • build.log and provenance files in each published build directory.

Only one build runs at a time. Stop build cancels the active downloader and cleans temporary staging; it does not interrupt arbitrary external tools.

Patch bundles and individual patches

Bundles provides discovery data for supported applications from public patch sources. Add an application to the dashboard or assign a patch source to an existing app without replacing unrelated configuration.

Patches resolves the configured source, lists compatible patches, and saves an exact selection. Configurable patches expose boolean, numeric, and free-text options with upstream defaults and suggestions.

Patch resolution may download Morphe metadata and toolchains into the external cache. It never downloads stock APKs.

Safety model

  • No Google Play, APKMirror, Uptodown, or other stock APK downloads.
  • Original local split APKs remain unchanged.
  • APK metadata, hashes, architecture, and signer identity are verified.
  • Existing output directories are never overwritten.
  • Signing keys are protected from cache cleanup.
  • Sensitive passwords and subprocess output are redacted.
  • Failed builds publish no partial output.

The bundled template keystore is for local test builds only. It does not prove publisher identity. Use a private keystore for distributable builds.

Current limits

The TUI intentionally does not provide:

  • credential storage or display;
  • raw/free-form TOML editing;
  • GitLab patch-source assignment;
  • parallel builds;
  • web mode;
  • runtime PNG rendering;
  • hard cancellation of every external subprocess.

Use the CLI or a text editor for automation and unsupported configuration fields.

Development

uv sync
uv run python -m unittest discover -s tests
uv lock --check
uv build

Detailed interface notes live in docs/tui.md.

License

MIT. See LICENSE.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

masamune_tui-1.0.0.tar.gz (84.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

masamune_tui-1.0.0-py3-none-any.whl (92.4 kB view details)

Uploaded Python 3

File details

Details for the file masamune_tui-1.0.0.tar.gz.

File metadata

  • Download URL: masamune_tui-1.0.0.tar.gz
  • Upload date:
  • Size: 84.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for masamune_tui-1.0.0.tar.gz
Algorithm Hash digest
SHA256 be7c5cfd3cb6104df87fd4c26261d84677b4b9b2b22a35a4a33f00db79d709d8
MD5 e9beaf9919418b952d1cb878bc63b04d
BLAKE2b-256 3c2048f90a2a1f3ad79e2278aca06c82408dd423452f4f8d224706d3ca2c78ef

See more details on using hashes here.

Provenance

The following attestation bundles were made for masamune_tui-1.0.0.tar.gz:

Publisher: publish.yml on Villoh/masamune

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file masamune_tui-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: masamune_tui-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 92.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for masamune_tui-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 faf8a16184c5316e39f4031969ac74af6b223f040528b9e087134e7321e32015
MD5 67458b53b22781f8035b45d46bf55aea
BLAKE2b-256 c7d58dbcaacd1a9263ade94b30564ea2c343eecc330f248ab41fab39bec387bc

See more details on using hashes here.

Provenance

The following attestation bundles were made for masamune_tui-1.0.0-py3-none-any.whl:

Publisher: publish.yml on Villoh/masamune

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page