Skip to main content

A simple file manager for Django with S3 support

Project description

FileChest

A zero-configuration file browser for local directories and Amazon S3, built with Python/Django.

uvx filechest /path/to/directory
uvx filechest s3://bucket-name/prefix

No setup required. Just run the command and start browsing.

Features

  • Browse local directories and S3 buckets
  • Upload files (drag & drop supported)
  • Download files
  • Create, rename, delete files and folders
  • Copy and move files between directories
  • Preview images, videos, audio, PDF, and text files
  • List/Grid view toggle

Installation

We recommend using uv for the best experience. See Installing uv for setup instructions.

# Using uvx (recommended, no installation needed)
uvx filechest /path/to/directory

# or install globally with uv
uv tool install filechest

# Or install globally with pipx
pipx install filechest

Usage

Browse a local directory:

filechest /path/to/directory

Browse an S3 bucket:

filechest s3://bucket-name/prefix

List all accessible S3 buckets:

filechest s3://

The command starts a web server and opens your browser automatically.

Command Line Options

usage: filechest [-h] [-p PORT] [--no-browser] [-g] [-a AWS_PROFILE]
                 [--max-buckets MAX_BUCKETS] [--max-entries MAX_ENTRIES]
                 path

Start a file manager for a directory or S3 bucket

positional arguments:
  path                  Path to directory, S3 URL (s3://bucket/prefix), or "s3://" to list all buckets

options:
  -h, --help            show this help message and exit
  -p, --port PORT       Port to run the server on (default: 8000)
  --no-browser          Do not open browser automatically
  -g, --gui             Open GUI window (Experimental)
  -a, --aws-profile AWS_PROFILE
                        AWS profile name to use (sets AWS_PROFILE environment variable)
  --max-buckets MAX_BUCKETS
                        Maximum number of S3 buckets to load (default: 100)
  --max-entries MAX_ENTRIES
                        Maximum number of files/directories to list (default: 1000)

S3 Configuration

FileChest uses your existing AWS credentials. Configure them using the AWS CLI:

# Standard credentials
aws configure

# SSO authentication
aws sso configure

Or set environment variables directly:

export AWS_ACCESS_KEY_ID=your-access-key
export AWS_SECRET_ACCESS_KEY=your-secret-key
export AWS_DEFAULT_REGION=us-east-1

Use the -a option to specify a named profile:

filechest -a my-profile s3://bucket-name

GUI Mode (Experimental)

FileChest can run as a standalone GUI application using pywebview.

filechest -g /path/to/directory

Installation for GUI

Install the appropriate variant for your platform:

# Windows / macOS
uv tool install filechest[gui]

# Linux (GTK)
uv tool install filechest[gtk]

# Linux (Qt)
uv tool install filechest[qt]

System Dependencies

pywebview may require additional system libraries depending on your platform. See the pywebview installation guide for details.

For example, on WSL2 Ubuntu 24.04, the following packages are required:

  • for GTK:
sudo apt install pkg-config cmake libcairo2-dev libgirepository1.0-dev gir1.2-gtk-3.0 gir1.2-webkit2-4.1
  • for Qt:
sudo apt install -y qt6-base-dev qt6-wayland

Using as a Django Application

FileChest can also be run as a standard Django web application, enabling multi-user file management with access control.

Setup

git clone https://github.com/atsuoishimoto/filechest.git
cd django-filechest
uv sync
uv run python manage.py migrate
uv run python manage.py createsuperuser
uv run python manage.py runserver

Open http://127.0.0.1:8000/admin/ to configure volumes and permissions.

Key Concepts

Volume: A storage location (local directory or S3 bucket) that users can browse.

Role: Access level granted to a user for a volume.

  • Editor – Full access: browse, upload, download, create, rename, delete, copy, move
  • Viewer – Read-only: browse and download only

Creating a Volume

In Django Admin, go to Filechest > Volumes and add a new volume:

Field Description
name URL-safe identifier used in the URL path
verbose_name Human-readable name shown in UI
path Local path (/data/files) or S3 URL (s3://bucket/prefix)
public_read If checked, anyone can view without logging in
max_file_size Maximum upload size in bytes (default: 10MB)
is_active Uncheck to disable the volume

Access Control

Access is determined by the following rules, evaluated in order:

  1. Superusers always have Editor access to all volumes.

  2. Users with VolumePermission get the assigned role:

    • Go to Filechest > Volume permissions in Django Admin
    • Select a user and volume, then assign editor or viewer role
  3. Public volumes (public_read=True): Anyone without explicit permission gets Viewer access, including anonymous users.

  4. Private volumes (public_read=False): Users without permission cannot access the volume at all.

Examples

Team shared drive: Create a volume, add VolumePermission for each team member with editor role.

Public file hosting: Create a volume with public_read=True. Anyone can browse and download. Add specific users as editor to allow uploads.

Personal storage: Create a volume per user with VolumePermission (editor). Leave public_read=False so only that user can access it.


License

MIT License

Links

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

filechest-0.4.0.tar.gz (418.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

filechest-0.4.0-py3-none-any.whl (487.5 kB view details)

Uploaded Python 3

File details

Details for the file filechest-0.4.0.tar.gz.

File metadata

  • Download URL: filechest-0.4.0.tar.gz
  • Upload date:
  • Size: 418.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for filechest-0.4.0.tar.gz
Algorithm Hash digest
SHA256 b565150b48c4770af85dfb461d45bc3a877c4ce63a1614ee6f41b353bb7271ab
MD5 f8e0c003d3e1ea59a40ade71380c3eeb
BLAKE2b-256 a4843005ad9597d5d1d8c0ba144e3db9b0fc1a87c4584ff4f5f812d8b62c536f

See more details on using hashes here.

Provenance

The following attestation bundles were made for filechest-0.4.0.tar.gz:

Publisher: publish.yml on atsuoishimoto/filechest

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file filechest-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: filechest-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 487.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for filechest-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 cead52aea97791e8a52f13e2b941b5c623768948467e628b55876856e14ff6b4
MD5 314c1191c177c3a5ebc539b865bde7bc
BLAKE2b-256 61ca7c1b00858b4991839ce8c65580b54b4e946cc9fe00f224af60b9bd6a3350

See more details on using hashes here.

Provenance

The following attestation bundles were made for filechest-0.4.0-py3-none-any.whl:

Publisher: publish.yml on atsuoishimoto/filechest

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page