Skip to main content

manicule-mlx

The Metal-native embedding backend for manicule, on Apple Silicon.

uv pip install manicule manicule-mlx

Then select it:

[embedding]
provider = "mlx"

License — read this first

This package is GPL-3.0-or-later. manicule itself is MIT. They live in one repository and they are not under one license.

License
manicule — everything under src/manicule/ MIT
manicule-plugin-example, manicule-plugin-hostile MIT
manicule-mlx — everything under this directory GPL-3.0-or-later

The reason is one dependency. mlx-embeddings is GPL-3.0, and a backend that links it is very likely a derivative work. Rather than make the whole project copyleft to obtain one accelerated backend — which is what manicule did until this split — the backend that carries the obligation is packaged on its own. MIT code may be incorporated into a GPL work freely; the reverse is not true, which is why the boundary falls exactly here.

What that means in practice:

  • Installing manicule alone gets you an MIT program with no GPL anywhere in its dependency closure. The onnx backend is the default and runs everywhere.
  • Installing both produces a combined work on your machine that is GPL-3.0. Running it imposes nothing on you — the GPL's obligations attach to distribution. If you redistribute the combination, they attach to you.
  • Writing a plugin for manicule does not make it GPL. Writing one that imports manicule_mlx very likely does.

Nothing here decides it for you. Take advice if you intend to distribute either manicule or a plugin under other terms.

Why it exists

On Apple Silicon this backend is roughly 4–5× faster than onnxruntime on the indexing path. Measured on an M4 Max, BAAI/bge-m3, 512-token chunks, batch 32, five interleaved repetitions:

Chunk length MLX onnxruntime Ratio
128 tokens 136.7 chunks/s 24.5 chunks/s 5.58×
256 tokens 64.1 chunks/s 12.3 chunks/s 5.23×
512 tokens 25.6 chunks/s 6.0 chunks/s 4.28×
~24 tokens (a query) 98.7 chunks/s 80.0 chunks/s 1.23×

The gap is on indexing, not on queries. A corpus of 270 000 chunks is about 3 hours here and about 12 on onnxruntime; a single query differs by roughly two milliseconds, which vanishes under the generation call that follows it.

The vectors are the same either way. Cosine agreement between the two backends is 0.99999998 with a largest component difference of 2.1 × 10⁻⁵, retrieval ranking is identical, and the two write byte-identical canonical fingerprints. backend is excluded from EmbedFingerprint identity precisely so that installing or removing this package is never a re-embed. tests/test_parity.py in this package is what licenses that claim, and it is the reason the test lives here rather than in manicule: the plugin asserts parity against the reference, in the same CI run.

Requirements

Apple Silicon. mlx-embeddings is marked sys_platform == 'darwin' and platform_machine == 'arm64', so on any other platform this distribution installs and the backend refuses at setup with a message naming onnx — rather than failing to install and taking the rest of an environment with it.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

manicule_mlx-0.1.3.tar.gz (38.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

manicule_mlx-0.1.3-py3-none-any.whl (24.3 kB view details)

Uploaded Python 3

File details

Details for the file manicule_mlx-0.1.3.tar.gz.

File metadata

  • Download URL: manicule_mlx-0.1.3.tar.gz
  • Upload date:
  • Size: 38.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for manicule_mlx-0.1.3.tar.gz
Algorithm Hash digest
SHA256 aa100c68bc9021f34728074d9daa2e6c69a83de232b4770fc8337ca01b2b48b3
MD5 56d6d94da5dcc700bc841f23f1115e5d
BLAKE2b-256 832dd2ca41d80a255ba9aa069fe599c36a0d6ca3e68140e2ac25b091ff39a567

See more details on using hashes here.

Provenance

The following attestation bundles were made for manicule_mlx-0.1.3.tar.gz:

Publisher: release.yml on mgd43b/manicule

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file manicule_mlx-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: manicule_mlx-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 24.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for manicule_mlx-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 9e3dbbe28080f99278da9d8d306d2b4081eb85addde20f1e0f7758d100157e12
MD5 8c147db7eb860557d48f39a992a1cbde
BLAKE2b-256 a38cbbd2298a9c391206fee77a1404807ed2d57376590a799ddf31f76177b791

See more details on using hashes here.

Provenance

The following attestation bundles were made for manicule_mlx-0.1.3-py3-none-any.whl:

Publisher: release.yml on mgd43b/manicule

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.1.15

2 files

0.1.14

2 files

0.1.13

2 files

0.1.12

2 files

0.1.11

2 files

0.1.10

2 files

0.1.9

2 files

0.1.8

2 files

0.1.7

2 files

0.1.6

2 files

0.1.5

2 files

0.1.4

2 files

This release

0.1.3 This release

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page