# OpenScribe server Self-hosted FastAPI server: ingests recordings, transcribes them (faster-whisper), summarises them (Ollama), and serves the open API with exports. Everything runs on hardware you own. > Status: M0 scaffold. The API shape is live and browsable at `/docs` with in-memory > stubs. Transcription lands in M5, summaries in M6, real storage/DB alongside. ## Run (dev) ```bash cd server python -m venv .venv . .venv/Scripts/activate # Windows; or: . .venv/bin/activate pip install -r requirements.txt cp .env.example .env # edit as needed uvicorn app.main:app --reload ``` - API docs (Swagger UI): http://localhost:8000/docs - Health: http://localhost:8000/health ## Self-hosted dependencies For the AI features (M5/M6) you run, on your own kit: - **MinIO** (or WebDAV / NAS) for object storage - `OPENSCRIBE_STORAGE_BACKEND=s3`. - **Ollama** for summaries - `ollama serve` and `ollama pull llama3.1`. - **faster-whisper** downloads its model on first use; CPU works, CUDA is faster. None of these are required for plain recording and transfer; they add transcription and summaries. ## Layout ``` app/main.py FastAPI app + routes (mirrors ../api/openapi.yaml) app/config.py Settings from env / .env app/models.py Pydantic models (kept in sync with the OpenAPI schemas) requirements.txt .env.example ``` ## API The contract is `../api/openapi.yaml`. The device implements the LAN "device" paths; this server implements ingest, transcript, summary and export.