{"id":31769966,"url":"https://github.com/jfrog/mlflow-jfrog-plugin","last_synced_at":"2025-10-10T02:56:01.892Z","repository":{"id":226263020,"uuid":"752809160","full_name":"jfrog/mlflow-jfrog-plugin","owner":"jfrog","description":null,"archived":false,"fork":false,"pushed_at":"2024-06-18T01:38:38.000Z","size":24,"stargazers_count":32,"open_issues_count":4,"forks_count":2,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-08-21T21:35:29.186Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/jfrog.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}},"created_at":"2024-02-04T21:18:10.000Z","updated_at":"2025-06-22T18:17:17.000Z","dependencies_parsed_at":"2024-03-14T09:53:15.430Z","dependency_job_id":"e7416673-4e32-46ec-96fe-8f93186b3cd1","html_url":"https://github.com/jfrog/mlflow-jfrog-plugin","commit_stats":null,"previous_names":["jfrog/mlflow-jfrog-plugin"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jfrog/mlflow-jfrog-plugin","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jfrog%2Fmlflow-jfrog-plugin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jfrog%2Fmlflow-jfrog-plugin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jfrog%2Fmlflow-jfrog-plugin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jfrog%2Fmlflow-jfrog-plugin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jfrog","download_url":"https://codeload.github.com/jfrog/mlflow-jfrog-plugin/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jfrog%2Fmlflow-jfrog-plugin/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279002527,"owners_count":26083403,"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-10T02:00:06.843Z","response_time":62,"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":[],"created_at":"2025-10-10T02:55:58.182Z","updated_at":"2025-10-10T02:56:01.885Z","avatar_url":"https://github.com/jfrog.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# JFrog MLFlow plugin\n\n## Overview\nJFrog MLFlow plugin is a plugin created by JFrog for customers using MLflow product.\n[MLflow](https://www.mlflow.org/) is an open-source platform for managing the end-to-end machine learning lifecycle. \nThe JFrog MLflow plugin extends MLflow functionality by replacing the default artifacts location of MLflow with JFrog Artifactory.\nOnce MLflow experiments artifacts are available inside JFrog Artifactory, they become an integral part of the company's release lifecycle as any other artifact and are also covered by all the security tools provided through the JFrog platform.    \n\n## Installation\nInstall the plugin using pip, installation should be done on the mlflow tracking server.\noptionally the plugin can be installed on any client that wants to change the default artifacts location for a specific artifactory repository\n```bash\npip install mlflow-jfrog-plugin \n```\n\nSet the JFrog Artifactory authentication token, using the ARTIFACTORY_AUTH_TOKEN environment variable:\nPreferably, for security reasons use a token with minimum permissions required rather than an admin token\n```bash\nexport ARTIFACTORY_AUTH_TOKEN=\u003cyour artifactory token goes here\u003e\n```\n\nOnce the plugin is installed and token set, your mlflow tracking server can be started with JFrog artifactory repository as a target artifacts destination\nUSe the mlflow documentation for additional mlflow server options\n```bash\nmlflow server --host \u003cmlflow tracking server host\u003e --port \u003cmlflow tracking server port\u003e --artifacts-destination artifactory://\u003cJFrog artifactory URL\u003e/artifactory/\u003crepository[/optional base path]\u003e\n```\nFor allowing large artifacts upload to JFrog artifactory, it is advisable to increase upload timeout settings when starting th mlflow server:\n--gunicorn-opts '--timeout \u003ctimeout in seconds\u003e'\n\n\n## Usage\n\nMLflow model logging code example: \n```python\nimport mlflow\nfrom mlflow import MlflowClient\nfrom transformers import pipeline\n\nmlflow.set_tracking_uri(\n    \"\u003cyour mlflow tracking server uri\u003e\"\n)\nmlflow.create_experiment(\n    \"\u003cyour_exp_name\u003e\"\n)\nclassifier = pipeline(\"sentiment-analysis\", model=\"michellejieli/emotion_text_classifier\")\n\nwith mlflow.start_run():\n     mlflow.transformers.log_model(transformers_model=classifier, artifact_path=\u003cmodel_name\u003e)\nmlflow.end_run()\n```\n\n## Configuration\nAdditional optional settings (set on mlflow tracking server before its started):\nto use no-ssl artifactory URL, set ARTIFACTORY_NO_SSL to true. default is false\n```bash\nexport ARTIFACTORY_NO_SSL=true\n```\nto allow JFrog operations debug logging, set ARTIFACTORY_DEBUG to true. default is false\n```bash\nexport ARTIFACTORY_DEBUG=true\n```\nto prevent MLflow garbage collection remove any artifacts from being removed from artifactory, set ARTIFACTORY_ARTIFACTS_DELETE_SKIP to true. default is false\nNotice this settings might cause significant storage usage and might require JFrog files retention setup. \n```bash\nexport ARTIFACTORY_ARTIFACTS_DELETE_SKIP=true\n```\n\n## Features\n- Experiments artifacts log/save are performed against JFrog Artifactory\n- Experiments artifacts viewing and downloading using MLflow UI and APIs as well as JFrog UI and APIs are done against JFrog Artifactory\n- Experiments Artifacts deletion follow experiments lifecycle (automatically or through mlflow gc)\n- Changing specific experiments artifacts destination is allowed through experiment creation command (by changing artifact_location)  \n\n## Contributing\nWe welcome contributions! If you find any issues or have suggestions for improvements, please create an issue or pull request on the GitHub repository.\n\nNotice that for running the testing locally, you will need to either launch an artifactory and point the test scripts to it, or upload a license string into tests/art.lic \n\n## License\nApache 2.0\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjfrog%2Fmlflow-jfrog-plugin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjfrog%2Fmlflow-jfrog-plugin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjfrog%2Fmlflow-jfrog-plugin/lists"}