{"id":15155619,"url":"https://github.com/qovery/engine","last_synced_at":"2025-05-14T09:10:23.096Z","repository":{"id":37051305,"uuid":"305982568","full_name":"Qovery/engine","owner":"Qovery","description":"The Orchestration Engine To Deliver Self-Service Infrastructure ⚡️","archived":false,"fork":false,"pushed_at":"2025-05-12T09:17:19.000Z","size":10071,"stargazers_count":2355,"open_issues_count":1,"forks_count":76,"subscribers_count":24,"default_branch":"main","last_synced_at":"2025-05-14T09:09:58.555Z","etag":null,"topics":["aws","azure","cloud","digitalocean","gcp","helm","kubernetes","rust","terraform"],"latest_commit_sha":null,"homepage":"https://www.qovery.com","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Qovery.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,"zenodo":null}},"created_at":"2020-10-21T10:04:30.000Z","updated_at":"2025-05-13T23:00:55.000Z","dependencies_parsed_at":"2023-10-02T11:15:26.144Z","dependency_job_id":"9d0e28a0-ddf7-48a2-9bd4-a475fd1bb527","html_url":"https://github.com/Qovery/engine","commit_stats":{"total_commits":331,"total_committers":2,"mean_commits":165.5,"dds":0.009063444108761365,"last_synced_commit":"56c31ef75d07bd4ddd25af6f285795d770eb3da6"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Qovery%2Fengine","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Qovery%2Fengine/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Qovery%2Fengine/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Qovery%2Fengine/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Qovery","download_url":"https://codeload.github.com/Qovery/engine/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254110374,"owners_count":22016391,"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":["aws","azure","cloud","digitalocean","gcp","helm","kubernetes","rust","terraform"],"created_at":"2024-09-26T18:41:31.621Z","updated_at":"2025-05-14T09:10:23.040Z","avatar_url":"https://github.com/Qovery.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://www.qovery.com\"\u003e\n    \u003cimg src=\"https://raw.githubusercontent.com/Qovery/public-resources/master/qovery-engine-logo.svg\" width=\"318px\" alt=\"Qovery logo\" /\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\u003ch3 align=\"center\"\u003eThe simplest way to deploy your apps in the Cloud\u003c/h3\u003e\n\u003cp align=\"center\"\u003eDeploy your apps on any Cloud providers in just a few seconds ⚡\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"https://img.shields.io/badge/stability-work_in_progress-lightgrey.svg?style=flat-square\" alt=\"work in progress badge\"\u003e\n\u003cimg src=\"https://github.com/Qovery/engine/workflows/functionnal-tests/badge.svg?style=flat-square\" alt=\"Func tests\"\u003e\n\u003ca href=\"https://discord.qovery.com\"\u003e \u003cimg alt=\"Discord\" src=\"https://img.shields.io/discord/688766934917185556?label=discord\u0026style=flat-square\"\u003e \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cbr /\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"https://raw.githubusercontent.com/Qovery/public-resources/master/qovery_kubernetes_cloudproviders.svg\" height=\"450px\" alt=\"Qovery stack on top of Kubernetes and Cloud providers\" /\u003e\n\u003c/p\u003e\n\n**Qovery Engine** is an open-source abstraction layer library that turns easy application deployment on **AWS**, **GCP**, **Azure**, and other Cloud providers in just a few minutes. The Qovery Engine is written in [Rust](https://www.rust-lang.org) and takes advantage of [Terraform](https://www.terraform.io), [Helm](https://helm.sh), [Kubectl](https://kubernetes.io/docs/reference/kubectl/overview), and [Docker](https://www.docker.com) to manage resources.\n\n- Website: https://www.qovery.com\n- Qovery documentation: https://hub.qovery.com/docs\n- Community: [Join us](https://discord.qovery.com) on Discord and on our [Q\u0026A forum](https://discuss.qovery.com)\n\n**Please note**: We take Qovery's security and our users' trust very seriously. If you believe you have found a security issue in Qovery, please responsibly disclose by contacting us at security@qovery.com.\n\n## ✨ Features\n\n- **Zero infrastructure management:** Qovery Engine initializes, configures, and manages your Cloud account for you.\n- **Multi Cloud:** Qovery Engine is built to work on AWS, GCP, Azure and any Cloud provider.\n- **On top of Kubernetes:** Qovery Engine takes advantage of the power of Kubernetes at a higher level of abstraction.\n- **Terraform and Helm:** Qovery Engine uses Terraform and Helm files to manage the infrastructure and app deployment.\n- **Powerful CLI:** Use the provided Qovery Engine CLI to deploy your app on your Cloud account seamlessly.  \n- **Web Interface:** Qovery provides a web interface through [qovery.com](https://www.qovery.com)\n\n### 🔌 Plugins\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"https://docs.qovery.com/img/policy-complete-flow.png\" width=\"800px\" alt=\"Qovery engine workflow\" /\u003e\n\u003c/p\u003e\n\nQovery engine supports a number of different plugins to compose your own deployment flow:\n- **Cloud providers:** [AWS](https://hub.qovery.com/docs/using-qovery/configuration/cloud-service-provider/amazon-web-services/), Scaleway ([in beta](https://hub.qovery.com/docs/using-qovery/configuration/cloud-service-provider/scaleway/)), Azure ([vote](https://hub.qovery.com/docs/using-qovery/configuration/cloud-service-provider/azure/)), GCP ([vote](https://hub.qovery.com/docs/using-qovery/configuration/cloud-service-provider/google-cloud-platform/))\n- **Build platforms:** [Qovery CI](https://hub.qovery.com/docs/using-qovery/addon/continuous-integration/qovery-ci/), Circle CI ([vote](https://hub.qovery.com/docs/using-qovery/addon/continuous-integration/circle-ci/)), Gitlab CI ([vote](https://hub.qovery.com/docs/using-qovery/addon/continuous-integration/gitlab-ci/)), GitHub Actions ([vote](https://hub.qovery.com/docs/using-qovery/addon/continuous-integration/github-actions/))\n- **Container registries:** AWS ECR, DockerHub, ACR, Scaleway Container Registry\n- **DNS providers:** Cloudflare\n- **Monitoring services:** Datadog ([vote](https://hub.qovery.com/docs/using-qovery/addon/monitoring/datadog/)), Newrelic ([vote](https://hub.qovery.com/docs/using-qovery/addon/monitoring/new-relic/))\n\n**[See more on our website](https://www.qovery.com)**.\n\n## Demo\n\nHere is a demo from [Qovery CLI](https://docs.qovery.com/docs/using-qovery/interface/cli/) from where we use the Qovery Engine. \n\n[![Qovery CLI](https://asciinema.org/a/370072.svg)](https://asciinema.org/a/370072)\n\n## Getting Started\n### Installation\nUse the Qovery Engine as a Cargo dependency.\n```toml\nqovery-engine = { git = \"https://github.com/Qovery/engine\", branch=\"main\" }\n```\n\n### Usage\n\n#### Rust lib\nInitialize EKS (AWS Kubernetes) and ECR (AWS container registry) on AWS \n```rust\nlet engine = Engine::new(\n    context, // parameters\n    local_docker, // initialize Docker as a Build Platform\n    ecr, // initialize Elastic Container Registry\n    aws, // initialize AWS account\n    cloudflare, // initialize Cloudflare as DNS Nameservers\n);\n\nlet session = match engine.session() {\n    Ok(session) =\u003e session, // get the session\n    Err(config_error) =\u003e panic!(\"configuration error {:?}\", config_error),\n};\n\nlet mut tx = session.transaction();\n\n// create EKS (AWS managed Kubernetes cluster)\ntx.create_kubernetes(\u0026eks);\n\n// create the infrastructure and wait for the result\nmatch tx.commit() { \n    TransactionResult::Ok =\u003e println!(\"OK\"),\n    TransactionResult::Rollback(commit_err) =\u003e println!(\"ERROR but rollback OK\"), \n    TransactionResult::UnrecoverableError(commit_err, rollback_err) =\u003e println!(\"FATAL ERROR\")\n};\n```\n\nDeploy an app from a Github repository on AWS\n```rust\n// create a session before\n//------------------------\n\nlet mut environment = Environment {...};\n\nlet app = Application {\n    id: \"app-id-1\".to_string(),\n    name: \"app-name-1\".to_string(),\n    action: Action::Create, // create the application, you can also do other actions\n    git_url: \"https://github.com/Qovery/node-simple-example.git\".to_string(),\n    git_credentials: GitCredentials {\n        login: \"github-login\".to_string(), // if the repository is a private one, then use credentials\n        access_token: \"github-access-token\".to_string(),\n        expired_at: Utc::now(), // it's provided by the Github API\n    },\n    branch: \"main\".to_string(),\n    commit_id: \"238f7f0454783defa4946613bc17ebbf4ccc514a\".to_string(),\n    dockerfile_path: \"Dockerfile\".to_string(),\n    private_port: Some(3000),\n    total_cpus: \"1\".to_string(),\n    cpu_burst: \"1.5\".to_string(),\n    total_ram_in_mib: 256,\n    min_instances: 1,\n    max_instances: 4,\n    storage: vec![], // you can add persistent storage here\n    environment_variables: vec![], // you can include env var here\n};\n\n// add the app to the environment that we want to deploy\nenvironment.applications.push(app);\n\n// open a transaction\nlet mut tx = session.transaction();\n\n// request to deploy the environment\ntx.deploy_environment(\u0026EnvironmentAction::Environment(environment));\n\n// commit and deploy the environment\ntx.commit();\n```\n*Note: the repository needs to have a Dockerfile at the root.*\n\n## Documentation\nFull, comprehensive documentation is available on the Qovery website: https://docs.qovery.com\n\n## Contributing\nPlease read our [Contributing Guide](./CONTRIBUTING.md) before submitting a Pull Request to the project.\n\n## Community support\nFor general help to use Qovery Engine, please refer to [the official Qovery Engine documentation](https://hub.qovery.com/docs). For additional help, you can use one of these channels to ask a question:\n\n- [Discord](https://discord.qovery.com) (For live discussion with the Community and Qovery team)\n- [GitHub](https://github.com/qovery/engine) (Bug reports, Contributions)\n- [Roadmap](https://roadmap.qovery.com) (Roadmap, Feature requests)\n- [Twitter](https://twitter.com/qovery_) (Get the news fast)\n\n## Roadmap\nCheck out our [roadmap](https://roadmap.qovery.com) to get informed of the latest features released and the upcoming ones. You may also give us insights and vote for a specific feature.\n\n## FAQ\n### Why does Qovery exist?\nAt Qovery, we believe that the Cloud must be simpler than what it is today. Our goal is to consolidate the Cloud ecosystem and makes it accessible to any developer, DevOps, and company. Qovery helps people to focus on what they build instead of wasting time doing plumbing stuff.\n\n### What is the difference between `Qovery` and `Qovery Engine`?\n[Qovery](https://www.qovery.com) is a Container as a Service platform for developers. It combines the simplicity of Heroku, the reliability of AWS, and the power of Kubernetes. It makes the developer and DevOps life easier to deploy complex applications. \n\n**Qovery Engine** is the Open Source abstraction layer used by Qovery to abstract the deployment of containers and databases on any Cloud provider.\n\n### Why is the Qovery Engine written in Rust?\nRust is underrated in the Cloud industry. At Qovery, we believe that Rust can help in building resilient, efficient, and performant products. Qovery wants to contribute to make Rust being a significant player in the Cloud industry for the next 10 years.\n\n### Why do you use Terraform, Helm and Kubectl binaries?\nThe Qovery Engine is designed to operate as an administrator and takes decisions on the output of binaries, service, API, etc. Qovery uses the most efficient tools available in the market to manage resources.\n\n## License\n\nSee the [LICENSE](./LICENSE) file for licensing information.\n\n## Qovery\n\nQovery is a [CNCF](https://landscape.cncf.io/format=members\u0026selected=qovery-member) and [Linux Foundation](https://www.linuxfoundation.org/membership/members/) silver member.\n\n\u003cimg src=\"https://raw.githubusercontent.com/cncf/artwork/master/other/cncf-member/silver/color/cncf-member-silver-color.svg\" width=\"300px\" alt=\"CNCF Silver Member logo\" /\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fqovery%2Fengine","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fqovery%2Fengine","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fqovery%2Fengine/lists"}