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.1.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.1-py3-none-any.whl (24.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: manicule_mlx-0.1.1.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.1.tar.gz
Algorithm Hash digest
SHA256 1c52a8ad09ee3d18d85f7555720f38cd0f70fcddc1eb8fb251f002aeb9b5b9db
MD5 fc74a8593d12d426d933ba477b19e905
BLAKE2b-256 df31810e0ae88b959a2bce32e9bdb09ac5e9eb7b094c0bb88b66431c5a39757f

See more details on using hashes here.

Provenance

The following attestation bundles were made for manicule_mlx-0.1.1.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.1-py3-none-any.whl.

File metadata

  • Download URL: manicule_mlx-0.1.1-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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 5e30e5af0b40386dd23990d0aaa198aebf56ef09fec4eb44d3bf2ed1ae39d1f9
MD5 38e1eed7c80c21c99d0f1ba9c7e0d8da
BLAKE2b-256 b74456a7155a95f50c3f99af586b7945242a91581a8fd67881a51def32071dab

See more details on using hashes here.

Provenance

The following attestation bundles were made for manicule_mlx-0.1.1-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

0.1.3

2 files

0.1.2

2 files

This release

0.1.1 This release

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