{"id":18497801,"url":"https://github.com/containers/omlmd","last_synced_at":"2025-10-06T13:57:21.523Z","repository":{"id":250700993,"uuid":"831364139","full_name":"containers/omlmd","owner":"containers","description":"OCI Artifact for ML model \u0026 metadata","archived":false,"fork":false,"pushed_at":"2025-09-22T01:34:27.000Z","size":7016,"stargazers_count":77,"open_issues_count":12,"forks_count":7,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-28T22:07:08.335Z","etag":null,"topics":["hacktoberfest","machine-learning","oci","oci-artifacts"],"latest_commit_sha":null,"homepage":"https://containers.github.io/omlmd","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/containers.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","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":"2024-07-20T10:39:51.000Z","updated_at":"2025-09-01T12:08:10.000Z","dependencies_parsed_at":"2024-07-29T15:07:31.707Z","dependency_job_id":"11668ce4-430d-4e15-8420-999aed123963","html_url":"https://github.com/containers/omlmd","commit_stats":null,"previous_names":["tarilabs/omlmd","containers/omlmd"],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/containers/omlmd","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/containers%2Fomlmd","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/containers%2Fomlmd/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/containers%2Fomlmd/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/containers%2Fomlmd/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/containers","download_url":"https://codeload.github.com/containers/omlmd/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/containers%2Fomlmd/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278621842,"owners_count":26017253,"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-10-06T02:00:05.630Z","response_time":65,"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"}},"keywords":["hacktoberfest","machine-learning","oci","oci-artifacts"],"created_at":"2024-11-06T13:35:56.905Z","updated_at":"2025-10-06T13:57:21.494Z","avatar_url":"https://github.com/containers.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"\u003c!--\n1. migrating from https://github.com/containers/oml\n2. remember not to use relative IMGs in this, as it's also being used for pypi\n--\u003e\n\n![](https://github.com/containers/omlmd/raw/main/docs/imgs/banner.png)\n\n# OCI Artifact for ML model \u0026 metadata\n\n[![Python](https://img.shields.io/badge/python%20-3.9%7C3.10%7C3.11%7C3.12-blue)](https://github.com/containers/omlmd)\n[![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](LICENSE)\n[![Build](https://github.com/containers/omlmd/actions/workflows/build.yaml/badge.svg)](https://github.com/containers/omlmd/actions/workflows/build.yaml)\n[![E2E testing](https://github.com/containers/omlmd/actions/workflows/e2e.yaml/badge.svg)](https://github.com/containers/omlmd/actions/workflows/e2e.yaml)\n[![PyPI - Version](https://img.shields.io/pypi/v/omlmd)](https://pypi.org/project/omlmd)\n\n[![Static Badge](https://img.shields.io/badge/Website-green?style=plastic\u0026label=Documentation\u0026labelColor=blue)](https://containers.github.io/omlmd)\n[![GitHub Repo stars](https://img.shields.io/github/stars/containers/omlmd?label=GitHub%20Repository)](https://github.com/containers/omlmd)\n[![YouTube Channel Subscribers](https://img.shields.io/youtube/channel/subscribers/UCmvDe7dCEmiT4J0XoM6TREQ?label=YouTube%20Playlist)](https://www.youtube.com/watch?v=W4GwIRPXE8E\u0026list=PLdbdefeRIj9SRbg6Hkr15GeyPH0qpk_ww)\n\nThis project is a collection of blueprints, patterns and toolchain (in the form of python SDK and CLI) to leverage OCI Artifact and containers for ML model and metadata.\n\nDocumentation: https://containers.github.io/omlmd\n\nGitHub repository: https://github.com/containers/omlmd \u003cbr/\u003e\nYouTube video playlist: https://www.youtube.com/watch?v=W4GwIRPXE8E\u0026list=PLdbdefeRIj9SRbg6Hkr15GeyPH0qpk_ww \u003cbr/\u003e\nPypi distribution: https://pypi.org/project/omlmd \u003cbr/\u003e\n\n## Installation\n\n\u003e [!TIP]\n\u003e We recommend checking out the [Getting Started tutorial](https://containers.github.io/omlmd) in the documentation; below instructions are provided for a quick overview.\n\nIn your Python environment, use:\n\n```\npip install omlmd\n```\n\n## Push\n\nStore ML model file `model.joblib` and its metadata in the OCI repository at `localhost:8080`:\n\n```py\nfrom omlmd.helpers import Helper\n\nomlmd = Helper()\nomlmd.push(\"localhost:8080/matteo/ml-artifact:latest\", \"model.joblib\", name=\"Model Example\", author=\"John Doe\", license=\"Apache-2.0\", accuracy=9.876543210)\n```\n\n## Pull\n\nFetch everything in a single pull:\n\n```py\nomlmd.pull(target=\"localhost:8080/matteo/ml-artifact:latest\", outdir=\"tmp/b\")\n```\n\nOr fetch only the ML model assets:\n\n```py\nomlmd.pull(target=\"localhost:8080/matteo/ml-artifact:latest\", outdir=\"tmp/b\", media_types=[\"application/x-mlmodel\"])\n```\n\n### Custom Pull: just metadata\n\nThe features can be composed in order to expose higher lever capabilities, such as retrieving only the metadata informatio.\nImplementation intends to follow OCI-Artifact convention\n\n```py\nmd = omlmd.get_config(target=\"localhost:8080/matteo/ml-artifact:latest\")\nprint(md)\n```\n\n## Crawl\n\nClient-side crawling of metadata.\n\n_Note: Server-side analogous coming soon/reference in blueprints._\n\n```py\ncrawl_result = omlmd.crawl([\n    \"localhost:8080/matteo/ml-artifact:v1\",\n    \"localhost:8080/matteo/ml-artifact:v2\",\n    \"localhost:8080/matteo/ml-artifact:v3\"\n])\n```\n\n### Example query\n\nDemonstrate integration of crawling results with querying (in this case using [jQ](https://jqlang.github.io/jq))\n\n\u003e Of the crawled ML OCI artifacts, which one exhibit the max accuracy?\n\n```py\nimport jq\njq.compile( \"max_by(.config.customProperties.accuracy).reference\" ).input_text(crawl_result).first()\n```\n\n## To be continued...\n\nDon't forget to checkout the [documentation website](https://containers.github.io/omlmd) for more information!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcontainers%2Fomlmd","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcontainers%2Fomlmd","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcontainers%2Fomlmd/lists"}