Metadata-Version: 2.4
Name: dave-it-guy
Version: 0.2.11
Summary: Dave IT Guy — Deploy AI stacks with one command. OpenClaw, Ollama, Qdrant—fully containerized. Run locally or ship to the cloud. Same stack, anywhere.
Project-URL: Homepage, https://github.com/NeuroGamingLab/dave-it-guy
Project-URL: Documentation, https://github.com/NeuroGamingLab/dave-it-guy#readme
Project-URL: Repository, https://github.com/NeuroGamingLab/dave-it-guy
Project-URL: Issues, https://github.com/NeuroGamingLab/dave-it-guy/issues
Author-email: NeuroGamingLab <NeuroGamingLab@gmail.com>
License-Expression: MIT
License-File: LICENSE
Keywords: ai,deploy,docker,infrastructure,ollama,openclaw,qdrant,search
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Software Development :: Build Tools
Classifier: Topic :: System :: Systems Administration
Requires-Python: >=3.9
Requires-Dist: httpx>=0.24.0
Requires-Dist: jinja2>=3.1.0
Requires-Dist: python-dotenv>=1.0.0
Requires-Dist: pyyaml>=6.0
Requires-Dist: qdrant-client>=1.7.0
Requires-Dist: rich>=13.0.0
Requires-Dist: sentence-transformers>=2.2.0
Requires-Dist: typer>=0.9.0
Provides-Extra: cloud
Requires-Dist: python-hcl2>=4.0.0; extra == 'cloud'
Provides-Extra: dev
Requires-Dist: mypy; extra == 'dev'
Requires-Dist: pytest-cov; extra == 'dev'
Requires-Dist: pytest>=7.0; extra == 'dev'
Requires-Dist: ruff; extra == 'dev'
Provides-Extra: hand
Requires-Dist: mediapipe==0.10.14; extra == 'hand'
Requires-Dist: speechrecognition>=3.10.0; extra == 'hand'
Provides-Extra: search
Requires-Dist: duckduckgo-search>=6.0.0; extra == 'search'
Provides-Extra: voice
Requires-Dist: pyaudio>=0.2.14; extra == 'voice'
Requires-Dist: speechrecognition>=3.10.0; extra == 'voice'
Description-Content-Type: text/markdown

# Lucia The Orchestrator

**Lucia The Orchestrator — deploy OpenClaw with one command, or one hand gesture and voice.**

Docker Compose templates for **OpenClaw**, **Ollama**, **Qdrant**, and **MasterClaw** (spawns worker containers via the Docker socket). CLI: **`dave-it-guy`**. Optional extras: **`[voice]`** for speech-driven control; **hand** / [`hand_interaction`](dave_it_guy/examples/hand_interaction.py) for camera gesture workflows.

| | |
|---|---|
| **CLI** | `dave-it-guy` (Typer) |
| **Python** | ≥ 3.9 |
| **Full command reference** | [`Commands.md`](Commands.md) |

---

## Quick start

```bash
python3 -m venv .venv
source .venv/bin/activate   # or use .venv/bin/dave-it-guy without activating
pip install -e ".[dev]"
dave-it-guy doctor
dave-it-guy deploy openclaw
```

- **OpenClaw UI:** `http://localhost:18789` (gateway port overridable with `--port`)
- **Secrets & config** land under `~/.dave_it_guy/deployments/<stack>/` (see below)

Optional: run the CLI from Docker — [`docker-compose.cli.yml`](docker-compose.cli.yml) + root [`Dockerfile`](Dockerfile) (mounts Docker socket + `~/.dave_it_guy`).

**Voice & hand extras:** `pip install -e ".[dev,voice,hand]"` — **`[hand]` needs Python 3.10+** (MediaPipe pulls packages such as JAX that are not bytecode-compatible on 3.9). **`[voice]`** can stay on 3.9 with `brew install portaudio` on macOS for PyAudio. If install failed mid-way, recreate the venv with `python3.11 -m venv .venv` (or 3.10/3.12), upgrade pip, then reinstall.

---

## What runs where (stacks)

| Stack | Role | Default host port | Main services |
|-------|------|-------------------|---------------|
| **openclaw** | Assistant + local LLM + vector DB + orchestrator | **18789** (gateway), **6333** (Qdrant), **8090** (MasterClaw) | OpenClaw, Ollama, Qdrant, MasterClaw |
| **ollama** | Ollama + Open WebUI | **3000** (WebUI), **11434** (Ollama API) | `ollama`, `open-webui` |
| **rag** | Embeddings + Qdrant + thin API | **8080** (API), **6333** (Qdrant), **8081** (embeddings) | `qdrant`, `embeddings`, `rag-api` |


- **Ollama** in the openclaw stack is **not** exposed on the host unless you pass `--ollama-port` (then `host:11434 → container:11434`).
- **MasterClaw** exposes **8090** by default (`--masterclaw-port` to change). It needs the **Docker socket** to run worker containers; treat that as high privilege.

Templates live under [`dave_it_guy/templates/`](dave_it_guy/templates/); the registry is in [`dave_it_guy/templates/__init__.py`](dave_it_guy/templates/__init__.py).

---

## Deployment directory (rendered output)

After deploy, each stack has a folder:

**`~/.dave_it_guy/deployments/<stack>/`**

| Artifact | Purpose |
|----------|---------|
| `docker-compose.yml` | Rendered Compose (from Jinja templates) |
| `.env` | API keys and env (not for git — keep permissions tight) |
| `config/` | e.g. `openclaw.json` for OpenClaw |
| `workspace/` | OpenClaw workspace bind-mount (openclaw stack) |

Edit files there and run `docker compose up -d` in that directory to apply changes.

---

## CLI entrypoints

| Command | Purpose |
|---------|---------|
| `dave-it-guy list` | List stack templates |
| `dave-it-guy deploy <stack>` | Render template and start stack (`openclaw`, `ollama`, `rag`) |
| `dave-it-guy doctor` | Docker / disk / port checks |
| `dave-it-guy status [stack]` | Container status |
| `dave-it-guy logs <stack>` | Logs (`--follow`, `--service`) |
| `dave-it-guy stop <stack>` | Stop (keeps volumes) |
| `dave-it-guy destroy <stack>` | Remove (`--volumes`, `--yes`) |
| `dave-it-guy masterclaw-tui` | TUI against MasterClaw API |
| `dave-it-guy voice` | Voice control (needs `[voice]` extra) |
| `dave-it-guy sync-openclaw-scheduler` | Sync scheduler script into deployed workspace |

---


