{"id":13432495,"url":"https://github.com/alajmo/mani","last_synced_at":"2026-03-07T07:32:58.660Z","repository":{"id":37013370,"uuid":"216899950","full_name":"alajmo/mani","owner":"alajmo","description":":robot: CLI tool to help you manage repositories","archived":false,"fork":false,"pushed_at":"2026-02-10T00:31:33.000Z","size":2591,"stargazers_count":653,"open_issues_count":26,"forks_count":33,"subscribers_count":6,"default_branch":"main","last_synced_at":"2026-02-10T05:51:22.055Z","etag":null,"topics":["cli","git","golang"],"latest_commit_sha":null,"homepage":"https://manicli.com","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/alajmo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"docs/contributing.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"docs/roadmap.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"custom":["https://paypal.me/samiralajmovic","https://www.buymeacoffee.com/alajmo"]}},"created_at":"2019-10-22T20:05:11.000Z","updated_at":"2026-02-09T09:34:29.000Z","dependencies_parsed_at":"2023-01-17T13:16:17.341Z","dependency_job_id":"e740812b-c64a-494f-97cc-8cd2bbeb4379","html_url":"https://github.com/alajmo/mani","commit_stats":null,"previous_names":[],"tags_count":24,"template":false,"template_full_name":null,"purl":"pkg:github/alajmo/mani","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alajmo%2Fmani","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alajmo%2Fmani/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alajmo%2Fmani/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alajmo%2Fmani/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alajmo","download_url":"https://codeload.github.com/alajmo/mani/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alajmo%2Fmani/sbom","scorecard":{"id":177249,"data":{"date":"2025-08-11","repo":{"name":"github.com/alajmo/mani","commit":"73aa308625dd58f27a7a5b79d7874493acdeddeb"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4,"checks":[{"name":"Maintained","score":5,"reason":"3 commit(s) and 4 issue activity found in the last 90 days -- score normalized to 5","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":0,"reason":"Found 2/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/release.yml:1","Warn: no topLevel permission defined: .github/workflows/test.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/release.yml:9"],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v0.31.0 not signed: https://api.github.com/repos/alajmo/mani/releases/221031134","Warn: release artifact v0.30.1 not signed: https://api.github.com/repos/alajmo/mani/releases/208021629","Warn: release artifact v0.30.0 not signed: https://api.github.com/repos/alajmo/mani/releases/192317140","Warn: release artifact v0.25.0 not signed: https://api.github.com/repos/alajmo/mani/releases/107753085","Warn: release artifact v0.24.0 not signed: https://api.github.com/repos/alajmo/mani/releases/104686615","Warn: release artifact v0.31.0 does not have provenance: https://api.github.com/repos/alajmo/mani/releases/221031134","Warn: release artifact v0.30.1 does not have provenance: https://api.github.com/repos/alajmo/mani/releases/208021629","Warn: release artifact v0.30.0 does not have provenance: https://api.github.com/repos/alajmo/mani/releases/192317140","Warn: release artifact v0.25.0 does not have provenance: https://api.github.com/repos/alajmo/mani/releases/107753085","Warn: release artifact v0.24.0 does not have provenance: https://api.github.com/repos/alajmo/mani/releases/104686615"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Pinned-Dependencies","score":1,"reason":"dependency not pinned by hash detected -- score normalized to 1","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/alajmo/mani/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/alajmo/mani/release.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/alajmo/mani/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/alajmo/mani/test.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/alajmo/mani/test.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test.yml:28: update your workflow using https://app.stepsecurity.io/secureworkflow/alajmo/mani/test.yml/main?enable=pin","Warn: containerImage not pinned by hash: test/images/alpine.exec.Dockerfile:1","Warn: containerImage not pinned by hash: test/images/alpine.exec.Dockerfile:22: pin your Docker image by updating alpine:3.15.4 to alpine:3.15.4@sha256:4edbd2beb5f78b1014028f4fbb99f3237d9561100b6881aabbf5acce2c4f9454","Warn: containerImage not pinned by hash: test/images/alpine.test.Dockerfile:1: pin your Docker image by updating alpine:3.21.0 to alpine:3.21.0@sha256:21dc6063fd678b478f57c0e13f47560d0ea4eeba26dfc947b2a4f81f686b9f45","Info:   0 out of   4 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 third-party GitHubAction dependencies pinned","Info:   0 out of   3 containerImage dependencies pinned","Info:   1 out of   1 goCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 12 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-16T17:57:51.361Z","repository_id":37013370,"created_at":"2025-08-16T17:57:51.361Z","updated_at":"2025-08-16T17:57:51.361Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30209736,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-07T05:23:27.321Z","status":"ssl_error","status_checked_at":"2026-03-07T05:00:17.256Z","response_time":53,"last_error":"SSL_read: 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":["cli","git","golang"],"created_at":"2024-07-31T02:01:12.374Z","updated_at":"2026-03-07T07:32:58.653Z","avatar_url":"https://github.com/alajmo.png","language":"Go","funding_links":["https://paypal.me/samiralajmovic","https://www.buymeacoffee.com/alajmo"],"categories":["Go","Utilities","公用事业公司","cli","Utility"],"sub_categories":["Fail injection","实用程序/Miscellaneous","Utility/Miscellaneous","HTTP Clients"],"readme":"\u003ch1 align=\"center\"\u003e\u003ccode\u003emani\u003c/code\u003e\u003c/h1\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://github.com/alajmo/mani/releases\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/release-pre/alajmo/mani.svg\" alt=\"version\"\u003e\n  \u003c/a\u003e\n\n  \u003ca href=\"https://github.com/alajmo/mani/actions\"\u003e\n    \u003cimg src=\"https://github.com/alajmo/mani/workflows/release/badge.svg\" alt=\"build status\"\u003e\n  \u003c/a\u003e\n\n  \u003ca href=\"https://img.shields.io/badge/license-MIT-green\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/license-MIT-green\" alt=\"license\"\u003e\n  \u003c/a\u003e\n\n  \u003ca href=\"https://goreportcard.com/report/github.com/alajmo/mani\"\u003e\n    \u003cimg src=\"https://goreportcard.com/badge/github.com/alajmo/mani\" alt=\"Go Report Card\"\u003e\n  \u003c/a\u003e\n\n  \u003ca href=\"https://pkg.go.dev/github.com/alajmo/mani\"\u003e\n    \u003cimg src=\"https://pkg.go.dev/badge/github.com/alajmo/mani.svg\" alt=\"reference\"\u003e\n  \u003c/a\u003e\n\u003c/div\u003e\n\n\u003cbr\u003e\n\n`mani` lets you manage multiple repositories and run commands across them.\n\n![demo](res/demo.gif)\n\nInterested in managing your servers in a similar way? Checkout [sake](https://github.com/alajmo/sake)!\n\n## Table of Contents\n\n- [Sponsors](#sponsors)\n- [Installation](#installation)\n  - [Building From Source](#building-from-source)\n- [Usage](#usage)\n  - [Initialize Mani](#initialize-mani)\n  - [Example Commands](#example-commands)\n  - [Documentation](#documentation)\n- [License](#license)\n\n## Sponsors\n\nMani is an MIT-licensed open source project with ongoing development. If you'd like to support their efforts, check out [Tabify](https://chromewebstore.google.com/detail/tabify/bokfkclamoepkmhjncgkdldmhfpgfdmo) - a Chrome extension that enhances your browsing experience with powerful window and tab management, focus-improving site blocking, and numerous features to optimize your browser workflow.\n\n## Installation\n\n`mani` is available on Linux and Mac, with partial support for Windows.\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eBinaries\u003c/b\u003e\u003c/summary\u003e\n\nDownload from the [release](https://github.com/alajmo/mani/releases) page.\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003ecURL\u003c/b\u003e (Linux \u0026 macOS)\u003c/summary\u003e\n\n```sh\ncurl -sfL https://raw.githubusercontent.com/alajmo/mani/main/install.sh | sh\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eHomebrew\u003c/b\u003e\u003c/summary\u003e\n\n```sh\nbrew tap alajmo/mani\nbrew install mani\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eMacPorts\u003c/b\u003e\u003c/summary\u003e\n\n```sh\nsudo port install mani\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eArch\u003c/b\u003e (AUR)\u003c/summary\u003e\n\n```sh\nyay -S mani\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eNix\u003c/b\u003e\u003c/summary\u003e\n\n```sh\nnix-env -iA nixos.mani\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eGo\u003c/b\u003e\u003c/summary\u003e\n\n```sh\ngo get -u github.com/alajmo/mani\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eBuilding From Source\u003c/b\u003e\u003c/summary\u003e\n\n1. Clone the repo\n2. Build and run the executable\n    ```sh\n    make build \u0026\u0026 ./dist/mani\n    ```\n\u003c/details\u003e\n\nAuto-completion is available via `mani completion bash|zsh|fish|powershell` and man page via `mani gen`.\n\n## Usage\n\n### Initialize Mani\n\nRun the following command inside a directory containing your `git` repositories:\n\n```sh\nmani init\n```\n\nThis will generate:\n\n- `mani.yaml`: Contains projects and custom tasks. Any subdirectory that has a `.git` directory will be included (add the flag `--auto-discovery=false` to turn off this feature)\n- `.gitignore`: (only when inside a git repo) Includes the projects specified in `mani.yaml` file. To opt out, use `mani init --sync-gitignore=false`.\n\nIt can be helpful to initialize the `mani` repository as a git repository so that anyone can easily download the `mani` repository and run `mani sync` to clone all repositories and get the same project setup as you.\n\n### Example Commands\n\n```bash\n# List all projects\nmani list projects\n\n# Run git status across all projects\nmani exec --all git status\n\n# Run git status across all projects in parallel with output in table format\nmani exec --all --parallel --output table git status\n```\n\n### Documentation\n\nCheckout the following to learn more about mani:\n\n- [Examples](examples)\n- [Config](docs/config.md)\n- [Commands](docs/commands.md)\n- Documentation\n  - [Filtering Projects](docs/filtering-projects.md)\n  - [Variables](docs/variables.md)\n  - [Output](docs/output.md)\n- [Changelog](/docs/changelog.md)\n- [Roadmap](/docs/roadmap.md)\n- [Project Background](docs/project-background.md)\n- [Contributing](docs/contributing.md)\n\n## [License](LICENSE)\n\nThe MIT License (MIT)\n\nCopyright (c) 2020-2021 Samir Alajmovic\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falajmo%2Fmani","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falajmo%2Fmani","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falajmo%2Fmani/lists"}