{"id":16167731,"url":"https://github.com/jlleitschuh/moderne-client","last_synced_at":"2026-01-15T22:14:43.507Z","repository":{"id":208305543,"uuid":"721311346","full_name":"JLLeitschuh/moderne-client","owner":"JLLeitschuh","description":null,"archived":false,"fork":false,"pushed_at":"2024-02-24T20:41:21.000Z","size":241,"stargazers_count":0,"open_issues_count":4,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-02T11:24:00.749Z","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/JLLeitschuh.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}},"created_at":"2023-11-20T19:49:20.000Z","updated_at":"2023-11-20T19:50:27.000Z","dependencies_parsed_at":"2024-10-27T19:29:01.218Z","dependency_job_id":null,"html_url":"https://github.com/JLLeitschuh/moderne-client","commit_stats":{"total_commits":86,"total_committers":4,"mean_commits":21.5,"dds":0.2906976744186046,"last_synced_commit":"c95b25185c5689f64ebb58518de9aeb50b29d1b6"},"previous_names":["jlleitschuh/moderne-client"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/JLLeitschuh/moderne-client","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JLLeitschuh%2Fmoderne-client","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JLLeitschuh%2Fmoderne-client/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JLLeitschuh%2Fmoderne-client/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JLLeitschuh%2Fmoderne-client/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JLLeitschuh","download_url":"https://codeload.github.com/JLLeitschuh/moderne-client/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JLLeitschuh%2Fmoderne-client/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28472624,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-15T22:13:38.078Z","status":"ssl_error","status_checked_at":"2026-01-15T22:12:11.737Z","response_time":62,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":"2024-10-10T03:09:14.312Z","updated_at":"2026-01-15T22:14:43.486Z","avatar_url":"https://github.com/JLLeitschuh.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Moderne Client\n\n[![CI](https://github.com/JLLeitschuh/moderne-client/actions/workflows/ci.yml/badge.svg)](https://github.com/JLLeitschuh/moderne-client/actions/workflows/ci.yml)\n[![codecov](https://codecov.io/gh/JLLeitschuh/moderne-client/branch/main/graph/badge.svg?token=C05nBupDo7)](https://codecov.io/gh/JLLeitschuh/moderne-client)\n\nThis is a client for the [Moderne](https://moderne.io) API.\nIt is how Jonathan Leitschuh generates automated pull requests to fix vulnerabilities, at-scale, across the entire open source ecosystem.\n\n## Why?\n\nRunning a Moderne recipe once via their UI is easy, but what if you want to run a recipe on a scheduled basis across\nall of your repositories? Moderne doesn't, currently, support campaigns. This fills that gap.\n\n## Usage\n\nThis client can either be used as a standalone script, or as a library.\n\n### Secrets\n\nAll environment variables are either read directly from the environment or a `.env` file in the execution directory.\n\nThe client requires a few secrets to be set in the environment:\n\n#### Moderne API Token\nCan either be read from:\n - `~/.moderne/token.txt` file\n - `MODERNE_API_TOKEN` environment variable\n\nThis is required for all moderne API calls.\n\n#### GitHub API Token\nCan either be read from:\n - `~/.config/hub` file\n - `GITHUB_TOKEN_FOR_MODERNE` environment variable\n\nThis is required only when attempting to create pull requests.\n\n#### GPG Key\nIn order to support GPG signing commits, there are two options:\n\n1. Set the following environment variables:\n   - `GPG_KEY_PUBLIC_KEY`\n   - `GPG_KEY_PRIVATE_KEY`\n   - `GPG_KEY_PASSPHRASE`\n\n2. Set the following environment variables and the rest of the data will be loaded from your local gpg install:\n - `GPG_KEY_ID`\n - `GPG_KEY_PASSPHRASE`\n\nThis is required only when attempting to create pull requests.\n\n### CLI Usage\n\nTo install the CLI dependencies use the following command:\n\n```bash\npip install .[cli]\n```\n\nFor live development, you can use the following command to install the CLI in editable mode:\n```bash\npip install -e .[cli]\n```\nTo see more information about developing the CLI, see the [CONTRIBUTING](CONTRIBUTING.md) guide.\n\nTo use it as a script, you can run it like this:\n\n```bash\nmoderne-client --help\n```\n\n### Library Usage\nTODO\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjlleitschuh%2Fmoderne-client","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjlleitschuh%2Fmoderne-client","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjlleitschuh%2Fmoderne-client/lists"}