Installation

MORIE targets Python 3.10 or newer and R 4.3 or newer. The two languages are independent: install the one you use, or both for the dual-language pipeline.

Note

About the ``#`` characters in code blocks below. Lines starting with # (and inline # … annotations after a command) are comments. They explain what the command does but are NOT part of the command itself. Pasting them into a shell will either error out or run something you didn’t mean to.

Hover any code block on this page and click Copy in the corner: the smart-copy strips # comments automatically so the result is paste-safe. Cmd/Ctrl+C on a selection inside a code block does the same thing.

Python

From PyPI:

pip install morie                  # the package, 71 catalogued datasets, 15,222 morie.fn callables
pip install "morie[interactive]"   # + the Terminal IDE (textual)
morie interactive install          # the REPL, exec, agent and TUI modules, once per user

morie interactive install fetches the five modules behind morie repl, morie exec, morie agent and morie tui from the release tag of the version you installed and checks each against the manifest inside the package; every published artifact leaves them out because they run code you or a model type. Without them those verbs print the command and, on a terminal, offer to run it. morie interactive status and morie interactive remove manage the per-user copy; a source checkout needs none of this.

The runtime dependencies are small and pure Python (openpyxl, httpx, rich, beautifulsoup4). There is no NumPy, SciPy or pandas requirement: every estimator runs on MORIE’s native array and frame cores. A pandas DataFrame passed to any function is converted on entry.

The other extras are for development: test (pytest) and docs (Sphinx and its plugins).

Editable install from source:

git clone https://github.com/rootcoder007/morie.git
cd morie
python -m venv .venv && source .venv/bin/activate
pip install -e ".[test,interactive]"

Note

On Raspberry Pi OS and Debian Trixie the system /usr/bin/python3 (3.13.5) segfaults on import for several scientific wheels. That is a Debian packaging bug, not a morie bug. Work around it with uv:

curl -LsSf https://astral.sh/uv/install.sh | sh
uv python install 3.12
uv venv ~/.venvs/morie --python 3.12
uv pip install --python ~/.venvs/morie/bin/python morie

R

The R side of the family is published as rmorie (with its companions rmoriebricklayer, the shared C/C++ core, and rmoriedata, the data corpus). All three are served from r-universe; CRAN carries older companions, so keep r-universe first and name them, which replaces an older copy already installed:

if (!requireNamespace("pak", quietly = TRUE)) {
  install.packages("pak", repos = "https://cloud.r-project.org")
}
pak::repo_add(rootcoder007 = "https://rootcoder007.r-universe.dev")
pak::pkg_install(c("rmoriebricklayer", "rmoriedata", "rmorie"))
library(rmorie)

From a terminal, or without pak (keep repos: Rscript has no mirror chooser):

Rscript -e 'if (!requireNamespace("pak", quietly = TRUE)) install.packages("pak", repos = "https://cloud.r-project.org"); pak::repo_add(rootcoder007 = "https://rootcoder007.r-universe.dev"); pak::pkg_install(c("rmoriebricklayer", "rmoriedata", "rmorie"))'
Rscript -e 'install.packages(c("rmoriebricklayer", "rmoriedata", "rmorie"), repos = c("https://rootcoder007.r-universe.dev", "https://cloud.r-project.org"))'

On macOS, CRAN’s R installs r-universe’s prebuilt binaries; Homebrew’s R cannot use them and compiles every package from source.

The copy under r-package/morie in the repository is the same code under the package name morie; it is what the R API pages on this site are built from, and it installs from source with

install.packages(c("rmoriebricklayer", "rmoriedata"),
                 repos = c("https://rootcoder007.r-universe.dev",
                           "https://cloud.r-project.org"))
install.packages("r-package/morie", repos = NULL, type = "source")

Either way, every exported function is called morie_*.

A source install does not pull in Suggests packages. Install these manually: survey is required for the eBAC modules (without it morie pipeline --all stops short of 23/23), testthat for running the R tests, and smotefamily (optional) for non-empty SMOTE outputs:

install.packages(c("survey", "testthat", "smotefamily"),
                 repos = "https://cloud.r-project.org/")

Other channels

# One-line installer (Linux / macOS / WSL): detects pip and R, installs both
curl -fsSL https://rootcoder007.github.io/morie/install.sh | bash

# Homebrew (macOS / Linuxbrew)
brew tap rootcoder007/morie
brew install morie

# Docker (zero local dependencies)
docker run --rm ghcr.io/rootcoder007/morie:latest morie --help

macOS

brew install python r
pip install morie

Linux

Debian, Ubuntu and Raspberry Pi OS mark the system Python “externally managed” (PEP 668), so a bare pip install stops with an error. Install into a virtual environment; it needs only the stock python3:

# Debian/Ubuntu (add python3-venv if `venv` is missing)
sudo apt-get install -y r-base python3 python3-venv
python3 -m venv ~/.venvs/morie
source ~/.venvs/morie/bin/activate
pip install -U morie
morie --version

Activate the venv in each new shell (source ~/.venvs/morie/bin/activate) or call ~/.venvs/morie/bin/morie directly. Other distributions: pip install morie in any Python 3.10+ environment.

Windows

winget install -e --id RProject.R
winget install -e --id Python.Python.3.12
pip install morie

The R package is checked on Windows in CI; native Windows and WSL2 are both supported.

Verifying the install

morie list-modules          # prints the 23 registered analysis modules
morie doctor                # checks LLM providers, datasets, R, Docker
morie selftest              # smoke test of every subsystem
morie --help
library(rmorie)
morie_list_datasets()

LLM provider setup

The assistant (morie ask, morie chat, morie percy) uses the model you bring, in this order; nothing is hosted for you (details in Language models and the data key):

  1. Your own OpenAI-compatible server (LM Studio, vLLM, llama.cpp, a gateway): morie config set own.url http://localhost:1234/v1 (and own.model, own.key).

  2. A provider’s key: export ANTHROPIC_API_KEY=... (or OPENAI_API_KEY, GEMINI_API_KEY, GROQ_API_KEY, … 16 providers), or morie config set anthropic.key; the model is MORIE_<PROVIDER>_MODEL or <provider>.model.

  3. Ollama (local, private): install with curl -fsSL https://ollama.com/install.sh | sh, start it (ollama serve, the app, or its service) and pull a model; the first one pulled is used unless OLLAMA_MODEL names another (morie percysuits pulls the Perseus models).

  4. Local fallback: automatic. Keyword-matched help text, no network.6. Local fallback: automatic. Keyword-matched help text, no network.

Run morie doctor to see which providers are currently available.