Skip to content

Repository Layout

MESA is multi-repo. Each component lives in its own GitHub repository so that release cadences, language toolchains, and CI pipelines can differ without coupling.

The core repos

Repo Language Layer Status
cyverse/mesa Markdown (this site) Project hub & docs Active
cyverse/mesa-mcp Python MCP server: iRODS + AVU + OBO/OLS + DuckLake Pre-alpha
cyverse/mesa-ducklake Python AVU-history Lakehouse library Pre-alpha (functional)
cyverse/irods-mcp-server Go Generic iRODS MCP server Public release
cyverse-de/formation-mcp Go Formation API MCP server Public release
cyverse/terrain-mcp Node.js Terrain API MCP server Public release

Cross-repo dependencies

graph LR
    mesa["cyverse/mesa<br/>(docs hub)"] -.references.-> mm
    mm["mesa-mcp"] -->|imports| md["mesa-ducklake"]
    mm -. wraps same API .- ims["irods-mcp-server"]
    mm -. complements .- fm["formation-mcp"]
    mm -. complements .- tm["terrain-mcp"]
    fm -.builds on.-> tm
  • mesa-mcp depends on mesa-ducklake (Python import).
  • mesa-mcp and irods-mcp-server are siblings — same iRODS surface, different languages. mesa-mcp adds AVU history and ontology workflows on top.
  • formation-mcp is higher-level than terrain-mcp — Formation is an orchestration API on top of Terrain.

Release coordination

Each repo manages its own version. The doc site (this repo) pins a "current supported" matrix on the Components page so users know which versions interoperate.

Branch model

Repo Default branch Release branch
cyverse/mesa main (none — site deploys from main)
cyverse/mesa-mcp main release/x.y
cyverse/mesa-ducklake main release/x.y
cyverse/irods-mcp-server main release/x.y
cyverse-de/formation-mcp main tags only
cyverse/terrain-mcp main tags only