Skip to main content
The Bioptimus Model Server runs H-Optimus and M-Optimus entirely within your infrastructure — keeping data on your hardware for residency, compliance, or air-gapped requirements. It serves the same JSON API as the SageMaker deployment, and the Bioptimus SDK works against both. Two package variants are available. Each image contains the relevant model plus the tissue segmentation model:

Prerequisites

The REST API currently requires no authentication — run the server on a private network and restrict access at the network layer. See the API reference.

1. Load the container image

You receive the container as a compressed archive plus a sha256 checksum. Verify integrity, then load it into Docker.

2. Start the container

The server is self-contained — all weights and assets are baked into the image, so no volume mounts are required.
Models load at startup. Follow the logs until the server is ready:

3. Air-gapped install

For environments with no outbound network, transfer the .tar.gz archive via your approved process, then run sha256sum -c, docker load, and docker run exactly as above. No registry access is needed — the image is self-contained.

4. Verify the deployment

1

Health check

A 503 {"status": "loading"} means models are still initialising — retry. See the API reference for all health states.
2

Interactive API docs

Open http://localhost:8080/docs for a Swagger UI to explore endpoints and try calls. Service discovery is at http://localhost:8080/bioptimus/.
3

Test with the Bioptimus SDK

For whole-slide inference, see the Bioptimus SDK.

Managing the container

Environment variables

Set with -e at start:

Troubleshooting

Container not running or still starting. Check docker ps and docker logs bioptimus-server.
Models are still loading. Wait for the models ready log line.
The GPU is no longer available, or the CUDA context was corrupted. Check nvidia-smi on the host and restart the container.
Common causes: no CUDA GPU detected (a GPU is required), port conflict, or insufficient memory. Run docker logs bioptimus-server for the error.
The server auto-batches concurrent requests (max batch size 32). Reduce the number of concurrent SDK requests to lower peak memory use.