# Architecture

In this section, you will learn how to extend the functionality of the Cytomine platform or develop new features.

If you don't know Cytomine yet, follow the Getting Started page in the user guide to have a tour and discover the main concepts of Cytomine.

# List of containers

Cytomine consists of a collection of services, each running in its own Docker container, as listed below:

Name Required Goal
Nginx Yes Main HTTP(S) proxy dispatching incoming requests.
Core Yes Main Cytomine server. Provide the REST API.
PostGIS Yes Main database. Store most of data.
MongoDB Yes Secondary database. Store activity data.
PIMS Yes Image management server.
PIMS-cache Yes Fast cache for images.
CBIR Yes Service for similar search.
IAM Yes Service for authentication.
App Engine No Service to execute containerised apps.
Web UI No Web graphical user interface.
SAM No Annotation refinement module.
  • Core (opens new window). This service contains the programming logic, object representations, dependencies, and access permissions. The Core service is also responsible for connecting to the databases. It is developed using the Spring Boot (opens new window) framework.
  • PIMS (opens new window). This service is the image management system and is connected to the storage disk. Imported images on Cytomine are handled by this service. It is also responsible to return the tiles displayed in the viewer when you browse an image as well as the thumbnails and annotation crops. It is developed in Python using the FastAPI (opens new window) framework.
  • Web-UI (opens new window). This service is our officially supported front-end. It is a Web User Graphical Interface developed in Vue 2 (opens new window). All graphical services you see during your Cytomine browser navigation are implemented here.
  • App Engine (opens new window). This service is an execution system that allows developers to integrate their own algorithms or applications within the Cytomine platform. It is developed using the Spring Boot (opens new window) framework.
  • The external clients API libraries (currently Python (opens new window)). As Cytomine is a RESTful platform, it is possible to interact with a Cytomine instance with HTTP(S) requests and without using a graphical interface. Clients are libraries developed to help you to integrate interactions with Cytomine in your scripts or your applications.

Cytomine 2025.1

Last Updated: 9/10/2025, 3:37:33 PM