moorcheh-edge
Python package and CLI for running moorcheh-edge locally and calling its API.
- CLI:
moorcheh-edge - Package:
moorcheh-edge - Python import:
moorcheh_edge
Requires Docker (Docker Desktop or Docker Engine).
Install
pip install moorcheh-edge
Quick start
Start the local edge runtime. Default up starts Docker + warm BGE embedding only (no Ollama download).
On first run this automatically:
- pulls the moorcheh-edge Docker image and starts the search server
- starts a background embedding daemon that keeps BGE loaded in RAM (stopped by
moorcheh-edge down) - downloads BGE-small-en-v1.5 (~67 MB) for text search/upload
Ollama / AI answer is opt-in — not downloaded by default.
moorcheh-edge up
Interactive prompts (embedding yes/no, AI answer yes/no, keep LLM in RAM yes/no) appear in a terminal. Use -y to skip prompts and accept defaults.
moorcheh-edge up -y
Enable AI answer (install Ollama + pull model; loads on first answer, not kept in RAM):
moorcheh-edge up --with-llm
Enable AI answer and keep LLM warm in RAM (~1.1 GB, default 24h):
moorcheh-edge up --with-llm --warm-llm
Skip Moorcheh embedding (your own vectors only):
moorcheh-edge up --skip-embedding
Docker only (no embed, no LLM):
moorcheh-edge up --skip-embedding -y
Default API:
http://localhost:8080
Default data directory:
~/.moorcheh-edge/data
Check health/status:
moorcheh-edge status
Stop the runtime:
moorcheh-edge down
Commands
moorcheh-edge up/down/statusmoorcheh-edge upload-documents— embed text locally (384-dim text store)moorcheh-edge upload-vectors— upload pre-computed vectors (vector store)moorcheh-edge search—--query-textor--query-vector-jsonmoorcheh-edge answer— RAG via serverPOST /answer(embeds locally, LLM on server)moorcheh-edge voice setup— full voice install (packages, Whisper, Piper, ALSA config)moorcheh-edge voice listen— record mic → Whisper → print textmoorcheh-edge voice speak --text "..."— Piper TTS (or espeak-ng) → speakermoorcheh-edge voice ask— push-to-talk kiosk: record → RAG answer → speakmoorcheh-edge delete— delete items by idmoorcheh-edge clear-store— wipe all items and reset dimension/mode (prompts for confirmation; use-yto skip)
All API commands accept --base-url, for example:
moorcheh-edge status --base-url http://localhost:8081
Use --skip-embedding on up to skip BGE entirely (no download, no warm daemon).
Use --with-llm to install Ollama and pull the answer model (~400 MB).
Use --warm-llm with --with-llm to preload the LLM into RAM (default keep-alive 24h).
Answer uses local Ollama with fixed model qwen2.5:0.5b-instruct on the host; the Docker server reaches it at http://host.docker.internal:11434/v1.
When search returns no passages, /answer returns I don't have enough information to answer that question. without calling the LLM.
Voice (UNO Q kiosk)
One command installs system packages, Whisper STT, Piper TTS, models, and auto-configures ALSA (no env vars needed):
moorcheh-edge up --server-image moorcheh-edge:uno-q
moorcheh-edge voice setup
moorcheh-edge voice check
moorcheh-edge voice ask --kiosk-mode
Offline pipeline: ALSA → Whisper tiny.en → RAG answer → Piper TTS (fallback espeak-ng).
Audio device defaults are saved to ~/.moorcheh-edge/voice/audio.json. Optional overrides: MOORCHEH_AUDIO_CAPTURE, MOORCHEH_AUDIO_PLAYBACK.
Bluetooth speakers (e.g. Arduino UNO Q): pair manually with bluetoothctl, then set "playback": "bluetooth" in ~/.moorcheh-edge/voice/audio.json.
Example ~/.moorcheh-edge/voice/audio.json for USB mic + Bluetooth out:
{
"capture": "plughw:0,0",
"playback": "bluetooth",
"bt_device": "BC:87:FA:55:1A:47"
}
Pair the speaker first — see docs CLI → Voice → Bluetooth (manual setup).
Notes
- Answer / RAG: client embeds the question, server searches + builds prompt + calls LLM
- One flat store per container (no namespaces)
- Text mode: client embeds with BGE-small-en-v1.5 (384 dimensions); set on first upload
- Vector mode: client sends pre-computed vectors; dimension locked on first upload (128–1536)
- Cannot mix text and vector modes in the same store
- Global item cap: 10,000
- Model cache:
~/.moorcheh-edge/models
Metadata
Release files for moorcheh-edge 0.2.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| moorcheh_edge-0.2.3.tar.gz | 55.7 kB | Without provenance | Details for moorcheh_edge-0.2.3.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| moorcheh_edge-0.2.3-py3-none-any.whl | Python 3 | none | any | Details for moorcheh_edge-0.2.3-py3-none-any.whl |
Total release size: 117.6 kB
Release files / moorcheh_edge-0.2.3.tar.gz
| Download URL | moorcheh_edge-0.2.3.tar.gz |
|---|---|
| Size | 55.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5b9972d6b8a26b6a51ccdf83771e4f386a3976322c403989c6147e4245678c6a
|
|
BLAKE2b-256 checksum How to use checksums |
7ddcf4067014caded1f54b6968ac98959eb280a37ab793b5682ba124cce3a059
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / moorcheh_edge-0.2.3-py3-none-any.whl
| Download URL | moorcheh_edge-0.2.3-py3-none-any.whl |
|---|---|
| Size | 61.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a0a958af003b8bcb89f0009665ba00cbfaad77c108a54423cb97e35510bfbf77
|
|
BLAKE2b-256 checksum How to use checksums |
a791724dc8c1aca55cbdb10541ff0eb764f098adecc1b5c9361d23a03c3b60c1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Security for moorcheh-edge 0.2.3
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.