filelift 0.1.1

A small CLI for lifting local files to S3-compatible object storage.
filelift-0.1.1 is not a library.

filelift

filelift is a small CLI for uploading local assets to S3-compatible object storage and printing shareable URLs.

It is designed for writing, publishing, and static-site workflows where images, videos, and other assets should live outside the source repository.

Goals

  • Upload one file or a directory of files.
  • Support Cloudflare R2, AWS S3, MinIO, and other S3-compatible services.
  • Manage multiple upload targets.
  • Store secrets through the operating system keyring instead of plain text.
  • Print public URLs and Markdown snippets after uploads.

Planned CLI

filelift target add r2-blog \

  --bucket eave-assets \

  --endpoint https://example.r2.cloudflarestorage.com \

  --region auto \

  --public-base-url https://assets.example.com


filelift target use r2-blog

filelift upload ./cover.webp --prefix blog/2026/my-post --markdown

filelift upload ./assets --recursive --prefix blog/2026/my-post

filelift log export --output filelift-debug-log.jsonl

Target Store

Targets contain non-secret storage metadata:

The target store is saved at ~/.filelift/targets.toml.

default_target = "r2-blog"



[targets.r2-blog]

provider = "s3"

bucket = "eave-assets"

endpoint = "https://example.r2.cloudflarestorage.com"

region = "auto"

public_base_url = "https://assets.example.com"

Access keys are stored separately in the system keyring:

  • service: filelift
  • account: <target-name>:access_key_id
  • account: <target-name>:secret_access_key

Diagnostic Logs

filelift writes encrypted diagnostic logs to ~/.filelift/logs/events.log.enc. The log encryption key is stored in the operating system keyring. Logs can be exported to a readable JSONL file for troubleshooting:

filelift log export --output filelift-debug-log.jsonl

filelift log clear

Review exported logs before sharing them. Secrets are redacted and are never written to the encrypted log intentionally.

Architecture

  • cli: command definitions and argument parsing.
  • target: target store load/save.
  • secret: keyring integration.
  • diagnostic_log: encrypted diagnostic logging and export.
  • log_command: diagnostic log command handlers.
  • target_command: target command handlers.
  • storage: storage provider interface.
  • storage::s3: S3-compatible upload implementation.
  • output: URL and Markdown formatting.

Status

This repository is in early scaffolding. The first implementation milestone is target management plus single and recursive uploads to S3-compatible storage.