Skip to main content
Deploy a retail kiosk for a demo store like The Brew Corner: shoppers ask about products and policies by text or voice; answers stream to the screen and play on the Arduino UNO Q speaker. Staff manage the catalog and prompts from an Admin screen; customers use a separate Customer screen (both in one web app for this demo).

Clone the repo

git clone https://github.com/moorcheh-ai/retail-kiosk.git
cd retail-kiosk
Full setup steps, troubleshooting, and configuration are in the repo README.

What you need

MachineRole
Display PC (Windows, Linux, or macOS)React UI, retail-kiosk-api, query embeddings
Arduino UNO QMoorcheh Edge (Docker), Ollama, mic + speaker
Hardware (mic, speaker, wiring): Retail Kiosk with Moorcheh (Figma)
Install and run Moorcheh Edge on the UNO Q first. See Arduino UNO Q for venv, Docker, and moorcheh-edge up.

Architecture

PortMachineService
5173PCReact UI
8765PCretail-kiosk-api
8766Arduino UNO Qmoorcheh-edge voice serve
8080Arduino UNO QMoorcheh Edge (search + RAG)
11434Arduino UNO QOllama

Quick start (summary)

1. Arduino UNO Q

Find the board IP in Arduino App LabSettingsNetwork Connections. Connect via SSH:
ssh arduino@<UNO_Q_IP>
Install once (venv + CLI), then each session:
source ~/moorcheh-venv/bin/activate
moorcheh-edge up --with-llm --warm-llm -y
After the first successful up, run voice setup once (moorcheh-edge voice setup, voice cache-holding, etc.). In a second terminal:
source ~/moorcheh-venv/bin/activate
moorcheh-edge voice serve --port 8766

2. Load demo catalog

Copy the demo catalog to the UNO Q and upload vectors to Moorcheh Edge:
scp tests/brew-corner-catalog.json arduino@<UNO_Q_IP>:~/
scp tests/upload-catalog-to-edge.py arduino@<UNO_Q_IP>:~/
On the UNO Q:
source ~/moorcheh-venv/bin/activate
python ~/upload-catalog-to-edge.py --catalog ~/brew-corner-catalog.json -y
If embedding_model and dimension were null in moorcheh-edge status, they are set after this upload.

3. Display PC

cd retail-kiosk
pip install .
cd frontend && npm install
Run the API and UI (set <UNO_Q_IP> from the board):
$env:MOORCHEH_EDGE_URL = "http://<UNO_Q_IP>:8080"
$env:MOORCHEH_VOICE_PROXY_URL = "http://<UNO_Q_IP>:8766"
retail-kiosk-api
Second terminal:
cd frontend
$env:VITE_API_URL = "http://127.0.0.1:8765"
npm run dev

Configuration

VariableWhereDescription
MOORCHEH_EDGE_URLPC APIMoorcheh Edge on UNO Q (e.g. http://192.168.1.50:8080)
MOORCHEH_VOICE_PROXY_URLPC APIVoice server on UNO Q (e.g. http://192.168.1.50:8766)
VITE_API_URLFrontendAPI URL (e.g. http://127.0.0.1:8765)

Next steps

Full README

Complete install, verify, and troubleshooting

Arduino UNO Q

Board setup and Moorcheh Edge

Voice CLI

voice setup, voice serve, and related commands

Voice server API

HTTP endpoints on port 8766

Hardware wiring

Figma guide for mic and speaker