Skip to content

Raw

The Raw registry provides generic file storage via HTTP PUT/GET/DELETE. Use it for binaries, scripts, configuration files, or any artifact that does not fit another registry format.

Upload and download files with curl:

Terminal window
# Upload
curl -X PUT --data-binary @myfile.tar.gz http://nora.example.com:4000/raw/path/to/myfile.tar.gz
# Download
curl -O http://nora.example.com:4000/raw/path/to/myfile.tar.gz
# Check if file exists
curl -I http://nora.example.com:4000/raw/path/to/myfile.tar.gz
# Delete
curl -X DELETE http://nora.example.com:4000/raw/path/to/myfile.tar.gz

The Raw registry does not support upstream proxying. It is a direct storage backend only.

FeatureStatusNotes
Upload (PUT)FullAny file type
Download (GET)FullContent-Type by extension
Delete (DELETE)Full
Exists check (HEAD)FullReturns size + Content-Type
Max file sizeFullConfigurable (default 100 MB)
Conditional overwrite (If-Match)FullETag-based, returns 200 on success
Create-only (If-None-Match: *)FullReturns 412 if resource exists
Directory listingNot implemented
ImmutabilityFullDefault; re-upload returns 409 unless conditional headers used

Environment variables:

VariableDescriptionDefault
NORA_RAW_ENABLEDEnable Raw registrytrue
NORA_RAW_MAX_FILE_SIZEMax file size in bytes104857600 (100 MB)
NORA_RAW_CACHE_CONTROLCache-Control header for GET/HEAD responsesno-cache

config.toml:

[raw]
enabled = true
max_file_size = 104857600
cache_control = "no-cache"

Raw supports conditional PUT for safe create/update workflows:

Terminal window
# Create only if not exists (returns 412 if already present)
curl -X PUT -H "If-None-Match: *" --data-binary @file.txt http://nora:4000/raw/path/file.txt
# Overwrite only if ETag matches (returns 412 on mismatch)
ETAG=$(curl -sI http://nora:4000/raw/path/file.txt | grep -i etag | awk '{print $2}' | tr -d '\r')
curl -X PUT -H "If-Match: $ETAG" --data-binary @file-v2.txt http://nora:4000/raw/path/file.txt
  • No directory listing — you must know the exact file path.
  • Files are immutable by default. Re-uploading the same path returns 409 unless conditional headers (If-Match, If-None-Match) are used.
  • No upstream proxy support.