OpenMed Logo

Local-first Healthcare AI

That never leaves the device

Turn clinical text into structured insight with one line of code.
Entity extraction, PII de-identification, and 1,000+ specialized medical models that run entirely on your own hardware — from a one-liner in Python to a native Swift app on iPhone, powered by Apple MLX. No cloud. No vendor lock-in. No patient data leaving your network.

1,000+ models · 12 languages · 247 PII checkpoints · 100% on-device · Apache-2.0

Why OpenMed?

🔒 100% On-Device

Clinical text never leaves your device. Complete privacy with zero network calls. Process sensitive patient data securely anywhere.

🧪 1,000+ Medical Models

Curated biomedical & clinical NER models covering diseases, drugs, anatomy, genes, and more. Many outperform proprietary stacks.

🌐 Multilingual Support

12 languages including English, Spanish, French, German, Italian, Dutch, Hindi, Arabic, Japanese, and more. 247 PII checkpoints total.

🍎 Apple Silicon Optimized

MLX acceleration for 24-33x faster inference on Apple Silicon. Native iOS/macOS apps via OpenMedKit with CoreML fallback.

🚀 One-Line Deployment

Simple Python API, Dockerized REST service, or batch processing pipelines. Zero configuration for most use cases.

🔓 Zero Lock-In

Apache-2.0 license. Your infrastructure, your data. Export to CoreML for deployment anywhere. Complete freedom.

See it in Action

OpenMed on iPhone
On iPhone via OpenMedKit — scan a clinical note, de-identify it, and extract clinical signals, all locally with Apple MLX. Nothing is uploaded.
PII De-identification Demo
Real-time PII de-identification — the Nemotron Privacy Filter redacting names, addresses, IDs, and billing data from a clinical discharge packet, entirely on-device.

Why OpenMed?

Feature OpenMed Cloud medical APIs
Runs on your device / servers ✅ ❌
Patient data leaves your network Never Sent to the vendor
Cost Free & open-source Per-call pricing
Specialized medical models 1,000+ Limited
Languages 12+ Varies
Offline / air-gapped ✅ ❌
Apple Silicon (MLX) acceleration ✅ n/a
Native iOS / macOS apps ✅ via OpenMedKit ❌
Vendor lock-in None — Apache-2.0 ✅ Yes

30-second Example

from openmed import analyze_text

result = analyze_text(
    "Patient started on imatinib for chronic myeloid leukemia.",
    model_name="disease_detection_superclinical",
)

for entity in result.entities:
    print(f"{entity.label:<12} {entity.text:<28} {entity.confidence:.2f}")
# DISEASE      chronic myeloid leukemia     0.98
# DRUG         imatinib                     0.95

A state-of-the-art clinical NER model running locally — no API key, no network call.

Quick Start

Core + Hugging Face

pip install "openmed[hf]"

REST Service

pip install "openmed[hf,service]"

Apple Silicon (MLX)

pip install "openmed[mlx]"

Usage Examples

Python API

from openmed import analyze_text

analyze_text(
  "Patient received 75mg "
  "clopidogrel for NSTEMI.",
  model_name=
  "pharma_detection_superclinical",
)

REST Service

uvicorn openmed.service.app:app \
  --host 0.0.0.0 --port 8080

# Endpoints:
GET /health
POST /analyze
POST /pii/extract
POST /pii/deidentify

Batch Processing

from openmed import BatchProcessor

p = BatchProcessor(
  model_name=
  "disease_detection_superclinical",
  group_entities=True,
)
p.process_texts([...])

2,666

Stars

264

Forks

78

Open Issues

25

Subscribers

Python

Language

A-powered