Install and update#
Everything Get started skips: platforms, manual downloads, running as a service, updates, the app builds and uninstalling.
What you need#
- Linux
amd64/arm64, WSL2, or an Apple Silicon Mac curl,tar, andsha256sum(Linux) orshasum(macOS)tmuxonPATH- At least one agent CLI on
PATHand already signed in:claude,codex,cursor-agent,grok,pioropencode. One is enough.
Install the daemon#
curl -fsSL https://raw.githubusercontent.com/daoleno/mewla/main/install.sh | sh
The installer picks the newest release for your platform, downloads the archive
and its SHA256SUMS, verifies the checksum, and installs mewla into a
user-owned directory on your PATH (or ~/.local/bin). It never uses sudo,
installs packages, installs agent CLIs, signs in anywhere or sends telemetry.
When it finishes, it runs mewla doctor.
If mewla is already installed, the same command runs mewla update instead,
unless you set MEWLA_VERSION or MEWLA_INSTALL_DIR.
Options, set as environment variables on sh:
| Variable | Effect |
|---|---|
MEWLA_VERSION=v0.2.6 |
Install this exact release tag instead of the newest |
MEWLA_INSTALL_DIR="$HOME/bin" |
Install into this user-owned directory |
MEWLA_NO_PATH_UPDATE=1 |
Do not add the install directory to your shell profile |
MEWLA_DRY_RUN=1 |
Print the platform, version and destination; change nothing |
curl -fsSL https://raw.githubusercontent.com/daoleno/mewla/main/install.sh | MEWLA_INSTALL_DIR="$HOME/bin" sh
If the installer added a directory to your shell profile, open a new terminal
or run the export PATH=... line it printed.
Manual download#
Download the archive for your host and SHA256SUMS from the
GitHub Releases, then verify and install:
# Linux (use mewla-linux-arm64.tar.gz on ARM)
grep 'mewla-linux-amd64.tar.gz$' SHA256SUMS | sha256sum -c -
tar -xzf mewla-linux-amd64.tar.gz
# macOS
grep 'mewla-darwin-arm64.tar.gz$' SHA256SUMS | shasum -a 256 -c -
tar -xzf mewla-darwin-arm64.tar.gz
mkdir -p ~/.local/bin
install -m 755 mewla ~/.local/bin/mewla
~/.local/bin/mewla doctor
On macOS, install tmux with brew install tmux. If macOS blocks the binary,
confirm it came from an official Mewla release, then run
xattr -d com.apple.quarantine ~/.local/bin/mewla.
Supported platforms#
| Host | Archive | Status |
|---|---|---|
Linux amd64 / x86_64 |
mewla-linux-amd64.tar.gz |
Supported |
Linux arm64 / aarch64 |
mewla-linux-arm64.tar.gz |
Supported |
| WSL2 on either architecture | The matching Linux archive | Supported |
| Apple Silicon macOS | mewla-darwin-arm64.tar.gz |
Supported |
| Intel macOS | None | Not supported |
| Native Windows | None | Not supported; use WSL2 |
The installer stops on an unsupported platform before downloading anything.
Check the host#
mewla doctor # tmux, state directory, listen port, agent CLIs
mewla doctor --json
mewla doctor exits nonzero when the host is not ready and says why. It never
installs packages or prints credentials.
To write an executor configuration interactively, run mewla setup. See
Agents and models.
Update#
mewla update --check # is there a newer release?
mewla update # verify and install it
mewla update checks the release's signed manifest and the archive checksum
before it replaces the binary. It does not restart a running daemon; stop and
start mewla when convenient.
Keep it running#
mewla is the whole runtime. Run it in a terminal or a tmux window, or, on
Linux with systemd, let Mewla install a user service for you:
mewla boot install # this binary, default state and address
mewla boot install -lan # same, listening on the private network
mewla boot install -dry-run # print the unit without installing it
mewla boot status
mewla boot uninstall
mewla boot install refuses to run as root and refuses to start a second daemon
on a state directory that is already in use; stop the running mewla first.
Restarting the service never stops your tmux sessions or agents. To start it
before you log in, enable lingering with loginctl enable-linger (the command
tells you when this is needed).
Do not run the daemon as root.
Defaults#
| Setting | Value |
|---|---|
| Listen address | 127.0.0.1:9876 (mewla --lan uses 0.0.0.0:9876) |
| State directory | ~/.mewla |
| Executor configuration | ~/.mewla/executors.toml (optional) |
| Brain workspace | ~/.mewla/brain |
To use another state directory, pass the same -state-dir to every command:
mewla -state-dir /path/to/state
mewla pair -state-dir /path/to/state https://mewla.example.com
Install the app#
Android#
Download mewla-android-arm64-v<version>.apk and SHA256SUMS from the
GitHub Releases and verify the APK:
sha256sum -c SHA256SUMS --ignore-missing
The APK supports 64-bit ARM phones (arm64-v8a) only. Android asks you to
allow installs from your browser or file manager, and Play Protect may warn
because Mewla is not on the Play Store. The official signing certificate's SHA-256
fingerprint is:
C2:FC:5B:09:B3:86:92:EE:70:59:71:1F:E7:ED:B8:79:
4C:E3:65:FE:1C:7A:06:AB:95:4E:5D:D1:BD:CD:A4:FD
iOS#
Mewla Preview 0.2.4 (42) is uploaded and awaiting Apple Beta App Review as of
2026-10-10. The new TestFlight public link
will accept testers after Apple approves a build in the group. Until then, build
the app from source on an Apple Silicon Mac.
Build the iOS app from source#
You need full Xcode, an iOS Simulator runtime or a signed device target, CocoaPods, Bun, and network access for the first native build. Installing on a physical iPhone also needs an Apple development team.
Clone the source, then from the repository root:
git clone https://github.com/daoleno/mewla.git && cd mewla
bun install
bun run native:build:ios # builds the pinned terminal library
bun run native:verify:ios
cd app
bunx expo prebuild --platform ios --clean
cd ios && pod install && cd ..
bun run ios
You can also open app/ios/Mewla.xcworkspace in Xcode after pod install. The
app targets iOS 16.4 or newer and asks for local-network access (to reach your
daemon) and camera access (to scan pairing codes).
Web UI#
The daemon also serves the app as a web page for a browser on the same computer or behind HTTPS. See Pair a browser.
Build the daemon from source#
With the Go version named in daemon/go.mod and Bun installed, from the
repository root:
bun install
bun run daemon:build # writes bin/mewla
./bin/mewla doctor
A source build serves a placeholder instead of the web UI unless you first run
bun run web:build.
Uninstall#
- Run
mewla boot uninstallif you installed the service, and stopmewla. - Delete the binary (
command -v mewlashows where it is). - Optionally delete
~/.mewla. It holds the daemon's identity, paired devices, Work and Brain data; deleting it unpairs every phone.