cargo install shopkeep
shopkeep --registry-path ./extensionsThe server starts on http://0.0.0.0:8080 by default.
Configuration can be provided via file, environment variables, or CLI arguments (in order of precedence).
CLI arguments:
shopkeep --bind 127.0.0.1 --port 3000 --registry-path /path/to/extensionsEnvironment variables:
export SHOPKEEP_BIND=127.0.0.1
export SHOPKEEP_PORT=3000
export SHOPKEEP_REGISTRY_PATH=/path/to/extensionsConfig file (shopkeep.toml):
bind = "127.0.0.1"
port = 3000
[registry]
type = "filesystem"
path = "/path/to/extensions"| Method | Endpoint | Description |
|---|---|---|
GET |
/health |
Health check |
GET |
/api/v1/extensions |
List extensions (supports ?q=, ?category=, ?page=, ?per_page=) |
GET |
/api/v1/extensions/{id} |
Get extension details |
GET |
/api/v1/extensions/{id}/versions |
List available versions |
GET |
/api/v1/extensions/{id}/versions/{version} |
Get version metadata |
GET |
/api/v1/extensions/{id}/versions/{version}/download |
Download extension package |
GET |
/api/v1/extensions/{id}/latest/download |
Download latest version |
Extensions are stored as .tar.gz packages with the following structure:
registry/
├── my-extension/
│ ├── 0.1.0.tar.gz
│ ├── 0.2.0.tar.gz
│ └── manifest.toml
└── another-extension/
├── 1.0.0.tar.gz
└── manifest.toml
MIT