Kokoro-FastAPI ships English, Spanish, French, Hindi, Italian, Japanese, Portuguese and Chinese voices only. The German presets pointed at voice ids no Kokoro server has, so German users either got English voices or picked a voice that failed to speak. The local voice now also lists the German voices whose Piper model is installed (PIPER_BASE_URL) and speaks them through Piper's /synthesize as WAV. Thorsten, the clearest model, is the German default. Mobile plays WAV as well as MP3, and the E2E voice stub stands in for Piper. Claude-Session: https://claude.ai/code/session_01KWEAjTw26eRf3ZXTXfRjmD Co-authored-by: Claude <noreply@anthropic.com>
130 lines
3.6 KiB
Markdown
130 lines
3.6 KiB
Markdown
# Local Setup / Lokales Setup — evOo
|
||
|
||
**DE** · Startbefehle für die lokale Programmier-Maschine.
|
||
**EN** · Start commands for the local programming machine.
|
||
|
||
## Prerequisites / Voraussetzungen
|
||
|
||
- Node.js **≥ 22** (22.x / 24.x / 26+; not 23.x or 25.x)
|
||
- **pnpm 9** (`corepack enable && corepack prepare pnpm@9.15.0 --activate`)
|
||
- **Docker** (Postgres + optional sandboxes / Kokoro)
|
||
- Git, OpenSSL
|
||
|
||
## 1. Env
|
||
|
||
```bash
|
||
cp .env.example .env
|
||
```
|
||
|
||
Minimum secrets (use independent long random values):
|
||
|
||
| Variable | Notes |
|
||
|----------|-------|
|
||
| `POSTGRES_PASSWORD` | e.g. `openssl rand -hex 16` |
|
||
| `DATABASE_URL` | Same password; host port **5433** with postgres-host overlay |
|
||
| `BETTER_AUTH_SECRET` | long random |
|
||
| `ENCRYPTION_KEY` | long random |
|
||
| `SCREEN_PROXY_SECRET` | long random |
|
||
| `SANDBOX_SUPERVISOR_TOKEN` | required for Docker sandboxes |
|
||
|
||
Optional: `OPENROUTER_API_KEY`, Composio/Pipedream, `KOKORO_BASE_URL`, `PIPER_BASE_URL`.
|
||
|
||
## 2. Postgres
|
||
|
||
```bash
|
||
docker compose --env-file .env \
|
||
-f infra/compose/docker-compose.yml \
|
||
-f infra/compose/docker-compose.postgres-host.yml \
|
||
up postgres -d
|
||
```
|
||
|
||
Default host URL shape:
|
||
|
||
```text
|
||
postgresql://rakazo:<POSTGRES_PASSWORD>@127.0.0.1:5433/rakazo
|
||
```
|
||
|
||
(DB role/db names may still say `rakazo` — tech debt; do not rename without migration.)
|
||
|
||
## 3. Install & migrate
|
||
|
||
```bash
|
||
pnpm install
|
||
pnpm db:generate
|
||
pnpm db:migrate
|
||
```
|
||
|
||
Optional sandbox image:
|
||
|
||
```bash
|
||
pnpm sandbox:build
|
||
```
|
||
|
||
## 4. Dev servers
|
||
|
||
```bash
|
||
pnpm dev
|
||
```
|
||
|
||
Starts API, worker, web, and sandbox-supervisor (turbo filters in root `package.json`).
|
||
|
||
| Surface | URL |
|
||
|---------|-----|
|
||
| App (Vite) | http://127.0.0.1:**5173** |
|
||
| API | http://127.0.0.1:**3100** |
|
||
|
||
Desktop:
|
||
|
||
```bash
|
||
pnpm --filter @rakazo/desktop dev
|
||
```
|
||
|
||
### iPhone on the same Wi‑Fi (Mac LAN)
|
||
|
||
The mobile app can talk to a self-hosted API over **HTTP** on your local network. The API must listen on all interfaces, not only loopback.
|
||
|
||
```bash
|
||
# sets API_HOST=0.0.0.0 in .env, prints the URL, starts pnpm dev
|
||
bash scripts/dev-mobile-lan.sh
|
||
```
|
||
|
||
On the iPhone: open evOo → **Custom server** on sign-in → `http://<mac-lan-ip>:3100` (the script prints the IP). Allow **Local Network** when iOS asks.
|
||
|
||
Optional dev client: `pnpm --filter @rakazo/mobile start` and scan the QR code with Expo Go (you still set the custom server URL in the app).
|
||
|
||
## 5. Local models / Ollama seed
|
||
|
||
```bash
|
||
pnpm exec tsx scripts/seed-ollama.ts
|
||
```
|
||
|
||
Pi local provider: `packages/adapters/src/pi-local-provider.ts`.
|
||
|
||
## 6. Voice / Kokoro (not vendored)
|
||
|
||
Voice blobs are excluded from this repo. Run Kokoro-FastAPI yourself:
|
||
|
||
```bash
|
||
docker run -p 8880:8880 ghcr.io/remsky/kokoro-fastapi-cpu:latest
|
||
export KOKORO_BASE_URL=http://127.0.0.1:8880
|
||
```
|
||
|
||
Then connect **Kokoro** in Voice settings. German voices come from Piper (`PIPER_BASE_URL`). See [kokoro-voice.md](./kokoro-voice.md).
|
||
|
||
## 7. Antigravity / future tools
|
||
|
||
| Tool | Path |
|
||
|------|------|
|
||
| self-update | `packages/core/src/self-update.ts` |
|
||
| local-stack | `apps/desktop/src/local-stack.ts` |
|
||
| pi-local-provider | `packages/adapters/src/pi-local-provider.ts` |
|
||
| seed-ollama | `scripts/seed-ollama.ts` |
|
||
|
||
## Tech debt: `@rakazo/*` package names
|
||
|
||
Display brand is **evOo**. Workspace package names remain `@rakazo/api`, `@rakazo/web`, `@rakazo/core`, … and some env/compose identifiers still use `RAKAZO_*` / DB name `rakazo`. Renaming would break imports and lockfile; track as follow-up.
|
||
|
||
## Source
|
||
|
||
Clean history cut from `cynarAI/evoo` commit `f00577b` on branch `antigravity-handoff/project-timeline` (Voice First + project timeline). This repo does **not** carry the old multi-remote history.
|