Git Product home page Git Product logo

moxin's Introduction

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
Windows Windows (10+) .exe (NSIS)

Building and Running

First, install Rust.

Obtain the source code from this repository:

git clone https://github.com/moxin-org/moxin.git

macOS

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

Then use cargo to build and run Moxin:

cd moxin
cargo run --release

Linux

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

Important

If your CPU does not support AVX512, then you should append the --noavx option onto the above command.

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 use cargo to build and run Moxin:

cd moxin
cargo run --release

Windows (Windows 10 or higher)

  1. 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 or for the current user.

  1. 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.

Tip

To automatically handle Steps 3 and 4, simply run:

cargo run -p moxin-runner -- --install
  1. 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
  2. Download the appropriate WasmEdge WASI-NN plugin (see below for details), extract/unzip it, and copy the lib\wasmedge directory from the .zip archive into the lib\ directory of the above WasmEdge installation directory, e.g., C:\Users\<USERNAME>\WasmEdge-0.14.0-Windows\lib.

Important

The only file that matters is the plugin file, which must exist at the path WasmEdge-0.14.0-Windows\lib\wasmedge\wasmedgePluginWasiNN.dll

  1. Set the WASMEDGE_DIR and WASMEDGE_PLUGIN_PATH environment variables to point to the WasmEdge-0.14.0-Windows directory that you extracted above, and then build Moxin.

Important

You may also need to add the WasmEdge-0.14.0-Windows\bin directory to your PATH environment variable (on some versions of Windows).

In powershell, you can do this like so:
```powershell
$env:WASMEDGE_DIR="$home\WasmEdge-0.14.0-Windows\"
$env:WASMEDGE_PLUGIN_PATH="$home\WasmEdge-0.14.0-Windows\"
cargo run --release
```

In Windows `cmd`, you can do this like so:
```batch
set WASMEDGE_DIR=%homedrive%%homepath%\WasmEdge-0.14.0-Windows
set WASMEDGE_PLUGIN_PATH=%homedrive%%homepath%\WasmEdge-0.14.0-Windows
cargo run --release
```

In a Unix-like shell on Windows (e.g., GitBash, cygwin, msys2, WSL/WSL2):
```sh
WASMEDGE_DIR=$HOME/WasmEdge-0.14.0-Windows \
WASMEDGE_PLUGIN_PATH=$HOME/WasmEdge-0.14.0-Windows \
cargo run --release
```

Packaging Moxin for Distribution

Install cargo-packager:

rustup update stable  ## Rust version 1.79 or higher is required
cargo +stable install --force --locked cargo-packager

For posterity, these instructions have been tested on cargo-packager version 0.10.1, which requires Rust v1.79.

Packaging for Linux

On a Debian-based Linux distribution (e.g., Ubuntu), you can generate a .deb Debian package, an AppImage, and a pacman installation package.

Important

You can only generate a .deb Debian package on a Debian-based Linux distribution, as dpkg is needed.

Note

The pacman package has not yet been tested.

Ensure you are in the root moxin directory, and then you can use cargo packager to generate all three package types at once:

cargo packager --release --verbose   ## --verbose is optional

To install the Moxin app from the .debpackage 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

Packaging for Windows

This can only be run on an actual Windows machine, due to platform restrictions.

First, follow the above instructions for building on Windows.

Ensure you are in the root moxin directory, and then you can use cargo packager to generate a setup.exe file using NSIS:

WASMEDGE_DIR=path/to/WasmEdge-0.14.0-Windows cargo packager --release --formats nsis --verbose   ## --verbose is optional

After the command completes, you should see a Windows installer called moxin_0.1.0_x64-setup in the dist/ directory. Double-click that file to install Moxin on your machine, and then run it as you would a regular application.

Packaging for macOS

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 PreferencesPrivacy & SecurityApp 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.

moxin's People

Contributors

dependabot[bot] avatar eltociear avatar fmzbl avatar guocork avatar guofoo avatar jmbejar avatar joulei avatar juntao avatar kevinaboos avatar l-jasmine avatar noxware avatar zhanghandong avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.