Skip to content
openplate

The inference runtime

openplate-inference is a plate-photo scanner you run on your own hardware. It names the foods on a plate and estimates the grams, then looks up the macros in a bundled food database rather than inventing numbers.

Privacy

Your photos are processed in memory and never persisted. Concretely:

  • Never written to disk. There is no upload directory, no temp file, no cache. The image is decoded, downscaled in memory, sent to the model runtime on the container's loopback interface, and dropped when the request ends.
  • Never logged. Not the image, not the base64, not a hash of it. The logs carry request metadata (status, timing, a key fingerprint, never a key), and the log formatter scrubs values that could carry payload or credentials. This includes the error paths: error responses and error logs are scrubbed, and that behaviour is covered by the unit test suite.
  • Never sent anywhere. The service makes exactly three kinds of outbound request: one-time weight downloads at first boot, (only if you enable a networked FOOD_SOURCE) a text food-name lookup, and (only if you set EMBEDDING_RUNTIME_URL) a text embedding call. No image ever leaves the container, under any configuration.
  • Names for translation stay with the model runtime. The translation call sends food names as text to the model runtime. In the bundled container, the runtime uses the loopback interface, so traffic stays local. With MODEL_PROFILE=external, names go to your configured runtime URL. That call never includes photos. The service reads Accept-Language to select the target language. It does not store or log the header.
  • No accounts, no cookies, no history. The service stores nothing between requests. There is nothing to export, breach, or subpoena.
  • In openplate's flow, the photo goes device → your endpoint directly. It does not pass through openplate's server. You control every hop.

The code is here, it is small, and the network surface is one port.

These statements describe the self-hosted service in this repository. For vulnerability reporting, see SECURITY.md.

Hardware

MODEL_PROFILEmodeldownloadlicense
qualityQwen3-VL-8B-Instruct, Q4_K_M + F16 mmproj5.8 GiBApache-2.0
liteLFM2.5-VL-1.6B, Q8_0 + F16 mmproj2.0 GiBLFM Open License v1.0, revenue-capped, see Licensing
lite-apacheQwen3-VL-2B-Instruct, Q4_K_M + F16 mmproj1.8 GiBApache-2.0

Both lite variants run on CPU. quality runs on CPU too, very slowly, and is really a GPU profile.

Who it is for

Self-hosters who want plate scans with no cloud AI account and no photo leaving their network. It is not part of the hosted instance at openplate.de.