No description
Find a file
2026-02-19 17:17:26 +01:00
docs update 2026-02-13 21:13:15 +01:00
infra update 2026-02-13 21:01:27 +01:00
packages/shared update 2026-02-19 15:40:10 +01:00
services update 2026-02-19 17:17:26 +01:00
.env.example update 2026-02-19 17:17:26 +01:00
.gitignore update 2026-02-13 21:01:27 +01:00
docker-compose.yml update 2026-02-13 21:13:15 +01:00
package-lock.json update 2026-02-19 16:45:39 +01:00
package.json update 2026-02-13 21:01:27 +01:00
README.md update 2026-02-13 21:13:15 +01:00
tsconfig.base.json update 2026-02-13 21:01:27 +01:00

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/Dockerfile
  • services/event-engine/Dockerfile
  • services/speech-service/Dockerfile

Python Voice Scripts

  • services/speech-service/app/main.py (FastAPI: /stt, /tts, /health)
  • services/speech-service/requirements.txt
  • services/speech-service/Dockerfile

The Python voice service is started by Docker Compose as service speech-service.

Simple Install + Setup (from Git)

  1. Install Docker Desktop (Windows/macOS) or Docker Engine + Compose plugin (Linux).
  2. Clone project:
    git clone https://git.radionet.app/UkY/jarvis.git
    cd jarvis
    
  3. Copy environment:
    cp .env.example .env
    
  4. Start complete stack (auto-installs and initializes DB/Redis/Ollama model):
    docker compose up --build
    
  5. Open webapp:
    • http://localhost:8080/jarvis/
    • unlock with WEBAPP_ACCESS_PASSWORD
  6. Verify voice container is running:
    docker compose ps speech-service
    curl http://localhost:7000/health
    

Docker Setup (Local Ollama)

  1. Copy env:
    cp .env.example .env
    
  2. Start full stack (includes automatic Ollama model pull via ollama-init):
    docker compose up --build
    
  3. Optional health checks:
    • GET http://localhost:8080/api/health
    • GET http://localhost:7000/health
    • GET http://localhost:11434/api/tags

Quick Start

  1. Login:
    • POST http://localhost:8080/api/auth/login
    • default users: admin, operator, viewer
    • default password for all seeded users: password
  2. Trigger AI tool decision:
    • POST http://localhost:8080/api/ai/tool-call
    • body example: { "prompt": "restart core api please" }
  3. Jarvis voice webapp:
    • say: Jarvis wie viel grad ist es gerade in Saarbruecken?
    • mic listens only to commands starting with Jarvis

Admin Mode + Server Control

  1. Activate admin mode (role admin token required):
    • POST /api/admin/activate with { "password": "ADMIN_MODE_PASSWORD" }
  2. Test SSH connection:
    • POST /api/admin/connect with { "targetId": "server-main" }
  3. Execute allowlisted action:
    • POST /api/admin/execute
    • example body: { "targetId": "server-main", "actionId": "service.status", "params": { "service": "nginx" } }
  4. Approve risky action:
    • POST /api/admin/approve with { "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/login
  • POST /api/events
  • POST /api/health/wearable
  • GET /api/tools
  • POST /api/tools/execute
  • POST /api/ai/tool-call
  • POST /api/assistant/chat
  • POST /api/webapp/access
  • POST /api/admin/activate
  • POST /api/admin/connect
  • POST /api/admin/execute
  • POST /api/admin/approve
  • GET /api/health
  • WS /ws/events

Speech Service

  • POST http://localhost:7000/stt
  • POST http://localhost:7000/tts
  • GET http://localhost:7000/health

Docs

  • docs/architecture.md
  • docs/extension-guide.md
  • docs/docker-setup.md