Moxin: a Rust AI LLM client built atop Robius
Moxin is an AI LLM client written in Rust to demonstrate the functionality of the Robius, a framework for multi-platform application development in Rust.
⚠️ Moxin is just getting started and is not yet fully functional.
The following table shows which host systems can currently be used to build Moxin for which target platforms.
Host OS | Target Platform | Builds? | Runs? | Packaging Support |
---|---|---|---|---|
macOS | macOS | ✅ | ✅ | .app , .dmg |
Linux | Linux | ✅ | ✅ | .deb (Debian dpkg), AppImage, pacman |
First, install Rust.
Then, install the required WasmEdge WASM runtime:
curl -sSf https://raw.githubusercontent.com/WasmEdge/WasmEdge/master/utils/install_v2.sh | bash -s -- --version=0.14.0
source $HOME/.wasmedge/env
Obtain the source code from this repository:
git clone https://github.com/moxin-org/moxin.git
Then, on a standard desktop platform (macOS), simply run:
cd moxin
cargo run
To build Moxin on Linux, you must install the following dependencies:
openssl
, clang
/libclang
, binfmt
, Xcursor
/X11
, asound
/pulse
.
On a Debian-like Linux distro (e.g., Ubuntu), run the following:
sudo apt-get update
sudo apt-get install libssl-dev pkg-config llvm clang libclang-dev binfmt-support libxcursor-dev libx11-dev libasound2-dev libpulse-dev
Then, run:
cd moxin
cargo run
-
Download and install the LLVM v17.0.6 release for Windows: Here is a direct link to LLVM-17.0.6-win64.exe, 333MB in size.
[!IMPORTANT] During the setup procedure, make sure to select
Add LLVM to the system PATH for all users
orfor the current user
. -
Restart your PC, or log out and log back in, which allows the LLVM path to be properly
- Alternatively you can add the LLVM path
C:\Program Files\LLVM\bin
to your system PATH.
- Alternatively you can add the LLVM path
-
Download the WasmEdge-0.14.0-windows.zip file from the WasmEdge v0.14.0 release page, and then extract it into a directory of your choice. We recommend using your home directory (e.g.,
C:\Users\<USERNAME>\
), represented by$home
in powershell and%homedrive%%homepath%
in batch-cmd.Afterwards, you should see a directory called
WasmEdge-0.14.0-Windows
there.To do this quickly in powershell:
$ProgressPreference = 'SilentlyContinue' ## makes downloads much faster Invoke-WebRequest -Uri "https://github.com/WasmEdge/WasmEdge/releases/download/0.14.0/WasmEdge-0.14.0-windows.zip" -OutFile "WasmEdge-0.14.0-windows.zip" Expand-Archive -Force -LiteralPath "WasmEdge-0.14.0-windows.zip" -DestinationPath $home $ProgressPreference = 'Continue' ## restore default progress bars
-
Download the WasmEdge WASI-NN plugin here: WasmEdge-plugin-wasi_nn-ggml-0.14.0-windows_x86_64.zip (15.5MB) and extract it to the same directory as above, e.g.,
C:\Users\<USERNAME>\WasmEdge-0.14.0-Windows
.[!IMPORTANT] You will be asked whether you want to replace the files that already exist; select
Replace the files in the destination
when doing so.To do this quickly in powershell:
$ProgressPreference = 'SilentlyContinue' ## makes downloads much faster Invoke-WebRequest -Uri "https://github.com/WasmEdge/WasmEdge/releases/download/0.14.0/WasmEdge-plugin-wasi_nn-ggml-0.14.0-windows_x86_64.zip" -OutFile "WasmEdge-plugin-wasi_nn-ggml-0.14.0-windows_x86_64.zip" Expand-Archive -Force -LiteralPath "WasmEdge-plugin-wasi_nn-ggml-0.14.0-windows_x86_64.zip" -DestinationPath "$home\WasmEdge-0.14.0-Windows" $ProgressPreference = 'Continue' ## restore default progress bars
-
Set the
WASMEDGE_DIR
andWASMEDGE_PLUGIN_PATH
environment variables to point to theWasmEdge-0.14.0-Windows
directory that you extracted above, and then build Moxin. In powershell, you can do this like so:$env:WASMEDGE_DIR="$home\WasmEdge-0.14.0-Windows\" $env:WASMEDGE_PLUGIN_PATH="$home\WasmEdge-0.14.0-Windows\" cargo run
In Windows
cmd
, you can do this like so:set WASMEDGE_DIR=%homedrive%%homepath%\WasmEdge-0.14.0-Windows set WASMEDGE_PLUGIN_PATH=%homedrive%%homepath%\WasmEdge-0.14.0-Windows cargo run
Install the version of cargo-packager
maintained by Project Robius:
cargo install --force --locked --git https://github.com/project-robius/cargo-packager cargo-packager --branch robius
On a Debian-based Linux distribution (e.g., Ubuntu), you can generate a .deb
Debian package, an AppImage, and a pacman installation package.
The
pacman
package has not yet been tested.
To install the Moxin app from the .deb
package on a Debian-based Linux distribution (e.g., Ubuntu), run:
cd dist/
sudo apt install ./moxin_0.1.0_amd64.deb ## The "./" part is required
We recommend using apt install
to install the .deb
file instead of dpkg -i
, because apt
will auto-install all of Moxin's required dependencies, whereas dpkg
will require you to install them manually.
To run the AppImage bundle, simply set the file as executable and then run it:
cd dist/
chmod +x moxin_0.1.0_x86_64.AppImage
./moxin_0.1.0_x86_64.AppImage
This can only be run on an actual macOS machine, due to platform restrictions.
Ensure you are in the root moxin
directory, and then you can use cargo packager
to generate an .app
bundle and a .dmg
disk image:
cargo packager --release --verbose ## --verbose is optional
Important
You will see a .dmg window pop up — please leave it alone, it will auto-close once the packaging procedure has completed.
Tip
If you receive the following error:
ERROR cargo_packager::cli: Error running create-dmg script: File exists (os error 17)
then open Finder and unmount any Moxin-related disk images, then try the above cargo packager
command again.
Tip
If you receive an error like so:
Creating disk image...
hdiutil: create failed - Operation not permitted
could not access /Volumes/Moxin/Moxin.app - Operation not permitted
then you need to grant "App Management" permissions to the app in which you ran the cargo packager
command, e.g., Terminal, Visual Studio Code, etc.
To do this, open System Preferences
→ Privacy & Security
→ App Management
,
and then click the toggle switch next to the relevant app to enable that permission.
Then, try the above cargo packager
command again.
After the command completes, you should see both the Moxin.app
and the .dmg
in the dist/
directory.
You can immediately double-click the Moxin.app
bundle to run it, or you can double-click the .dmg
file to
Note that the
.dmg
is what should be distributed for installation on other machines, not the.app
.
If you'd like to modify the .dmg background, here is the Google Drawings file used to generate the MacOS .dmg background image.