1 unstable release
Uses new Rust 2024
| new 0.1.0 | Feb 21, 2026 |
|---|
#3 in #tcp-port
20KB
305 lines
entrepot
Artifact registry server for mise tools and garni packages. A lightweight HTTP service for uploading, downloading, and managing versioned artifacts backed by filesystem storage.
Install
cargo install --path .
Usage
entrepot --port 3000 --data-dir ./data
Options
| Flag | Env | Default | Description |
|---|---|---|---|
--port, -p |
ENTREPOT_PORT |
3000 |
Port to listen on |
--data-dir, -d |
ENTREPOT_DATA_DIR |
./data |
Data directory for artifact storage |
--bind |
ENTREPOT_BIND |
0.0.0.0 |
Bind address |
Set RUST_LOG to control log verbosity (e.g. RUST_LOG=info, RUST_LOG=entrepot=debug).
API
Health check
GET /health
Returns {"status": "ok"}.
Upload artifact
PUT /v1/artifacts/:name/:version
Body must be raw bytes (e.g. a tarball). Returns 201 Created with artifact metadata. Returns 409 Conflict if the artifact already exists — uploads are immutable.
Download artifact
GET /v1/artifacts/:name/:version
Returns the raw artifact bytes with content-type: application/octet-stream. Returns 404 if not found.
Delete artifact
DELETE /v1/artifacts/:name/:version
Returns 204 No Content. Returns 404 if not found.
List artifacts
GET /v1/artifacts
Returns a JSON array of artifact names.
List versions
GET /v1/artifacts/:name
Returns a JSON array of version metadata objects, sorted by version.
Artifact metadata
Each version has associated metadata:
{
"name": "my-tool",
"version": "1.0.0",
"size": 10485760,
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"created_at": "2025-02-21T12:00:00Z"
}
Examples
# Upload
curl -X PUT http://localhost:3000/v1/artifacts/my-tool/1.0.0 \
--data-binary @artifact.tar.gz
# Download
curl http://localhost:3000/v1/artifacts/my-tool/1.0.0 -o artifact.tar.gz
# List all artifacts
curl http://localhost:3000/v1/artifacts
# List versions
curl http://localhost:3000/v1/artifacts/my-tool
# Delete
curl -X DELETE http://localhost:3000/v1/artifacts/my-tool/1.0.0
Storage layout
Artifacts are stored on the filesystem under --data-dir:
data/
└── <name>/
└── <version>/
├── artifact.tar.gz
└── meta.json
Development
Requires mise (optional, for task runner):
mise run build # cargo build
mise run test # cargo test
mise run dev # start dev server on port 3000
Or use cargo directly:
cargo build
cargo test
cargo run -- --port 3000
License
FSL-1.1-ALv2 — converts to Apache 2.0 on 2027-02-21.
Dependencies
~28MB
~432K SLoC