Getting Started
mise-server is a pull-through cache proxy for package registries. It sits between your tools and upstream registries (npm, PyPI, Go, etc.), caching packages locally so subsequent installs are fast and work offline.
Quick Start with Docker Compose
The fastest way to get running:
bash
curl -O https://raw.githubusercontent.com/endevco/mise-server/main/docker-compose.yml
docker compose up -dThis starts:
- mise-server on port 3000
- PostgreSQL for metadata storage
- MinIO for S3-compatible blob storage
Point Your Tools at mise-server
npm
bash
npm config set registry http://localhost:3000/npm/
npm install express # cached on first installpip
bash
pip install --index-url http://localhost:3000/pypi/simple/ requestsGo
bash
export GOPROXY=http://localhost:3000/go/
go get github.com/gorilla/muxCargo
Add to .cargo/config.toml:
toml
[source.crates-io]
replace-with = "mise-server"
[source.mise-server]
registry = "sparse+http://localhost:3000/cargo/"Docker
bash
# Pull through mise-server
docker pull localhost:3000/library/nginx:latestSee Registries for all supported registries and their configuration.
What Happens
- Client requests a package from mise-server
- mise-server checks its cache (S3 or local)
- On cache miss, fetches from the upstream registry
- Stores the package as a BLAKE3-hashed blob
- Returns the package to the client
- Subsequent requests are served from cache
Next Steps
- Docker Compose setup for production configuration
- Kubernetes / Helm for cluster deployments
- Authentication to secure your instance
- Configuration reference for all options