Multi-provider embeddings CLI
Project description
embx
embx is a multi-provider embeddings CLI for quick experimentation and automation.
Why this exists
- Use one command surface across OpenAI, OpenRouter, Voyage, and Ollama.
- Keep output script-friendly (
json,jsonl) but readable by default. - Add cache and config layering so provider switching is painless.
Install
pip install embx-cli
For local development from source:
pip install -e ".[dev]"
Quick start
# Show providers
embx providers
# Interactive setup flow
embx connect
# Configure multiple providers in one run and test connectivity
embx connect --all --test
# Test one provider in non-interactive mode
embx connect --provider openrouter --api-key "$EMBX_OPENROUTER_API_KEY" --non-interactive --test
# Configure HuggingFace provider
embx connect --provider huggingface --api-key "$EMBX_HUGGINGFACE_API_KEY" --non-interactive
# List available embedding models
embx models --provider openrouter
embx models --provider openrouter --format json
# HuggingFace model discovery (remote/local/all)
embx models --provider huggingface --source remote --search mini --limit 10
embx models --provider huggingface --source local
# Select one model id for shell pipelines
embx models --provider openrouter --pick 1
embx models --provider openrouter --choose
# Interactive model browsing
embx models --interactive
# Interactive config editing
embx config set
embx config set --key default_provider --value huggingface --non-interactive
# Check provider configuration and readiness
embx doctor
embx doctor --only-configured --check-network
embx doctor --only-configured --check-auth
# Optional: initialize config manually
embx config init
# Embed a single text (argument)
embx embed "vector databases are useful"
# Embed from stdin
printf "semantic search" | embx embed --format json
# Embed as CSV
embx embed "semantic search" --format csv
# Batch embed line-delimited file
embx batch inputs.txt --format jsonl --output outputs.jsonl
# Compare providers for the same input
embx compare "semantic retrieval" --providers openai,openrouter,voyage,ollama
# Compare in machine-readable mode
embx compare "semantic retrieval" --format json --output compare.json
# Rank providers by latency or cost
embx compare "semantic retrieval" --providers openai,voyage --rank-by latency
# Rank providers by embedding agreement quality
embx compare "semantic retrieval" --providers openai,voyage,ollama --rank-by quality
# Emit CSV for spreadsheets or BI tools
embx compare "semantic retrieval" --providers openai,voyage --format csv
embx batch inputs.txt --format csv --output embeddings.csv
# Skip providers without configured credentials
embx compare "semantic retrieval" --providers openai,voyage,ollama --only-configured
# Show top 2 ranked providers and hide failed rows
embx compare "semantic retrieval" --rank-by quality --top 2 --hide-errors
# Markdown table output
embx compare "semantic retrieval" --format md
# Retries with backoff for transient provider failures
embx embed "semantic retrieval" --provider openrouter --retries 2 --retry-backoff 0.2
# HuggingFace embeddings inference
embx embed "semantic retrieval" --provider huggingface --model sentence-transformers/all-MiniLM-L6-v2
Config precedence
- CLI flags
- Environment variables (
EMBX_*) - Config file (
~/.config/embx/config.json) - Built-in defaults
Shell completions
Typer provides completion out of the box:
embx --install-completion
embx --show-completion
Current status
- Core command scaffolding is implemented.
- Provider integrations are intentionally minimal and extensible.
comparecommand is available for side-by-side provider checks.- Docs in
docs/explain architecture and roadmap.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file embx_cli-0.1.1.tar.gz.
File metadata
- Download URL: embx_cli-0.1.1.tar.gz
- Upload date:
- Size: 25.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a16585db9c7fa54f4d9ef002bfac3ccb586e5addccffbb0812f991ae495c9ee1
|
|
| MD5 |
4f7a36b837d58b8f2ed7c3d5c49dca5b
|
|
| BLAKE2b-256 |
177e0c2ec4b4d7ee0463624a22f0fe0e5d19440e59d7ba74fd3630a0eeb829cd
|
Provenance
The following attestation bundles were made for embx_cli-0.1.1.tar.gz:
Publisher:
publish.yml on vicmcorrea/embx
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
embx_cli-0.1.1.tar.gz -
Subject digest:
a16585db9c7fa54f4d9ef002bfac3ccb586e5addccffbb0812f991ae495c9ee1 - Sigstore transparency entry: 976171867
- Sigstore integration time:
-
Permalink:
vicmcorrea/embx@15aa24349008d8a6c4197f08d120c9611b832417 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/vicmcorrea
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@15aa24349008d8a6c4197f08d120c9611b832417 -
Trigger Event:
push
-
Statement type:
File details
Details for the file embx_cli-0.1.1-py3-none-any.whl.
File metadata
- Download URL: embx_cli-0.1.1-py3-none-any.whl
- Upload date:
- Size: 38.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cdadd39caa7e298083ddbf6e5a5a078af08e63a536984cd92dee4bbbdc6035b0
|
|
| MD5 |
21fcfb219752f41b04b94159a7e36996
|
|
| BLAKE2b-256 |
37374441aa6407da775904958c445bb789c703fa7a2975d744e3b145de508abc
|
Provenance
The following attestation bundles were made for embx_cli-0.1.1-py3-none-any.whl:
Publisher:
publish.yml on vicmcorrea/embx
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
embx_cli-0.1.1-py3-none-any.whl -
Subject digest:
cdadd39caa7e298083ddbf6e5a5a078af08e63a536984cd92dee4bbbdc6035b0 - Sigstore transparency entry: 976171869
- Sigstore integration time:
-
Permalink:
vicmcorrea/embx@15aa24349008d8a6c4197f08d120c9611b832417 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/vicmcorrea
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@15aa24349008d8a6c4197f08d120c9611b832417 -
Trigger Event:
push
-
Statement type: