{"id":13538242,"url":"https://github.com/metaory/mxflow-cli","last_synced_at":"2026-01-28T07:31:34.343Z","repository":{"id":60038298,"uuid":"540724328","full_name":"metaory/mxflow-cli","owner":"metaory","description":":zap: A Beautiful, Friendly, General purpose CLI task runner","archived":false,"fork":false,"pushed_at":"2023-09-25T19:20:16.000Z","size":2801,"stargazers_count":8,"open_issues_count":5,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-04-20T15:55:22.835Z","etag":null,"topics":["build-tool","ci","cicd","cli","command-line","console","makefile","mxflow","pipeline","script-engine","task-manager","task-runner","terminal","tooling","workflow","workflow-automation","workflow-engine"],"latest_commit_sha":null,"homepage":"https://npmjs.com/package/mxflow","language":"JavaScript","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/metaory.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":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2022-09-24T05:54:16.000Z","updated_at":"2024-01-27T08:43:53.000Z","dependencies_parsed_at":"2024-01-07T21:02:19.269Z","dependency_job_id":"dcfac794-75d8-4555-b1d6-da4b632cb600","html_url":"https://github.com/metaory/mxflow-cli","commit_stats":{"total_commits":1017,"total_committers":3,"mean_commits":339.0,"dds":0.001966568338249708,"last_synced_commit":"5aae1e3f98f6a42b012a73ca123ef63e3aa1bf82"},"previous_names":[],"tags_count":414,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/metaory%2Fmxflow-cli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/metaory%2Fmxflow-cli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/metaory%2Fmxflow-cli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/metaory%2Fmxflow-cli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/metaory","download_url":"https://codeload.github.com/metaory/mxflow-cli/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247726469,"owners_count":20985909,"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","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":["build-tool","ci","cicd","cli","command-line","console","makefile","mxflow","pipeline","script-engine","task-manager","task-runner","terminal","tooling","workflow","workflow-automation","workflow-engine"],"created_at":"2024-08-01T09:01:08.581Z","updated_at":"2026-01-28T07:31:34.308Z","avatar_url":"https://github.com/metaory.png","language":"JavaScript","readme":"\u003cp align=\"center\"\u003e\n  \u003cpicture\u003e\n    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/wiki/metaory/mxflow-cli/assets/card.png\"\u003e\n    \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"https://raw.githubusercontent.com/wiki/metaory/mxflow-cli/assets/card.png\"\u003e\n    \u003cimg width=\"90%\" alt=\"mxflow\" src=\"https://raw.githubusercontent.com/wiki/metaory/mxflow-cli/assets/card.png\"\u003e\n  \u003c/picture\u003e\n  \u003cbr\u003e\n  \u003ca href=\"#why\"\u003eWhy\u003c/a\u003e |\n  \u003ca href=\"#installation\"\u003eInstallation\u003c/a\u003e |\n  \u003ca href=\"#usage\"\u003eUsage\u003c/a\u003e |\n  \u003ca href=\"#config\"\u003eConfig\u003c/a\u003e |\n  \u003ca href=\"#videos\"\u003eVideos\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://npmjs.org/package/mxflow\"\u003e\n    \u003cimg src=\"https://img.shields.io/npm/v/mxflow\" alt=\"NPM Version\"/\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://npmjs.org/package/mxflow\"\u003e\n    \u003cimg src=\"https://img.shields.io/npm/dm/mxflow\" alt=\"NPM Downloads\"/\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/metaory/mxflow-cli/actions/workflows/main.yml\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/workflow/status/metaory/mxflow-cli/MXFlow%20npm%20Package\" alt=\"GH Status\"/\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/metaory/mxflow-cli\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/languages/code-size/metaory/mxflow-cli\" alt=\"Code Size\"/\u003e\n  \u003c/a\u003e\n\u003c/div\u003e\n\n\u003cp align=\"center\"\u003e\n  :zap: A Beautiful, Friendly, General purpose CLI task runner :rocket:\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"75%\" src=\"https://raw.githubusercontent.com/wiki/metaory/mxflow-cli/assets/screenshot.png\"\u003e\n\u003c/p\u003e\n\n`mxflow` is a CLI task runner which configured via a YAML config file.\n\nIt searches for a `.mxflow/config.yml` in the current directory and parent directories recursively up which it then parses for commands and arguments\n\n## Why?\n\n- Internal processes can get **complicated** or too **repetitive**.\n\n- It's hard to **streamline** complex workflows across **teams**.\n\n- Existing task-runners are too focused on a specific **use-case/environment** or have **complicated config** files or are **not friendly**!\n\n---\n\n\u003c!-- Group commands under a workflow, write steps, use special commands like `confirm` --\u003e\n\n\u003c!-- The main goal of the mxflow project is to streamline and simplify complex processes --\u003e\n\n## Major Features\n\n- **Interactive first** - works with/without arguments; prompt missing arguments\n- **Extensive config** - group commands under a workflow, use argument variables in commands\n- **Shell completion** - dynamic shell completion based on the closest config file\n- **Confirmation** - add `confirm` prefix to any **_step command_** to add confirmation prompt\n- **Project / System config** - searches for a `.mxflow/config.yml` in the current directory and parent directories recursively up, so you can have different configs based on the current directory\n\n\u003c!-- ## a CICD for internal processes and workflows on local machines for teams --\u003e\n\n\u003c!-- --- --\u003e\n\u003c!-- ##### :boom: Unopinionated config based workflow **engine** --\u003e\n\u003c!-- ##### :poop: Human readable yaml config --\u003e\n\u003c!-- ##### :card_file_box: Streamline complex workflows across teams --\u003e\n\u003c!-- ##### :bulb: Simplify complex commands --\u003e\n\n---\n\n# Requirements\n\n- Node 16+\n\n---\n\n# Installation\n\nInstall the package, globally:\n\n```bash\nsudo npm i -g mxflow\n```\n\nSetup shell tab completion:\n\n```bash\nmxflow --setup-completion\n```\n\n\u003e make sure to run this command **once**, in case you have ran this command more than once, you can run the `mxflow --clean-completion` to clean.\n\n# Usage\n\n```bash\nmxflow [\u003caction\u003e] [\u003cargs\u003e] [\u003cflags\u003e]\n```\n\n# CLI Options\n\n```markdown\n  init                    | init sample configuration\n  trigger \u003cworkflow-name\u003e | non-interactive workflow trigger\n  view                    | view config\n  edit                    | edit config\n  reset                   | reset config\n  version, --version      | show version\n  help, --help            | help menu\n  -v, --verbose           | verbose logs\n  -F, --force             | force bypass confirmation prompts\n  --no-catch-git          | bypass initial git checks\n  --setup-completion      | setup shell tab completion\n  --clean-completion      | cleanup tab completion`,\n```\n\n# Examples\n\nFor a fully interactive experience;\n\n```bash\nmxflow # or mxf\n```\n\nTo bypass _confirmation_ prompts;\n\n```bash\nmxflow --force\n```\n\nTo interactively select a workflow to trigger;\n\n```bash\nmxflow trigger\n```\n\nTo trigger a particular workflow interactively;\n\n```bash\nmxflow trigger create-flight\n```\n\nTo trigger a particular workflow with arguments;\n\n```bash\nmxflow trigger create-flight --taskId my-tsk --description my-desc --force\n```\n\n---\n\n# Config\n\n`.mxflow/config.yml`\n\n\u003e `mxflow trigger foobar --foo fval --bar bar-xorg`\n\n```yaml\n# The CLI Version\nversion: 0.60.0\n# The milliseconds to wait between commands\nsleep: 1000\n# Should exit upon first error code faced\nexit_on_error: false\n# Config Workflows\nworkflows:\n  # Workflow name\n  foobar:\n    # Workflow description\n    description: example placeholder\n    # Checks to run before workflow. Possible checks are: [git-clean]\n    checks:\n      - git-clean\n    # Variables to collect to be available later on steps\n    args:\n      # Variable name\n      - name: foo\n        # Variable type. Possible types are: [string, number]\n        type: string\n      - name: bar\n        type: string\n        # Regex to test argument input\n        regex: ^bar+\\w\n        # The default value for the variable\n        default: barxorg\n        # Set a different name for the variable\n        export: barx\n    # Steps are list of commands to execute\n    steps:\n      # Variable name or its export are available with braces\n      - echo {foo} world\n        # Variable export\n      - echo goodbye {foo} {barx} cruel world\n        # the `current-branch` is a special variable; always available\n      - echo git branch is {current-branch}\n        # Appending `confirm` will add a confirmation step before the following command\n      - confirm shutdown -h now\n        # Its possible to use system environment variable; resolved at runtime\n      - echo AWS_PROFILE $AWS_PROFILE\n        # Or use braces syntax; it will resolve before execution\n      - echo AWS_PROFILE {AWS_PROFILE}\n```\n\n---\n\n\u003cdetails\u003e\n  \u003csummary\u003e\u003ch2\u003eConfig Reference\u003c/h2\u003e\u003c/summary\u003e\n\n`version` - config version\n\n`exit_on_error` - _(optional)_ should exit on any command with a non-zero exit code, default is `false`\n\n`sleep` - _(optional)_ adds a delay between each command, default is `1000`\n\n`workflows` - object with workflows\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003e\u003ch2\u003eWorkflow Reference\u003c/h2\u003e\u003c/summary\u003e\n\n`description` - workflow description\n\n`checks` - checks to run before workflow.\nPossible checks are: `[git-clean]`\n\n`args` - list of arguments\n\n`args[*].name` - what user inputs as argument\n\n`args[*].type` - validation type; `string | number`\n\n`args[*].export` - _(optional)_ the exported variable, default is `args[*].name`\n\n`args[*].default` - _(optional)_ the default value, if any\n\n`args[*].regex` - _(optional)_ validation pattern\n\n`steps` - list of commands to run\n\n`steps[*]` - the command to run, any shell command string, with some specials commands\n\n\u003e note: you can write a `cd` pre-step to change `cwd` of the following command\n\n\u003e note: you can add a `confirm` prefix to add confirmation prompt\n\n\u003e note: at the moment there are some git commands: `checkout-branch, list-logs, log-bugtracker`. Check [wiki](https://github.com/metaory/mxflow-cli/wiki/Git-Workflow-Sample) for usage example\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003e\u003ch2\u003eConfig Variables\u003c/h2\u003e\u003c/summary\u003e\n\nExample: `echo foo {variable} bar`\n\n- Argument variables\n  - `args` - `export` or `name`\n- Environment variables\n  - `environment` - system environment variables\n  - `.env` - variables defined in the `.env` file\n- git variables\n  - `{current-branch}` - current active branch\n- workflow\n  - `{workflow}` - current active workflow\n\n\u003c/details\u003e\n\n\u003c!-- ### Special command prefix --\u003e\n\u003c!-- - `confirm {command}` _adds a confirmation step to any commands_ --\u003e\n\u003cdetails\u003e\n  \u003csummary\u003e\u003ch2\u003eReal-world Use-cases\u003c/h2\u003e\u003c/summary\u003e\n\n- [git-workflow](https://github.com/metaory/mxflow-cli/wiki/Git-Workflow-Sample)\n\n\u003c/details\u003e\n\n\u003c/details\u003e\n\n---\n\n# Roadmap\n\n- [x] project based config file\n- [ ] plugin system for dynamic lists\n- [x] argument mode\n- [x] argument autocomplete\n- [x] support `.env` file import\n\n---\n\n\u003cdetails\u003e\n  \u003csummary\u003e\u003ch1\u003eVideos\u003c/h1\u003e\u003c/summary\u003e\n\n### Installation\n\n![gifcast_221027184725.gif](https://raw.githubusercontent.com/wiki/metaory/mxflow-cli/assets/gifcast_221027184725.gif)\n\n### Interactive Usage\n\n![gifcast_221104221552.gif](https://raw.githubusercontent.com/wiki/metaory/mxflow-cli/assets/gifcast_221104221552.gif)\n\n### Argument Usage\n\n![gifcast_221104221727.gif](https://raw.githubusercontent.com/wiki/metaory/mxflow-cli/assets/gifcast_221104221727.gif)\n\n\u003c/details\u003e\n\n---\n\n## License\n\n[MIT](LICENSE)\n","funding_links":[],"categories":["JavaScript","cli","\u003ca name=\"launcher\"\u003e\u003c/a\u003eCommand launchers"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmetaory%2Fmxflow-cli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmetaory%2Fmxflow-cli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmetaory%2Fmxflow-cli/lists"}