File size: 2,612 Bytes
9a6e931
65a8715
b093192
65a8715
 
9a6e931
65a8715
9a6e931
 
65a8715
b093192
 
9a6e931
 
65a8715
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b093192
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
---
title: VoxDoc Voice Symptom Triage Assistant
# emoji: 
colorFrom: blue
colorTo: green
sdk: docker
app_port: 7860
pinned: false
license: apache-2.0
short_description: Voice intake and clinical documentation demo
thumbnail: >-
  https://cdn-uploads.huggingface.co/production/uploads/696a57ff06f0d3d8e09b7433/whTfF2UGXkXM5zhjWvt46.png
---

# VoxDoc β€” HF Space Deployment

Demo deployment of [voice-symptom-triage-assistant](https://github.com/JoelJohnsonThomas/voice-symptom-triage-assistant) on Hugging Face Spaces.

> **Demo only.** Hugging Face Spaces are **not HIPAA-compliant**. Do not submit
> real protected health information (PHI). Use synthetic transcripts only.

## How this Space is configured

This Space runs the FastAPI backend on the **free CPU tier**. To stay within
the 2-vCPU / 16-GB RAM budget, MedGemma generation is delegated to **HF
Inference Providers** rather than loaded in-process. ASR (`whisper-small`)
and biomedical NER still run locally on CPU.

| Setting | Value | Why |
|---|---|---|
| `MEDGEMMA_PROVIDER` | `hf-inference` | Avoid loading the 4b model on CPU |
| `DEVICE` / `ENABLE_GPU` | `cpu` / `false` | Free tier has no GPU |
| `ENABLE_IMAGE_ANALYSIS` | `false` | Vision routing not configured here |
| `app_port` | `7860` | HF Spaces default |

## Required Space secrets

Add these in **Settings β†’ Variables and secrets β†’ New secret**:

- `HF_TOKEN` β€” read-token from [huggingface.co/settings/tokens](https://huggingface.co/settings/tokens) with access to MedGemma
- `ENCRYPTION_MASTER_KEY` β€” any strong random string (`openssl rand -hex 32`)
- `JWT_SECRET_KEY` β€” same; used even with auth disabled

## Optional: persist sessions across restarts

The default SQLite store lives on the ephemeral Space filesystem and is lost
on restart. To keep sessions, either:

1. Enable **persistent storage** (Settings β†’ paid feature) and point
   the SQLite file at `/data/voxdoc.db`, **or**
2. Set `DATABASE_URL` to a free hosted Postgres (Neon / Supabase) using the
   `postgresql+asyncpg://...` form.

## Frontend

The React frontend (`frontend/`) is **not** built into this Space β€” deploy it
separately to Vercel/Netlify and point its API base URL at this Space's URL.
The legacy server-rendered UI under `app/static/` is still reachable for
quick testing.

## Local equivalent

```bash
docker build -f deploy/huggingface/Dockerfile -t voxdoc-hf .
docker run -p 7860:7860 \
  -e HF_TOKEN=hf_xxx \
  -e ENCRYPTION_MASTER_KEY=$(openssl rand -hex 32) \
  -e JWT_SECRET_KEY=$(openssl rand -hex 32) \
  voxdoc-hf
```

Open [http://localhost:7860](http://localhost:7860).