Getting Started
To use Frea globally with npm
To use Frea globally with yarn
To use Frea for a single project
echo "https://registry.freajs.org" >> .npmrc
What is Frea?
The JavaScript community has a lot of large players involved, yet the burden of hosting the registry has fallen to a single company. There have been many efforts to build federated or decentralized JavaScript package registries, but none of them have solved for the global namespace in a way that doesn't fragment the community.
Frea is different
Frea doesn't attempt to create a new package registry. Inspired by popular Linux package managers, Frea is a collection of infrastructure pieces that, together, allows the JavaScript community to donate resources to help host the existing registry.
Architecture
We use Cloudflare workers to load balance across our donated mirrors.
For example, below is a diagram of our infrastructure running on GCP.
When the mirrors don't have content, the workers proxy the request back
to npm to avoid race conditions with syncing between the mirrors for
new packages.
By baking load balancing and routing into the network layer with
Cloudflare workers, we reduce the availability requirements of donated
mirrors. We can failover between mirrors at the network level without
surfacing failures to users.

Interested in Donating?
We don't have anything automated for on-boarding mirrors yet. If you are interested in donating infrastructure, email us at frea@blankenship.io!