Zero-code radiology AI assistant that runs inside your hospital firewall — DICOM in, structured reports out.
► https://ame.tail19ddab.ts.net:8445/reports ← click any case in the worklist
► Open a sample study directly (MR spine)
The demo runs on a private machine over Tailscale Funnel — availability follows the host's uptime.
All patient names, IDs, and free-text clinical fields are synthetic; DICOM pixel data is anonymized.
A yellow ⚠ DEMO / FICTIONAL DATA banner is visible on every page.
What to try on the demo:
- Open
/reports→ pick a case → 2D viewer with window/level, zoom, pan, length + angle tools - Open
/viewer/<uid>→ NiiVue MPR / 3D volume rendering - Voice dictate + AI report drafting are wired (may take 15–90 s per request; hosted LLM)
- Upload your own anonymized DICOM at
/upload(files stay on host, never re-shared)
Hospital IT administrators who need to deploy midcine in under 5 minutes on existing Docker infrastructure.
- Clone →
docker compose up -d→ paste your Naraya API key. - Verify with
curl http://localhost:8210/health(FastAPI) andcurl http://localhost:3000(Next.js UI). - Optional: enable PACS, Ollama fallback, or TotalSegmentator via
docker-compose.premium.yml.
- Docker Engine ≥ 24.0 (v20.10+ minimum)
- Docker Compose ≥ 2.23 (v2.0+ minimum)
- Linux host (tested on Ubuntu 22.04 LTS)
- 8GB RAM minimum (16GB recommended for premium services)
- Outbound HTTPS (port 443) to Naraya free tier (
api.bynara.ai)
- Clone the repo
git clone https://github.com/midcine/midcine.git && cd midcine- Set the required environment variable
echo "NARAYA_API_KEY=your_free_tier_key_here" > .env- Start the stack
docker compose up -dFastAPI (mcp-bridge) health check
curl -s http://localhost:8210/health | jq
# Expected: {"status":"ok","version":"0.4.2"}Next.js UI
curl -s http://localhost:3000 | grep -q "midcine" && echo "UI up" || echo "UI down"Enable premium services by merging the premium compose file:
# Option 1: Override file
cp docker-compose.premium.yml docker-compose.override.yml
docker compose up -d
# Option 2: Direct compose
docker compose -f docker-compose.yml -f docker-compose.premium.yml up -d| Service | Purpose | Env var needed |
|---|---|---|
| Orthanc PACS | Local DICOM store | None |
| Ollama fallback | Local LLM fallback | OLLAMA_URL=http://host.docker.internal:11434 or http://ollama:11434 |
| TotalSegmentator | Whole-body segmentation | None |
| backup-cron | Nightly backups | BACKUP_S3_BUCKET=your-bucket |
-
Port 8210 already in use → Stop conflicting service (
sudo lsof -i :8210) or editdocker-compose.ymlline 12 to expose a different port. -
NARAYA_API_KEY rejected → Sign up for a free tier key at https://bynara.ai and ensure the key is pasted without whitespace or quotes in
.env. -
Next.js UI stuck on loading spinner → Check FastAPI logs (
docker compose logs mcp-bridge) for 502 errors; ensureNARAYA_API_KEYis set in.env. -
Ollama connection refused → Ensure Ollama is running on host and
OLLAMA_URLpoints to correct address.