Dependency graph

                   ┌─────────────────┐
                   │    installer    │   ←── user entry point
                   │ (brew, curl|sh) │
                   └────────┬────────┘
                            │ installs
          ┌─────────────────┼──────────────────┐
          ▼                 ▼                  ▼
    ┌──────────┐      ┌──────────┐       ┌──────────┐
    │   esml   │◀────┤turboquant│       │   tide   │
    │  (core)  │     │ (PIP VCS)│       │   (Go)   │
    └────┬─────┘      └──────────┘       └──────────┘
         │
         │ depends on
         ▼
    ┌──────────┐      ┌──────────┐
    │  perseus │◀─────│autoresear│
    │  (PIP VCS│      │ch (MPS / │
    └────┬─────┘      │ CUDA)    │
         │            └────┬─────┘
         │ talks to        │ PTQ via
         ▼                 ▼
    ┌──────────┐      ┌──────────┐
    │  Ollama  │◀─────│turboquant│
    │ (daemon) │      │          │
    └──────────┘      └──────────┘

    Pi-specific:
    ┌──────────┐      ┌──────────┐
    │   luci   │─────▶│ perseus- │─────▶ Ollama
    │ (agent)  │      │  relay   │
    └──────────┘      └──────────┘
    ┌──────────┐
    │  kronos  │   (Rust, Pi-native terminal multiplexer)
    └──────────┘

    Meta:
    ┌───────────────────────────────────┐
    │        llamaclaw (umbrella)        │
    │  submodules: all 10 sub-repos      │
    │  scripts: init / status / release  │
    └───────────────────────────────────┘
    ┌───────────────────────────────────┐
    │         yoda (diary)              │
    │  .claude/*, yodavision/*          │
    └───────────────────────────────────┘
    ┌───────────────────────────────────┐
    │         deploy (configs)          │
    │  mac launchd, pi systemd          │
    └───────────────────────────────────┘

Runtime dependencies

esml (pyproject.toml):

dependencies = [
    "numpy>=1.26", "scipy>=1.12", "pandas>=2.0",
    "statsmodels>=0.14", "scikit-learn>=1.3",
    "turboquant @ git+https://github.com/llamaclaw/turboquant.git@dev",
    "perseus    @ git+https://github.com/llamaclaw/perseus.git@dev",
]

turboquant (pyproject.toml):

dependencies = ["numpy>=1.24", "scipy>=1.10"]

perseus (pyproject.toml):

dependencies = ["httpx>=0.27"]

Perseus has an optional esml dependency at import time: when esml.cpads and esml.modules are available (i.e. esml is installed alongside), Perseus uses them for richer context injection. Otherwise it falls back to empty context — the cross-package coupling is graceful, not required.

Build-time dependencies

Repo

What you need

esml

Python 3.10+, R 4.3+, gfortran, libopenblas, pkg-config

turboquant

Python 3.10+, C compiler (for the GGML bridge)

perseus

Python 3.10+

autoresearch

Python 3.10, PyTorch with MPS or CUDA

tide

Go 1.26+

kronos

Rust 1.75+

luci

bash, ssh

yoda

— (Markdown only)

deploy

— (config files)

installer

Ruby (Homebrew formula), bash (curl installer)

Why pip VCS URLs instead of PyPI?

During the private incubation phase, the sub-repos aren’t on PyPI. git+ssh:// VCS URLs let us iterate quickly across repos without version-bump ceremony. Once the ecosystem stabilizes and a sub-repo goes public, it gets a PyPI release and the VCS URL becomes a semver pin.