Getting Started
What Mutka is, how to run it, and how its module system fits together.
Mutka is a community-driven, modular file explorer for macOS, built with Tauri 2 (Rust backend + native WebView), React 18 + TypeScript, and the macOS Liquid Glass design language.
The design goal: ship a minimal, rock-solid core and let the community build everything else as modules. Even built-in features — copy/paste, file creation, navigation — are modules. The core provides infrastructure only.
Install Mutka
macOS only — Windows coming soon
Mutka currently runs on macOS only (Windows support is planned). Releases are signed with a Developer ID and notarized by Apple, so they open with a normal double-click — no right-click or Gatekeeper workaround needed.
One-line install (recommended)
Downloads the latest release into /Applications and adds the mutka CLI to
your PATH. Re-run it any time to update to the newest release:
curl -fsSL https://mutka.app/install/latest.sh | bashThat URL redirects to scripts/install.sh
in the repo, so you can read exactly what it runs first.
Manual install (.dmg)
-
Download
Mutka_<version>_universal.dmgfrom the latest release. -
Open the
.dmgand drag Mutka into your Applications folder. -
(Optional) add the terminal CLI:
bash <(curl -fsSL https://raw.githubusercontent.com/ilianAZZ/mutka/main/scripts/install-cli.sh)
Using the CLI
mutka --help # list all available commands
mutka <path> # open a directory in Mutka
mutka --picker # pick a file/folder (path printed to stdout)
mutka --run <action> # run a module action
mutka --list-actions # list all available actionsBuild from source
Building from source is for contributors and module authors who want the dev server with hot-reload. End users should use the install options above.
Prerequisites
| Tool | Version |
|---|---|
| Rust | stable (1.77.2+) |
| Node.js | 18+ |
| Xcode Command Line Tools | latest |
xcode-select --install # if not already installedRun it
git clone https://github.com/ilianAZZ/mutka.git
cd mutka
npm install
npm run tauri dev # opens the app window with hot-reloadFirst run is slow
The very first tauri dev takes 3–5 minutes while Cargo downloads and
compiles Tauri. Subsequent runs are fast — under 5 s for Rust changes, instant
for TypeScript/CSS.
Production build
npm run tauri build # outputs a signed .app in src-tauri/target/release/bundle/The big idea
A module — built-in or community — is the same shape:
export default defineModule({ id, name, version, permissions, commands, openHandlers, setup });It imports nothing from the core. Inside setup(host) it receives a host
object — its only way to reach the system. Every privileged call
(host.fs.*, host.nav.*, host.dialog.*, …) is checked against the module's
declared permissions.
- Built-in modules run in-process (trusted).
- Community modules run isolated in a Web Worker — a denied permission is not just refused, it is physically unreachable.
Installing modules
Open the Modules overlay inside the app to browse the community catalog
(backed by GitHub — any public repo named mutka-module-* is discovered
automatically), review the permissions a module declares, and install it with one
click. Modules can be enabled, disabled, and uninstalled live — no restart. See
Publishing a module for how the catalog works.
Building your own
Authors write modules in typed TypeScript against the published npm package
@mutka-explorer/module, and scaffold a ready-to-build project with one
command:
npm create @mutka-explorer@latest my-moduleContinue with the Architecture overview, or jump straight to Writing a module.