To add support for your project in mantis.shore.mbari.org, follow these steps:
βοΈ Project Configuration¶
Changes in each project are maintained in the aidoc repository. This includes the latest model paths for projects, data mounts, and other configuration parameters. Any changes made to this repository will be automatically deployed to the documentation site at https://docs.mbari.org/internal/ai-deploy/. Deploy with:
π Data access¶
The main requirement is that your media (image/video) is on an Atlas/Titan/Thalassa mount and that the user mldevops has read-only access to the data. οΈOnce that is done, modify the configuration file to point to the correct mount point for the data on your local machine.
If you are developing new loading or other transformations in the aidata code, you can also install it for development from the source. See instructions in the Developer guide.
π» Mount the data on your local machine, e.g. /Volumes/CFElab and set the host parameter in the configuration file to the hostname of the machine where the data is stored, e.g. mantis.shore.mbari.org.
π Please contact one of the team members to get your project set up for annotation on our production server mantis: Danelle | Duane | Fernanda | Laura
π Project setup¶
To add a project, you will need to use the mldevops user account and have access to the mantis.shore.mbari.org web interface.
π Steps:¶
- Add the project to the database through the web interface project page (Note: This can also be automated via the Tator API)

- Next, add the data mount to the
nginxconfiguration file and deploy the changes. π οΈ Edit./playbooks/files/nginx/cortex/nginx.confand add section for the new project media:then deploy the changes:location /SINKER { alias /mnt/SINKER/; autoindex off; mp4; mp4_buffer_size 1m; mp4_max_buffer_size 5m; add_header Cache-Control "public, max-age=86400"; add_header Access-Control-Allow-Origin "https://mantis.shore.mbari.org" always; add_header Access-Control-Allow-Methods "GET, HEAD, OPTIONS" always; add_header Access-Control-Allow-Headers "Range, Content-Type" always; if ($request_method = OPTIONS) { return 204; } }ansible-playbook -i environment/prod playbooks/deploy_nginx.yml -
Finally, deploy (optional) use of Voxel51 for annotation. Currently, supports annotation of images or image frame captures from video for classification.
-
π οΈ Edit
./playbooks/files/tator/fiftyone/compose.yamland add:mongo-sinker: image: mongo:7 container_name: mongo-sinker restart: always volumes: - mongo_sinker_data:/data/db networks: - private
Add the new volume to the volumes section of the compose file:
volumes:
mongo-sinker-data:
- π οΈ Edit
./playbooks/files/tator/mantis/fiftyone.yamland add:SINKER : vss_project: "SINKER" <-- whatever VSS project you want to use to compute the embeddings vss_service: "https://cortex.shore.mbari.org/vss" databases: - uri: "mongodb://mongo-planktivore:27067" <--- increment port to avoid conflict with other mongo instances port: 5191 <--- increment port to avoid conflict with other mongo instances -->
ποΈ Updated: 2026-02-24
