No description
| docs | ||
| infra | ||
| packages/shared | ||
| services | ||
| .env.example | ||
| .gitignore | ||
| docker-compose.yml | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| tsconfig.base.json | ||
Jarvis Production System
Production-ready modular assistant backend with always-on event processing, secure tool execution, speech I/O and proactive notifications.
Dockerfiles
services/core-api/Dockerfileservices/event-engine/Dockerfileservices/speech-service/Dockerfile
Python Voice Scripts
services/speech-service/app/main.py(FastAPI:/stt,/tts,/health)services/speech-service/requirements.txtservices/speech-service/Dockerfile
The Python voice service is started by Docker Compose as service speech-service.
Simple Install + Setup (from Git)
- Install Docker Desktop (Windows/macOS) or Docker Engine + Compose plugin (Linux).
- Clone project:
git clone https://git.radionet.app/UkY/jarvis.git cd jarvis - Copy environment:
cp .env.example .env - Start complete stack (auto-installs and initializes DB/Redis/Ollama model):
docker compose up --build - Open webapp:
http://localhost:8080/jarvis/- unlock with
WEBAPP_ACCESS_PASSWORD
- Verify voice container is running:
docker compose ps speech-service curl http://localhost:7000/health
Docker Setup (Local Ollama)
- Copy env:
cp .env.example .env - Start full stack (includes automatic Ollama model pull via
ollama-init):docker compose up --build - Optional health checks:
GET http://localhost:8080/api/healthGET http://localhost:7000/healthGET http://localhost:11434/api/tags
Quick Start
- Login:
POST http://localhost:8080/api/auth/login- default users:
admin,operator,viewer - default password for all seeded users:
password
- Trigger AI tool decision:
POST http://localhost:8080/api/ai/tool-call- body example:
{ "prompt": "restart core api please" }
- Jarvis voice webapp:
- say:
Jarvis wie viel grad ist es gerade in Saarbruecken? - mic listens only to commands starting with
Jarvis
- say:
Admin Mode + Server Control
- Activate admin mode (role
admintoken required):POST /api/admin/activatewith{ "password": "ADMIN_MODE_PASSWORD" }
- Test SSH connection:
POST /api/admin/connectwith{ "targetId": "server-main" }
- Execute allowlisted action:
POST /api/admin/execute- example body:
{ "targetId": "server-main", "actionId": "service.status", "params": { "service": "nginx" } }
- Approve risky action:
POST /api/admin/approvewith{ "requestId": 123 }
Server targets are defined in infra/admin/servers.json.
Allowed remote actions are defined in infra/admin/actions.json.
API Surface (Core)
POST /api/auth/loginPOST /api/eventsPOST /api/health/wearableGET /api/toolsPOST /api/tools/executePOST /api/ai/tool-callPOST /api/assistant/chatPOST /api/webapp/accessPOST /api/admin/activatePOST /api/admin/connectPOST /api/admin/executePOST /api/admin/approveGET /api/healthWS /ws/events
Speech Service
POST http://localhost:7000/sttPOST http://localhost:7000/ttsGET http://localhost:7000/health
Docs
docs/architecture.mddocs/extension-guide.mddocs/docker-setup.md