{"id":299545,"name":"IOOS Cloud Sandbox","description":"A collaborative platform to develop regional coastal models.","url":"https://github.com/ioos/cloud-sandbox","last_synced_at":"2026-04-20T08:30:50.058Z","repository":{"id":37274760,"uuid":"244398805","full_name":"ioos/Cloud-Sandbox","owner":"ioos","description":"IOOS' Coastal Modeling Cloud Sandbox provides a framework for developing, modifying and running models in the cloud. It provides repeatable configurations, model code and required libraries, input data and analysis of model outputs. The Sandbox supports not only the development of services and models, but also Cloud HPC to run and validate models.","archived":false,"fork":false,"pushed_at":"2025-12-06T05:11:49.000Z","size":9243,"stargazers_count":16,"open_issues_count":23,"forks_count":19,"subscribers_count":13,"default_branch":"main","last_synced_at":"2025-12-08T21:57:19.135Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://coastalsandbox.ioos.us/","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ioos.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-03-02T14:59:40.000Z","updated_at":"2025-11-06T21:42:53.000Z","dependencies_parsed_at":"2024-01-12T22:00:06.365Z","dependency_job_id":"4c0f66bd-c52e-49aa-870b-355e50bbdcb2","html_url":"https://github.com/ioos/Cloud-Sandbox","commit_stats":{"total_commits":136,"total_committers":12,"mean_commits":"11.333333333333334","dds":0.5808823529411764,"last_synced_commit":"9f7bcc6c0ef25ff33659642904f0fd5534c37bc5"},"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/ioos/Cloud-Sandbox","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ioos%2FCloud-Sandbox","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ioos%2FCloud-Sandbox/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ioos%2FCloud-Sandbox/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ioos%2FCloud-Sandbox/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ioos","download_url":"https://codeload.github.com/ioos/Cloud-Sandbox/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ioos%2FCloud-Sandbox/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":27755892,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-12-15T02:00:09.782Z","response_time":96,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"owner":{"login":"ioos","name":"US Integrated Ocean Observing System","uuid":"5313832","kind":"organization","description":"Software, tools, and technical documentation supporting IOOS Data Management and Cyberinfrastructure (DMAC).","email":"data.ioos@noaa.gov","website":"http://ioos.github.io","location":"Silver Spring, MD","twitter":"usioosgov","company":null,"icon_url":"https://avatars.githubusercontent.com/u/5313832?v=4","repositories_count":123,"last_synced_at":"2025-06-23T16:05:33.061Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/ioos","funding_links":[],"total_stars":662,"followers":91,"following":0,"created_at":"2022-11-03T14:01:18.424Z","updated_at":"2025-06-23T16:05:33.061Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ioos","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ioos/repositories"},"packages":[],"commits":{"id":1668382,"full_name":"ioos/cloud-sandbox","default_branch":"main","total_commits":155,"total_committers":10,"total_bot_commits":0,"total_bot_committers":0,"mean_commits":15.5,"dds":0.22580645161290325,"past_year_total_commits":19,"past_year_total_committers":3,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":6.333333333333333,"past_year_dds":0.4736842105263158,"last_synced_at":"2026-01-08T01:12:59.229Z","last_synced_commit":"7a4a4832348c5f980e5cd5c0d07a38341ee5fe25","created_at":"2024-09-04T00:12:13.895Z","updated_at":"2026-01-08T01:11:58.513Z","committers":[{"name":"Patrick Tripp","email":"patrick.tripp@rpsgroup.com","login":"patrick-tripp","count":120},{"name":"Jonathan Joyce","email":"45802786+jonmjoyce","login":"jonmjoyce","count":10},{"name":"Jason Ducker","email":"81377226+jduckerOWP","login":"jduckerOWP","count":8},{"name":"ZacharyWills","email":"60660437+ZacharyWills","login":"ZacharyWills","count":6},{"name":"Micah Wengren","email":"micah.wengren@gmail.com","login":"mwengren","count":6},{"name":"Minna Ho","email":"minnaho95@gmail.com","login":"minnaho","count":1},{"name":"Mahmud Monim","email":"36547516+MahmudM","login":"MahmudM","count":1},{"name":"Benjamin Adams","email":"ben.adams@rpsgroup.com","login":"benjwadams","count":1},{"name":"Ubuntu","email":"ubuntu@ip-10-0-1-161.ec2.internal","login":null,"count":1},{"name":"Patrick Tripp","email":"patrick.tripp@gmail.com","login":null,"count":1}],"past_year_committers":[{"name":"Patrick Tripp","email":"44276748+patrick-tripp","login":"patrick-tripp","count":10},{"name":"Jason Ducker","email":"81377226+jduckerOWP","login":"jduckerOWP","count":8},{"name":"Minna Ho","email":"minnaho95@gmail.com","login":"minnaho","count":1}],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/ioos%2Fcloud-sandbox/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-01-09T00:00:19.756Z","repositories_count":6162741,"commits_count":932589403,"contributors_count":36263268,"owners_count":1136521,"icon_url":"https://github.com/github.png","host_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories"}},"issues_stats":{"full_name":"ioos/cloud-sandbox","html_url":"https://github.com/ioos/cloud-sandbox","last_synced_at":"2026-01-01T00:03:15.495Z","status":null,"issues_count":33,"pull_requests_count":99,"avg_time_to_close_issue":38341653.35714286,"avg_time_to_close_pull_request":483144.2365591398,"issues_closed_count":14,"pull_requests_closed_count":93,"pull_request_authors_count":14,"issue_authors_count":12,"avg_comments_per_issue":2.090909090909091,"avg_comments_per_pull_request":0.5757575757575758,"merged_pull_requests_count":81,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":10,"past_year_pull_requests_count":29,"past_year_avg_time_to_close_issue":3070264.5,"past_year_avg_time_to_close_pull_request":522307.2083333333,"past_year_issues_closed_count":2,"past_year_pull_requests_closed_count":24,"past_year_pull_request_authors_count":8,"past_year_issue_authors_count":4,"past_year_avg_comments_per_issue":0.2,"past_year_avg_comments_per_pull_request":0.9655172413793104,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":19,"created_at":"2024-09-04T00:12:14.417Z","updated_at":"2026-01-01T00:03:15.495Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/ioos%2Fcloud-sandbox","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/ioos%2Fcloud-sandbox/issues","issue_labels_count":{"LiveOcean 12-year reanalysis":1},"pull_request_labels_count":{},"issue_author_associations_count":{"NONE":19,"CONTRIBUTOR":11,"MEMBER":3},"pull_request_author_associations_count":{"MEMBER":70,"CONTRIBUTOR":19,"NONE":10},"issue_authors":{"ZacharyWills":6,"Michael-Lalime":6,"KatherinePowell-NOAA":5,"mykelalvis":4,"breannalcv":3,"mwengren":3,"cpaternostro":1,"rezuma":1,"aliabdolali":1,"dpsnowden":1,"jduckerOWP":1,"hellkite500":1},"pull_request_authors":{"patrick-tripp":62,"jduckerOWP":10,"ZacharyWills":6,"jonmjoyce":5,"mwengren":3,"sakshamg19":2,"kennethells":2,"ruhhh1130":2,"nayaaaaaann":2,"RATED-R-SUNDRAM":1,"mykelalvis":1,"benjwadams":1,"minnaho":1,"MahmudM":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-01-01T00:00:08.101Z","repositories_count":12540588,"issues_count":35627486,"pull_requests_count":117032129,"authors_count":11079328,"icon_url":"https://github.com/github.png","host_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories","owners_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/owners","authors_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors"},"past_year_issue_labels_count":{},"past_year_pull_request_labels_count":{},"past_year_issue_author_associations_count":{"CONTRIBUTOR":5,"NONE":5},"past_year_pull_request_author_associations_count":{"CONTRIBUTOR":11,"MEMBER":10,"NONE":8},"past_year_issue_authors":{"mykelalvis":4,"KatherinePowell-NOAA":3,"breannalcv":2,"jduckerOWP":1},"past_year_pull_request_authors":{"patrick-tripp":10,"jduckerOWP":10,"sakshamg19":2,"ruhhh1130":2,"nayaaaaaann":2,"RATED-R-SUNDRAM":1,"minnaho":1,"mykelalvis":1},"maintainers":[{"login":"patrick-tripp","count":62,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/patrick-tripp"},{"login":"mwengren","count":6,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mwengren"},{"login":"jonmjoyce","count":5,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jonmjoyce"}],"active_maintainers":[{"login":"patrick-tripp","count":10,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/patrick-tripp"}]},"events":{"total":{"IssuesEvent":21,"WatchEvent":2,"DeleteEvent":14,"IssueCommentEvent":46,"PushEvent":79,"PullRequestReviewCommentEvent":8,"PullRequestReviewEvent":35,"PullRequestEvent":28,"ForkEvent":10,"CreateEvent":23},"last_year":{"IssuesEvent":21,"WatchEvent":2,"DeleteEvent":14,"IssueCommentEvent":46,"PushEvent":69,"PullRequestReviewCommentEvent":8,"PullRequestReviewEvent":35,"PullRequestEvent":28,"ForkEvent":10,"CreateEvent":19}},"keywords":[],"dependencies":[{"ecosystem":"pypi","filepath":"cloudflow/plotting/requirements.txt","sha":null,"kind":"manifest","created_at":"2023-01-19T12:00:48.684Z","updated_at":"2023-01-19T12:00:48.684Z","repository_link":"https://github.com/ioos/Cloud-Sandbox/blob/main/cloudflow/plotting/requirements.txt","dependencies":[{"id":7034716439,"package_name":"dask","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7034716438,"package_name":"pyproj","ecosystem":"pypi","requirements":"==2.6","direct":true,"kind":"runtime","optional":false},{"id":7034716440,"package_name":"distributed","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7034716441,"package_name":"cmocean","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7034716442,"package_name":"numpy","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7034716443,"package_name":"matplotlib","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7034716444,"package_name":"netCDF4","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7034716445,"package_name":"Pillow","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"cloudflow/requirements.txt","sha":null,"kind":"manifest","created_at":"2023-01-19T12:00:48.695Z","updated_at":"2023-01-19T12:00:48.695Z","repository_link":"https://github.com/ioos/Cloud-Sandbox/blob/main/cloudflow/requirements.txt","dependencies":[{"id":7034716446,"package_name":"plotting","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7034716447,"package_name":"pyproj","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7034716448,"package_name":"cmocean","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7034716449,"package_name":"numpy","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7034716450,"package_name":"matplotlib","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7034716451,"package_name":"netCDF4","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7034716452,"package_name":"dask","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7034716453,"package_name":"distributed","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7034716454,"package_name":"Pillow","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"cloudflow/setup.py","sha":null,"kind":"manifest","created_at":"2023-01-19T12:00:48.704Z","updated_at":"2023-01-19T12:00:48.704Z","repository_link":"https://github.com/ioos/Cloud-Sandbox/blob/main/cloudflow/setup.py","dependencies":[{"id":7034716455,"package_name":"pyproj","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7034716456,"package_name":"cmocean","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7034716457,"package_name":"numpy","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7034716458,"package_name":"matplotlib","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7034716459,"package_name":"netCDF4","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7034716460,"package_name":"dask","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7034716461,"package_name":"distributed","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7034716462,"package_name":"Pillow","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"setup.py","sha":null,"kind":"manifest","created_at":"2023-01-19T12:00:48.721Z","updated_at":"2023-01-19T12:00:48.721Z","repository_link":"https://github.com/ioos/Cloud-Sandbox/blob/main/setup.py","dependencies":[{"id":7034716463,"package_name":"boto3","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7034716464,"package_name":"prefect","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7034716465,"package_name":"dask","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7034716466,"package_name":"distributed","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7034716467,"package_name":"Pillow","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7034716468,"package_name":"matplotlib","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7034716469,"package_name":"netCDF4","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7034716470,"package_name":"numpy","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7034716471,"package_name":"pyproj","ecosystem":"pypi","requirements":"==2.6","direct":true,"kind":"runtime","optional":false},{"id":7034716472,"package_name":"plotting","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"cloudflow/notebooks/requirements.txt","sha":null,"kind":"manifest","created_at":"2023-10-10T22:24:36.704Z","updated_at":"2023-10-10T22:24:36.704Z","repository_link":"https://github.com/ioos/Cloud-Sandbox/blob/main/cloudflow/notebooks/requirements.txt","dependencies":[{"id":14131839394,"package_name":"boto3","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":14131839395,"package_name":"cartopy","ecosystem":"pypi","requirements":"==0.20.2","direct":true,"kind":"runtime","optional":false},{"id":14131839396,"package_name":"xarray","ecosystem":"pypi","requirements":"==2022.3.0","direct":true,"kind":"runtime","optional":false},{"id":14131839397,"package_name":"netcdf4","ecosystem":"pypi","requirements":"==1.5.8","direct":true,"kind":"runtime","optional":false},{"id":14131839398,"package_name":"scipy","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":14131839399,"package_name":"cmocean","ecosystem":"pypi","requirements":"==2.0","direct":true,"kind":"runtime","optional":false},{"id":14131839407,"package_name":"netCDF4","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":14131839408,"package_name":"numpy","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false}]}],"score":5.966146739123692,"created_at":"2024-09-04T00:12:12.479Z","updated_at":"2026-04-20T08:30:50.061Z","avatar_url":"https://github.com/ioos.png","language":"Jupyter Notebook","category":"Hydrosphere","sub_category":"Coastal and Reefs","monthly_downloads":0,"total_dependent_repos":0,"total_dependent_packages":0,"readme":"# IOOS Cloud Sandbox\n\nThe IOOS Cloud Sandbox is a collaborative platform for running regional coastal models in the cloud.\n\nIt provides repeatable configurations, model code and required libraries, input data, and analysis of model outputs. The Sandbox provisions Cloud HPC to aid in the development of services and models, and also supports running and validating models. The Sandbox is intended for use across industries and is inclusive to anyone who wants to develop, enhance, and run coastal models.\n\n### Use cases\n- Inter-organization collaboration\n- University graduate courses\n- Hindcasts/Reanalysis\n- Research to Operations (R2O)\n- On-demand HPC capacity\n- Quasi-operational HPC fail-over (natural disasters, data-center problems)\n- AI/ML training\n\n### Deployment options\n\n- **Self deployed/hosted**: Deploy using your own AWS cloud account\n- **IOOS hosted**: NOAA AWS Government Cloud – Lynker contract\n- **RPS hosted**: Isolated secure Virtual Private Cloud (VPC)\n\n### The Cloud Sandbox has been used to run:\n\n- Operational versions of the [NOSOFS ROMS and FVCOM Models](https://github.com/ioos/nosofs-NCO)\n- [LiveOcean model](https://comt.ioos.us/projects/liveocean) from the University of Washington\n- WRF/ROMS ESMF Coupled (Hurricane Irene test case)\n- WRF/ROMS/SWAN\n- ADCIRC (Hurricane Florence test case)\n- [CORA ADCIRC](https://registry.opendata.aws/noaa-nos-cora/) model\n- [SCHISM](https://ccrm.vims.edu/schismweb/)\n- [National Water Model](https://water.noaa.gov/about/nwm)\n\n## I want to...\n\n- Run a model in an existing cloud sandbox\n    - [NOS OFS Models](NOSOFS-MODELS.md)\n    - [LiveOcean Model](LIVEOCEAN-MODEL.md)\n\n- [Deploy a new cloud sandbox](DEPLOYMENT.md)\n\n## Software Stack\n\nThe Cloud Sandbox uses [CloudFlow](CLOUDFLOW.md) to orchestrate the execution of the model. CloudFlow is a customized workflow for running models built on [Prefect Workflows](https://docs-v1.prefect.io/api/0.15.13/).\n\n![Modeling Stack](./images/sandbox-stack.png)\n\n## Software Architecture \n\nThe Cloud Sandbox uses [Terraform](https://www.terraform.io/) to deploy resources to the cloud. The sandbox currently only supports the Amazon Web Services (AWS) cloud platform.\n\n\u003c!-- TODO update graph\n    ![Software Architecture](./images/sandbox-architecture.png)\n--\u003e\n\n- **Head Node**: The head node is the machine that runs the CloudFlow scheduler. Users can SSH into this machine to run CloudFlow tasks.\n- **Preconfigured AMI**: This Amazon Machine Image (AMI) contains all of the necessary code to run the model. This image will run on the worker nodes.\n- **Worker Nodes**: The worker nodes are provisioned by Terraform and run CloudFlow tasks. This runs the preconfigured AMI.\n","funding_links":[],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":[],"project_url":"https://ost.ecosyste.ms/api/v1/projects/299545","html_url":"https://ost.ecosyste.ms/projects/299545"}