Skip to content

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.

Project Image

πŸ“ Steps:

  1. Add the project to the database through the web interface project page (Note: This can also be automated via the Tator API) Add Project
  2. Next, add the data mount to the nginx configuration file and deploy the changes. πŸ› οΈ Edit ./playbooks/files/nginx/cortex/nginx.conf and add section for the new project media:
          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;
            }
        }
    
    then deploy the changes:
    ansible-playbook -i environment/prod playbooks/deploy_nginx.yml
    
  3. Finally, deploy (optional) use of Voxel51 for annotation. Currently, supports annotation of images or image frame captures from video for classification.

  4. πŸ› οΈ Edit ./playbooks/files/tator/fiftyone/compose.yaml and 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.yaml and 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