GSOC 2026 Project #23 : A Python Command Line Interface (CLI) for the CBRAIN Distributed Computing Platform

Mentors: Bryan Caron <bryan.caron@mcgill.ca>, Pierre Rioux, Natacha Beck, Serge Boroday, Darcy Quesnel

Skill level: Intermediate - Advanced

Required skills: Python; experience with version control systems (i.e. git) and team-based development methodologies; good understanding of the Linux operating system and development in a Linux environment

Time commitment: part time or full time (350 hours)

About: CBRAIN is a web-enabled distributed computing platform that facilitates collaborative research on large, distributed data by creating an easy-to-use interface for users (or groups of collaborating users) to access high-performance computing (HPC) and Cloud Computing resources. Through a series of web-based services, CBRAIN manages data access, transfer, caching and provenance, as well as data processing and reporting. While predominantly used to support researchers in neuroinformatics, CBRAIN is generic and modular, and can easily be extended with new data models and tools for a broad range of research disciplines. CBRAIN is an open source, flexible Ruby on Rails framework for accessing and processing large amounts of data across a distributed network of High Performance Computing (HPC) and Cloud Computing infrastructures. With over 1800 users from over 35 countries, CBRAIN is a key resource that lowers the technical barriers for scientists to conduct neuroinformatics research. More information about CBRAIN can be found at https://cbrain.ca and GitHub - aces/cbrain: CBRAIN is a flexible Ruby on Rails framework for accessing and processing of large data on high-performance computing infrastructures. · GitHub.

Aims: The objective of the project is to create a python-based command line interface (CLI), leveraging the CBRAIN APIs, which will enable more advanced users to perform all the typical operations of CBRAIN for data upload / download, file querying / selection, and processing task creation, execution and monitoring from a CLI that can be run on a remote resource without requiring the user to perform the same actions through the CBRAIN web interface. A CLI approach would provide users the ability to create more complex workflows while still leveraging CBRAIN’s core abilities to manage data movement and large-scale data processing.

Website: https://cbrain.ca and GitHub - aces/cbrain: CBRAIN is a flexible Ruby on Rails framework for accessing and processing of large data on high-performance computing infrastructures. · GitHub

Tech keywords: Keywords: Python, imaging, CBRAIN, distributed computing, cloud computing

Hi @bryancaron, @natacha-beck, @prioux and @Serge_Boroday,

My name is Ravi, and I am very excited about the CBRAIN CLI (Project #23). I have been following the platform’s development closely and recently started contributing to the core repository, specifically PR #1599, which addresses the ActionMailer configuration logic and provides a non-intrusive template for environment-specific paths.

My main goal for the CLI is to make it reliable, scriptable, and resilient for researchers in production workflows. Based on the recent technical discourse in the core repository, I am focusing my proposal on the following architectural pillars:

  • I plan to leverage the newly refactored OO methods (such as is_ssh_key_installed? from ** @prioux in PR #1598**) to catch configuration issues locally before a task is even submitted to the portal.
  • Boutiques-aware validation: Integrating local parameter checks against Boutiques descriptors to reduce failed runs and provide immediate feedback on incorrect inputs.
  • Modular Python structure: Building a clean, maintainable codebase using Click for command orchestration and Pydantic for robust data validation and schema integrity.

I am currently finalizing my full proposal and would really appreciate hearing if there are specific CLI workflows, edge cases, or high-priority features (eg. handling specific large file transfer scenarios) that the team would like me to prioritize in the roadmap.

Looking forward to your feedback!

Best regards, Ravi