# ferrox-inference
Facade crate for [Ferrox](https://github.com/antonellof/ferrox), a
pure-Rust GGUF / MoE inference engine: mmap loaders, quantized CPU +
Apple Metal + CUDA kernels, and an OpenAI-compatible server.
It contains no logic. It re-exports the workspace under one name, so a
dependent writes one line instead of six, and so the project is
findable on crates.io, since the name `ferrox` belongs to an unrelated
crate.
```toml
[dependencies]
ferrox-inference = "0.9"
```
```rust
use ferrox_inference::gguf::ShardedGguf;
let file = ShardedGguf::open("model.gguf")?;
```
## The binaries are elsewhere
```bash
cargo install ferrox-cli # installs the `ferrox` binary
cargo install ferrox-server # OpenAI-compatible HTTP server
```
They are not shipped from this crate on purpose: two crates installing
a binary called `ferrox` would fight over the same path in
`~/.cargo/bin`.
## Features
| `metal` | Apple Metal kernels. Apple Silicon only. |
| `cuda` | CUDA/NVRTC kernels. Needs a CUDA toolkit at build time. |
| `api` | Re-export `ferrox-api` (route constants + wire DTOs). |
Neither GPU feature is on by default: `metal` does not build off Apple
Silicon, and `cuda` needs a toolkit most machines do not have.
CUDA is held to "must compile", there is no pinned benchmark host and
no published receipts for it. Treat a Windows or Linux install as
CPU-only in practice. See
[`docs/FEATURES.md`](https://github.com/antonellof/ferrox/blob/main/docs/FEATURES.md).
## The rest of the workspace
| [`ferrox-gguf`](https://crates.io/crates/ferrox-gguf) | GGUF mmap reader, sharded checkpoints |
| [`ferrox-quant`](https://crates.io/crates/ferrox-quant) | Block layouts, fused dequant+dot |
| [`ferrox-safetensors`](https://crates.io/crates/ferrox-safetensors) | SafeTensors mmap reader |
| [`ferrox-core`](https://crates.io/crates/ferrox-core) | Tensor ops, RoPE, GQA, KV cache |
| [`ferrox-moe`](https://crates.io/crates/ferrox-moe) | Expert routing and dispatch |
| [`ferrox-models`](https://crates.io/crates/ferrox-models) | Loaders and decoder stacks |
| [`ferrox-api`](https://crates.io/crates/ferrox-api) | Route constants + wire DTOs |
| [`ferrox-metal`](https://crates.io/crates/ferrox-metal) | Apple Metal kernels |
| [`ferrox-cuda`](https://crates.io/crates/ferrox-cuda) | CUDA/NVRTC kernels |
Speed claims live in
[`benchmarks/RESULTS.md`](https://github.com/antonellof/ferrox/blob/main/benchmarks/RESULTS.md),
measured against llama.cpp on the same host and GGUF. If there is no
receipt, the table says so.
Apache-2.0.