Skip to content

What is Flox?

Flox is a next-generation package manager that is language-agnostic and cross-platform by default.

-> Install packages into environments without fear of dependency conflicts.
-> Activate an environment to get your project running in a new sub-shell.

There are no containers involved, so there's no isolation preventing you from using your favorite tools and dotfiles. Flox uses Nix under the hood to provide rock-solid reproducibility, ....

Get Started

Examples

Use one tool to set up your dev environment, no matter what language you're working with. Combine multiple languages in a single environment or layer environments for more flexibility.

See how to get started with Flox in your language:

Node Go Python Rust Ruby

Why Flox?

...very high level about same old software problems with increasingly complex solutions...

Flox provides a simpler way to get:

  1. Reproducible dev environments
  2. Reproducible package management for any system
  3. Consistent builds from local to CI to production

Reproducible dev environments

Set up a local developer environment that will work the same across multiple system types and architectures. Activate an environment to enter a subshell with the configuration when you need it, then exit to return to use a different version just as quickly.

All the packages, activation scripts, environment variables and services needed to reproduce the environment are declared in a simple manifest that can be checked into version control along with your source code.

Once your environment is all set up, you can simplify your project's README to a single command (flox activate) to easily share environments with your team or onboard new developers.

Create a reusable toolchain or templates to bootstrap new projects by reusing and combining dev environments.

Reproducible package management for any system

Use Flox to set up your default environment with a set of packages that you always want available, whether you're on macOS or Linux -- x86 or ARM.

Then, when you need to set up a new laptop, or keep multiple machines in sync, you can be sure you're using the exact same versions, no matter when or where you need them.

If you're already using Homebrew, you can easily migrate or use Homebrew and Flox together.

Consistent builds from local to CI to production

Flox lets you define what an environment is in a way that can be reused across local dev, CI, and production. Leverage pre-built integrations for GitHub Actions, CircleCI, and GitLab to pull and activate the same environments locally, in CI and in prod.

Or use Flox containerize to package your environments as OCI images—fully pinned and runnable anywhere. From bare metal to VMs, from Docker Swarm to Kubernetes to AWS Lambda—the runtime context might change, but Flox environments run and behave the same everywhere.

Need an example? See how the Flox Docs team uses Flox in CI to build, test and deploy this docs site.