{"id":22731268,"url":"https://github.com/uffizzicloud/uffizzi","last_synced_at":"2025-04-05T20:08:23.942Z","repository":{"id":37087832,"uuid":"419088860","full_name":"UffizziCloud/uffizzi","owner":"UffizziCloud","description":"Build self-serve developer platforms in minutes, not months with out-of-the-box Kubernetes multi-tenancy, virtual clusters, cloud-based dev environments, customizable templating, and more.","archived":false,"fork":false,"pushed_at":"2024-03-15T18:51:33.000Z","size":1990,"stargazers_count":314,"open_issues_count":127,"forks_count":25,"subscribers_count":9,"default_branch":"develop","last_synced_at":"2024-05-15T23:30:57.984Z","etag":null,"topics":["kubernetes","preview"],"latest_commit_sha":null,"homepage":"https://uffizzi.com","language":"Ruby","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/UffizziCloud.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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":"2021-10-19T20:58:14.000Z","updated_at":"2024-07-23T18:23:44.375Z","dependencies_parsed_at":"2022-07-09T19:00:51.707Z","dependency_job_id":"de9efc82-36d8-425f-a017-210f20816c42","html_url":"https://github.com/UffizziCloud/uffizzi","commit_stats":{"total_commits":790,"total_committers":21,"mean_commits":37.61904761904762,"dds":0.7658227848101266,"last_synced_commit":"ed28d6c21cb9577b61c308bc076f87abad78ac34"},"previous_names":["uffizzicloud/uffizzi_app"],"tags_count":146,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UffizziCloud%2Fuffizzi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UffizziCloud%2Fuffizzi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UffizziCloud%2Fuffizzi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UffizziCloud%2Fuffizzi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/UffizziCloud","download_url":"https://codeload.github.com/UffizziCloud/uffizzi/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247393570,"owners_count":20931813,"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":["kubernetes","preview"],"created_at":"2024-12-10T19:21:00.763Z","updated_at":"2025-04-05T20:08:23.919Z","avatar_url":"https://github.com/UffizziCloud.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\" style=\"border-bottom: none\"\u003e\n  \u003ch1\u003e\n    \u003cdiv\u003e\n        \u003ca href=\"https://www.uffizzi.com\"\u003e\n            \u003cimg src=\"misc/uffizzi-icon.png\" width=\"80\" /\u003e\n            \u003cbr\u003e\n            Uffizzi\n        \u003c/a\u003e\n    \u003c/div\u003e\n    Environments-as-a-Service \u003cbr\u003e\n    \u003ca href=\"https://opensource.org/licenses/Apache-2.0\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/License-Apache%202.0-blue.svg\"\u003e\n    \u003c/a\u003e\n  \u003c/h1\u003e\n    \u003cp align=\"center\"\u003e\n        \u003ca href=\"http://www.uffizzi.com\"\u003e\u003cb\u003eWebsite\u003c/b\u003e\u003c/a\u003e •\n        \u003ca href=\"https://join.slack.com/t/uffizzi/shared_invite/zt-ffr4o3x0-J~0yVT6qgFV~wmGm19Ux9A\"\u003e\u003cb\u003eSlack\u003c/b\u003e\u003c/a\u003e •\n        \u003ca href=\"https://uffizzi.com/blog\"\u003e\u003cb\u003eBlog\u003c/b\u003e\u003c/a\u003e •\n        \u003ca href=\"https://twitter.com/_Uffizzi\"\u003e\u003cb\u003eTwitter\u003c/b\u003e\u003c/a\u003e •\n        \u003ca href=\"https://docs.uffizzi.com/\"\u003e\u003cb\u003eDocumentation\u003c/b\u003e\u003c/a\u003e\n    \u003c/p\u003e\n\u003c/div align=\"center\" style=\"border-bottom: none\"\u003e\n\nUffizzi helps teams build [internal developer platforms (IDPs)](/core-concepts/internal-developer-platform) in minutes, not months, by providing out-of-the-box [Kubernetes multi-tenancy](https://www.uffizzi.com/kubernetes-multi-tenancy), [virtual clusters](/core-concepts/ephemeral-environments/virtual-clusters), cloud-based [dev environments](/core-concepts/ephemeral-environments/dev-clusters), customizable templating, and more.\n\nUffizzi provides a foundation for building IDPs, so platform teams can build end-to-end workflows, giving every developer access to self-service, [ephemeral environments](/core-concepts/ephemeral-environments) for development, testing, PRs, staging and more. Use Uffizzi environments to preview pull requests before merging or integrate with your CI pipeline for automated, end-to-end testing.  \n\u0026nbsp;  \n\u0026nbsp;  \n\n\u003chr\u003e\n\n\u003ch3 align=\"center\" style=\"border-bottom: none\"\u003e\n \u003cdiv\u003e\n   Trusted by top teams\n \u003c/div\u003e  \n\u003c/h3\u003e\n   \u003cp align=\"center\"\u003e\n    \u003ca href=\"https://backstage.spotify.com\"\u003e\u003cb\u003eBackstage\u003c/b\u003e\u003c/a\u003e •\n    \u003ca href=\"https://www.nocodb.com\"\u003e\u003cb\u003eNocoDB\u003c/b\u003e\u003c/a\u003e •\n    \u003ca href=\"https://www.forem.com\"\u003e\u003cb\u003eForem\u003c/b\u003e\u003c/a\u003e •\n    \u003ca href=\"https://github.com/jesseduffield/lazygit\"\u003e\u003cb\u003eLazygit\u003c/b\u003e\u003c/a\u003e •\n    \u003ca href=\"https://d2iq.com\"\u003e\u003cb\u003eD2IQ\u003c/b\u003e\u003c/a\u003e •\n    \u003ca href=\"https://github.com/parse-community/parse-dashboard\"\u003e\u003cb\u003eParseDashboard\u003c/b\u003e\u003c/a\u003e •\n    \u003ca href=\"https://fonoster.com/\"\u003e\u003cb\u003eFonoster\u003c/b\u003e\u003c/a\u003e\n   \u003c/p\u003e\n\n  \u003cp align=\"center\"\u003e\n    \u003ca href=\"https://answer.dev/\"\u003e\u003cb\u003eAnswer\u003c/b\u003e\u003c/a\u003e •\n    \u003ca href=\"https://www.windmill.dev/\"\u003e\u003cb\u003eWindmill\u003c/b\u003e\u003c/a\u003e •\n    \u003ca href=\"https://flagsmith.com/\"\u003e\u003cb\u003eFlagsmith\u003c/b\u003e\u003c/a\u003e •\n    \u003ca href=\"https://usememos.com/\"\u003e\u003cb\u003eMemos\u003c/b\u003e\u003c/a\u003e •\n    \u003ca href=\"https://craterapp.com/\"\u003e\u003cb\u003eCrater\u003c/b\u003e\u003c/a\u003e •\n    \u003ca href=\"https://livebook.dev/\"\u003e\u003cb\u003eLivebook\u003c/b\u003e\u003c/a\u003e •\n    \u003ca href=\"https://online-go.com/\"\u003e\u003cb\u003eOnlineGo\u003c/b\u003e\u003c/a\u003e •\n    \u003ca href=\"https://boxyhq.com/\"\u003e\u003cb\u003eBoxyHQ\u003c/b\u003e\u003c/a\u003e\n  \u003c/p\u003e\n\n\u0026nbsp;\nTeams like [Backstage](https://github.com/backstage/backstage/tree/master/.github/uffizzi), [NocoDB](https://github.com/nocodb/nocodb/tree/develop/.github/uffizzi), and [Forem](https://github.com/forem/forem/blob/main/.github/workflows/uffizzi-preview.yml) have adopted Uffizzi because it's lightweight, fast, scalable, and more cost effective than competing solutions. Did you know that Spotify's Backstage team achieves rapid releases at scale using nearly 400 ephemeral environments per month? [Learn how →](https://www.uffizzi.com/ephemeral-environments)\n\n\u003chr\u003e\n\n![github-banner](https://user-images.githubusercontent.com/7218230/191119628-4d39c65d-465f-4011-9370-d53d7b54d8cc.png)\n\n\n## Quickstart (~2 minute)\n\nGo to the [Quickstart Guide](https://docs.uffizzi.com/quickstart) to get started creating ephemeral environments.\n\n## How it works\nSpin up ephemeral environments on demand from the CLI, web dashboard, or from a CI pipeline. Each ephemeral environment is continually refreshed when you push new commits. Uffizzi also handles clean up, so your environments last only as long as you need them.  \n\nUffizzi's modular design works with GitHub, GitLab, BitBucket, and any CI provider.\n\n\u003cimg width=\"600\" alt=\"preview-url\" src=\"https://user-images.githubusercontent.com/7218230/194924634-391aff82-8adf-473b-800e-a20dcdab82dd.png\"\u003e\n\n## Give us a star ⭐️\nIf you're interested in Uffizzi, give us a star. It helps others discover the project.\n\n## Use cases\n\nUffizzi is designed to integrate with any CI platform as a step in your pipeline. You can use Uffizzi to rapidly create:  \n\n- Cloud dev environments with hot reloading of deployed services\n- On-demand test environments for Kubernetes applications\n- Pull request environments  \n- Debugging environments  \n- Hotfix environments  \n- Demo environments  \n- Release environments\n- Staging environments  \n\n## What types of apps are supported by Uffizzi?\n\nUffizzi supports application configurations in Kubernetes manifests, Helm, kustomize, or Docker Compose. See [Using Uffizzi](https://docs.uffizzi.com/usage) to learn about the ways you can use Uffizzi.\n\n## Why Uffizzi?\n\nUffizzi provides a foundation for building IDPs, so platform teams can build end-to-end workflows, giving every developer access to self-service, ephemeral environments for development, testing, PRs, staging and more.\n\nUffizzi is also useful for helping busy open source project leaders approve pull requests faster. Testing a live preview provides a more holistic way to assess a new feature or bug fix, rather than simply reviewing code changes. Uffizzi also removes the added step of pulling down the branch to test it locally: Uffizzi seamlessly integrates with CI providers like GitHub Actions and posts comments directly to pull request issues, so there is no additional step for the maintainer or the contributor. Learn how Uffizzi is helping [Backstage accelerate their development velocity by 20%](https://www.uffizzi.com/ephemeral-environments).\n\n## Set up ephemeral environments for your application\n\n(If you haven't completed the [quickstart guide](https://docs.uffizzi.com/quickstart), we recommend starting there to understand how Uffizzi works and how it's configured.)  \n\nThere are three options to get Uffizzi:  \n\n1. **[Uffizzi Cloud](https://docs.uffizzi.com/cloud) (SaaS)** - This is fastest and easiest way to get started. Uffizzi Cloud is our fully managed option, so you don't have to worry about managing any infrastructure. You can get two concurrent environments for free, or unlock unlimited ephemeral environments with Uffizzi Pro. See our [Pricing page](https://www.uffizzi.com/pricing) for details. \n2. **[Uffizzi Enterprise](https://docs.uffizzi.com/enterprise)** - Uffizzi Enterprise provides the option to run workloads on your own infrastucture, along with more flexibility in customizing your ephemeral environments experience.   \n3. **[Uffizzi Open Source](https://docs.uffizzi.com/open-source)** - Alternatively, you can install the open source version of Uffizzi on your own cluster by following the [self-hosted installation guide](INSTALL.md).\n\n## Documentation\n\n- [Main documentation](https://docs.uffizzi.com)\n- [Docker Compose for Uffizzi ](https://docs.uffizzi.com/compose)\n- [Quickstart guide](https://docs.uffizzi.com/quickstart)\n\n## Community\n\n- [Slack channel](https://join.slack.com/t/uffizzi/shared_invite/zt-ffr4o3x0-J~0yVT6qgFV~wmGm19Ux9A) - Get support or discuss the project  \n- [Subscribe to our newsletter](https://www.linkedin.com/build-relation/newsletter-follow?entityUrn=7011448505391042560) - Receive monthly updates about new features and special events  \n- [Contributing to Uffizzi](CONTRIBUTING.md) - Start here if you want to contribute\n- [Code of Conduct](CODE_OF_CONDUCT.md) - Let's keep it professional\n\n## FAQs\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eMy team tests locally. Why do I need Ephemeral Environments?\u003c/b\u003e\u003c/summary\u003e\n\u003col\u003e\n  \u003cli\u003eEphemeral Environments \u003ca href=\"https://docs.uffizzi.com/core-concepts/production-like\"\u003emore closely resemble production\u003c/a\u003e. Uffizzi deploys images built from your CI pipeline—similar to the ones deployed to a production environment. Uffizzi Ephemeral Environments also include a full network stack, including a domain and TLS certificate.\u003c/li\u003e\n  \u003cli\u003eEphemeral Environments provide many benefits including standardizing development configurations, avoiding the bottleneck of a single test/staging environment, acting as a quality gate to help keep dirty code out of your main branch. Teams can develop and test new features or bug fixes in clean, isolated environments.\u003c/li\u003e\n  \u003cli\u003ePublic preview URLs allow every stakeholder on a team to review features and bug fixes. This helps shorten the feedback loop between developer and reviewer/tester, resulting in faster releases.\u003c/li\u003e\n\u003c/ol\u003e\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eHow is Uffizzi different from Codespaces, Gitpod, etc.?\u003c/b\u003e\u003c/summary\u003e\n\u003cp\u003eCodespaces, Gitpod, and similar tools focus soley on providing development environments hosted in the cloud. They let you code locally (or in a browser-emulated editor) and see your changes in a live deployed environments. They can also provide developers access to more powerful machines than typically available on a laptop or desktop.\u003c/p\u003e\n\n\u003cp\u003eUffizzi is a more full-featured platform designed for building self-serve developer platforms and for standardizing end-to-end developer workflows through on-demand dev, test, CI, and staging environments. Similar to Codespaces and Gitpod, Uffizzi offers cloud-based dev environments, but unlike these tools, Uffizzi users have access to the underlying Kubernetes clusters, enabling more complex configurations and customization via kubectl and similar tools. Uffizzi also supports creating virtual clusters for ephemeral test environments, as well as, CI integrations for pull request previews.\u003c/p\u003e\n\nSee \u003ca href=\"https://docs.uffizzi.com\"\u003eour documentation\u003c/a\u003e for other common uses and guides.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eHow is Uffizzi different from GitHub Actions (or other CI providers)?\u003c/b\u003e\u003c/summary\u003e\nUffizzi does not replace GitHub Actions or any other CI provider. Uffizzi can be added as a step in your existing CI pipeline, after your container images are built and pushed to a container registry. For example, when you open a pull request, a GitHub Actions workflow can trigger the creation of new virtual cluster on Uffizzi and deploy that branch onto it. See our \u003ca href=\"https://docs.uffizzi.com/ci\"\u003eCI Recipes\u003c/a\u003e for configuration help.\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eWhat about my database?\u003c/b\u003e\u003c/summary\u003e\n\u003cp\u003eAll services deployed to Uffizzi ephemeral environments are deployed as containers—this includes databases, caches, and other stateful services This means that even if you use a managed database service like Amazon RDS for production, you should use a database \u003ci\u003eimage\u003c/i\u003e in your configuration (See our \u003ca href=\"https://docs.uffizzi.com/handbook/database-seeding\"\u003eEphemeral Environments Handbook\u003c/a\u003e for strategies on managing stateful services on Uffizzi.\u003c/p\u003e\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eWhat do you mean by \"environments\"?\u003c/b\u003e\u003c/summary\u003e\nSee \u003ca href=\"https://docs.uffizzi.com/core-concepts/ephemeral-environments\"\u003eour documentaion\u003c/a\u003e for what we mean.\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eDoes Uffizzi support monorepos/polyrepos?\u003c/b\u003e\u003c/summary\u003e\nYes. Whether created via you're creating ephemeral environments from the CLI, dashboard, or CI pipeline, Uffizzi can deploy applications from one source or many. If you're using Uffizzi virtual clusters, you should define the sources in your Helm Charts, kustomizations, or manifests. For Docker Compose users, Uffizzi just needs to know the fully qualified container registry URL for where to find these built images. See the \u003ca href=\"https://docs.uffizzi.com/compose/reference\"\u003eUffizzi Compose reference\u003c/a\u003e for details.\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eDoes Uffizzi support _____________?\u003c/b\u003e\u003c/summary\u003e\nIn general, if your application can be containerized, described with Kubernetes, Helm, kustomize, or Docker Compose, then it is likely compatible with Uffizzi. The one notable exception to this is that Uffizzi does not support Node-level access, such as Kubernetes DaemonSets.  \n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eHow can my application services communicate?\u003c/b\u003e\u003c/summary\u003e\nSee \u003ca href=\"https://docs.uffizzi.com/architecture/networking\"\u003eUffizzi Networking\u003c/a\u003e for details.\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eIs Uffizzi open source?\u003c/b\u003e\u003c/summary\u003e\nYes. If you have access to a Kubernetes cluster, you can install Uffizzi via Helm. Follow the \u003ca href=\"INSTALL.md\"\u003eself-hosted installation guide\u003c/a\u003e.\n\u003c/details\u003e\n\n## License\n\nThis library is licensed under the [Apache License, Version 2.0](LICENSE).\n\n## Security\n\nIf you discover a security related issues, please do **not** create a public github issue. Notify the Uffizzi team privately by sending an email to `security@uffizzi.com`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fuffizzicloud%2Fuffizzi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fuffizzicloud%2Fuffizzi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fuffizzicloud%2Fuffizzi/lists"}