{"id":13461672,"url":"https://github.com/argoproj-labs/hera","last_synced_at":"2026-04-02T02:17:18.982Z","repository":{"id":37897962,"uuid":"413486077","full_name":"argoproj-labs/hera","owner":"argoproj-labs","description":"Hera makes Python code easy to orchestrate on Argo Workflows through native Python integrations. It lets you construct and submit your Workflows entirely in Python. ⭐️ Remember to star!","archived":false,"fork":false,"pushed_at":"2025-03-04T17:18:39.000Z","size":4751,"stargazers_count":662,"open_issues_count":45,"forks_count":110,"subscribers_count":12,"default_branch":"main","last_synced_at":"2025-03-05T01:35:45.639Z","etag":null,"topics":["argo","argo-events","argo-workflows","cloud-native","hera","kubernetes","library","machine-learning","pypi","python","sdk","workflow-automation","workflow-management","workflows"],"latest_commit_sha":null,"homepage":"https://hera.rtfd.io","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/argoproj-labs.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":"GOVERNANCE.md","roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-10-04T15:44:47.000Z","updated_at":"2025-03-04T17:18:44.000Z","dependencies_parsed_at":"2024-01-18T18:26:39.527Z","dependency_job_id":"22f3f564-8c9e-4a6b-bd1d-25cfa9a030a3","html_url":"https://github.com/argoproj-labs/hera","commit_stats":{"total_commits":525,"total_committers":60,"mean_commits":8.75,"dds":0.6133333333333333,"last_synced_commit":"ee70f027b2b47945797d719beca389e09b8801ca"},"previous_names":["argoproj-labs/hera-workflows"],"tags_count":66,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/argoproj-labs%2Fhera","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/argoproj-labs%2Fhera/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/argoproj-labs%2Fhera/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/argoproj-labs%2Fhera/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/argoproj-labs","download_url":"https://codeload.github.com/argoproj-labs/hera/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248252679,"owners_count":21072699,"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":["argo","argo-events","argo-workflows","cloud-native","hera","kubernetes","library","machine-learning","pypi","python","sdk","workflow-automation","workflow-management","workflows"],"created_at":"2024-07-31T11:00:51.947Z","updated_at":"2026-04-02T02:17:18.963Z","avatar_url":"https://github.com/argoproj-labs.png","language":"Python","funding_links":[],"categories":["Python","Ecosystem Projects"],"sub_categories":[],"readme":"# Hera\n\n| \u003cimg src=\"https://raw.githubusercontent.com/argoproj-labs/hera/main/docs/assets/hera-logo.svg\" alt=\"Hera mascot\"\u003e | Hera is the go-to Python SDK to make Argo Workflows simple and intuitive. Easily turn Python functions into containerised templates that run on Kubernetes, with full access to its capabilities. |\n|---|---|\n\n[See the Quick Start guide](https://hera.readthedocs.io/en/stable/walk-through/quick-start/) to start using Hera to\norchestrate your Argo Workflows!\n\n```text\nThe Argo was constructed by the shipwright Argus,\nand its crew were specially protected by the goddess Hera.\n```\n\n### PyPI stats\n\n[![PyPI](https://img.shields.io/pypi/v/hera.svg)](https://pypi.python.org/pypi/hera)\n[![Versions](https://img.shields.io/pypi/pyversions/hera.svg)](https://github.com/argoproj-labs/hera)\n\n[![Downloads](https://static.pepy.tech/badge/hera)](https://pepy.tech/project/hera)\n[![Downloads/month](https://static.pepy.tech/badge/hera/month)](https://pepy.tech/project/hera)\n[![Downloads/week](https://static.pepy.tech/badge/hera/week)](https://pepy.tech/project/hera)\n\n### Repo information\n\n[![License: Apache-2.0](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/license/apache-2-0/)\n[![CICD](https://github.com/argoproj-labs/hera/actions/workflows/cicd.yaml/badge.svg)](https://github.com/argoproj-labs/hera/actions/workflows/cicd.yaml)\n[![Docs](https://readthedocs.org/projects/hera/badge/?version=latest)](https://hera.readthedocs.io/en/latest/?badge=latest)\n[![codecov](https://codecov.io/gh/argoproj-labs/hera/branch/main/graph/badge.svg?token=x4tvsQRKXP)](https://codecov.io/gh/argoproj-labs/hera)\n\n## Hera at a glance\n\n```python\nfrom hera.workflows import DAG, Workflow, script\n\n\n# Turn a function into a reusable \"Script template\"\n# using the script decorator\n@script()\ndef echo(message: str):\n    print(message)\n\n\n# Orchestration logic lives *outside* of business logic\nwith Workflow(\n    generate_name=\"dag-diamond-\",\n    entrypoint=\"diamond\",\n) as w:\n    with DAG(name=\"diamond\"):\n        A = echo(name=\"A\", arguments={\"message\": \"A\"})\n        B = echo(name=\"B\", arguments={\"message\": \"B\"})\n        C = echo(name=\"C\", arguments={\"message\": \"C\"})\n        D = echo(name=\"D\", arguments={\"message\": \"D\"})\n        A \u003e\u003e [B, C] \u003e\u003e D  # Define execution order\n\n# Create the workflow directly on your Argo Workflows cluster!\nw.create()\n```\n\nCheck out the [Walkthrough](https://hera.readthedocs.io/en/latest/walk-through/hello-world/) to learn how to construct\nand submit Argo Workflows with Hera!\n\n## Requirements\n\nHera requires an Argo Workflows server to be deployed to a Kubernetes cluster. To learn how to deploy Argo to your own\nKubernetes cluster you can follow the [Argo Workflows](https://argoproj.github.io/argo-workflows/quick-start/) guide!\n\n### Authenticating in Hera\n\nHera assumes that the Argo server sits behind an authentication layer, so workflow submission requests are authenticated\nusing a Bearer token on the request. Another option for workflow submission without the authentication layer is using\nport forwarding to your Argo server deployment and submitting workflows to `localhost:2746`.\n\nThere are a few ways to authenticate in Hera - read more in the\n[authentication walkthrough](https://hera.readthedocs.io/en/stable/walk-through/authentication/) - for now, with the\n`argo` cli tool installed, and the server port-forwarded to `localhost:2746`, this example will get you up and running:\n\n```py\nfrom hera.workflows import Workflow, Container\nfrom hera.shared import global_config\nfrom hera.auth import ArgoCLITokenGenerator\n\nglobal_config.host = \"http://localhost:2746\"\nglobal_config.token = ArgoCLITokenGenerator\n\nwith Workflow(generate_name=\"local-test-\", entrypoint=\"c\") as w:\n    Container(name=\"c\", image=\"docker/whalesay\", command=[\"cowsay\", \"hello\"])\n\nw.create()\n```\n\n## Installation\n\n| Source                                               | Command                                                                              |\n|------------------------------------------------------|--------------------------------------------------------------------------------------|\n| [PyPI](https://pypi.org/project/hera/)               | `pip install hera`                                                                   |\n| [GitHub repo](https://github.com/argoproj-labs/hera) | `python -m pip install git+https://github.com/argoproj-labs/hera --ignore-installed` |\n\n\n### Optional dependencies\n\n#### `yaml`\n\n- Install via `hera[yaml]`\n- [PyYAML](https://pypi.org/project/PyYAML/) is required for the `yaml` output format, which is accessible via\n  `hera.workflows.Workflow.to_yaml(*args, **kwargs)`. This enables GitOps practices and easier debugging.\n\n#### `cli`\n\n- Install via `hera[cli]`. The `[cli]` option installs the extra dependencies including\n  [Cappa](https://github.com/DanCardin/cappa) which is required for the CLI\n- The CLI aims to enable GitOps practices, easier onboarding to Hera, and a more seamless experience with Argo\n  Workflows.\n- It currently supports converting workflows between YAML and Python source codes. See `hera generate yaml --help`,\n  and `hera generate python --help` for more information.\n- **_The CLI is an experimental feature and subject to change!_**\n\n#### `async-client`\n\n- Install via `hera[async-client]`. The `[async-client]` option installs `httpx` to allow the use of the `async_*`\n  Workflow functions through the `AsyncWorkflowsService`.\n\n## Presentations\n\n\u003c!-- Add 3 most recent talks here. Keep in sync with docs homepage (docs/index.md). --\u003e\n\n- [KubeCon/ArgoCon EU 2025 - One Engine To Rule Them All: Unifying Cloud Workloads With Argo Workflows](https://www.youtube.com/watch?v=Xpo5218Ark8\u0026list=PLj6h78yzYM2N9MWCsU_4upn64NDtHGv6i\u0026index=18)\n- [KubeCon/ArgoCon NA 2024 - Data Science Workflows Made Easy: Python-Powered Argo for Your Organization](https://www.youtube.com/watch?v=hZOcj5uVQOo\u0026list=PLj6h78yzYM2Ow7Jy0paxwrimeuFGONU_7\u0026index=14)\n- [KubeCon/ArgoCon EU 2024 - Orchestrating Python Functions Natively in Argo Using Hera](https://www.youtube.com/watch?v=4G3Q6VMBvfI\u0026list=PLj6h78yzYM2NA4NbSC6_mQNza2r3WV87h\u0026index=4)\n\n\u003cdetails\u003e\u003csummary\u003e\u003ci\u003eMore presentations\u003c/i\u003e\u003c/summary\u003e\n\n- [KubeCon/ArgoCon NA 2023 - Orchestrating Rocket Simulations with Argo Workflows and Hera](https://www.youtube.com/watch?v=ue1L420ORRk)\n- [CNCF TAG App-Delivery @ KubeCon NA 2023 - Automating the Deployment of Data Workloads to Kubernetes with ArgoCD, Argo Workflows, and Hera](https://www.youtube.com/watch?v=NZCmYRVziGY\u0026t=12481s\u0026ab_channel=CNCFTAGAppDelivery)\n- [KubeCon/ArgoCon NA 2023 - How to Train an LLM with Argo Workflows and Hera](https://www.youtube.com/watch?v=nRYf3GkKpss\u0026ab_channel=CNCF%5BCloudNativeComputingFoundation%5D)\n    - [Featured code](https://github.com/flaviuvadan/kubecon_na_23_llama2_finetune)\n- [KubeCon/ArgoCon EU 2023 - Scaling gene therapy with Argo Workflows and Hera](https://www.youtube.com/watch?v=h2TEw8kd1Ds)\n- [DoKC Town Hall #2 - Unsticking ourselves from Glue - Migrating PayIt's Data Pipelines to Argo Workflows and Hera](https://youtu.be/sSLFVIIEKcE?t=2088)\n- [Argo Workflows and Events Community Meeting 15 June 2022 - Hera project update](https://youtu.be/sdkBDPOdQ-g?t=231)\n- [Argo Workflows and Events Community Meeting 20 Oct 2021 - Hera introductory presentation](https://youtu.be/QETfzfVV-GY?t=181)\n\n\u003c/details\u003e\n\n## Blogs\n\n\u003c!-- Add 3 most recent blogs here. Keep in sync with docs homepage (docs/index.md). --\u003e\n\n- [Hera Developer Survey 2025](https://dev.to/elliot_gunton_73028975583/hera-developer-survey-2025-168d)\n- [How To Get the Most out of Hera for Data Science](https://pipekit.io/blog/how-to-get-the-most-out-of-hera-for-data-science)\n- [Data Validation with Great Expectations and Argo Workflows](https://towardsdatascience.com/data-validation-with-great-expectations-and-argo-workflows-b8e3e2da2fcc)\n\n\u003cdetails\u003e\u003csummary\u003e\u003ci\u003eMore blogs\u003c/i\u003e\u003c/summary\u003e\n\n- [Hera introduction and motivation](https://www.dynotx.com/hera-the-missing-argo-workflows-python-sdk/)\n- [Dyno is scaling gene therapy research with cloud-native tools like Argo Workflows and Hera](https://www.dynotx.com/argo-workflows-hera/)\n\n\u003c/details\u003e\n\n## Contributing\n\nUse one of the following to open the repo in a cloud dev box:\n\n\u003ca href=\"https://codespaces.new/argoproj-labs/hera\"\u003e\u003cimg src=https://github.com/codespaces/badge.svg height=\"32\" alt=\"Open in GitHub Codespaces\"\u003e\u003c/a\u003e\n\u003ca href=\"https://gitpod.io/#https://github.com/argoproj-labs/hera\"\u003e\u003cimg src=https://gitpod.io/button/open-in-gitpod.svg height=\"32\" alt=\"Open in Gitpod\"\u003e\u003c/a\u003e\n\nRead more in the [contributing guide](./CONTRIBUTING.md)!\n\n## Hera Emeritus Maintainers\n\nThese emeritus maintainers dedicated a part of their career to Hera and reviewed code, triaged bugs and pushed the\nproject forward over a substantial period of time. Their contribution is greatly appreciated:\n\n- [Flaviu Vadan](https://github.com/flaviuvadan)\n\n## License\n\nHera is licensed under Apache 2.0. See [License](https://github.com/argoproj-labs/hera/blob/main/LICENSE) for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fargoproj-labs%2Fhera","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fargoproj-labs%2Fhera","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fargoproj-labs%2Fhera/lists"}