PutPlace Documentation

PutPlace is a distributed file metadata storage and content deduplication system built with FastAPI and MongoDB.

Overview

PutPlace allows you to:

  • πŸ“ Track file metadata across multiple servers

  • πŸ”„ Deduplicate file content using SHA256 hashing

  • πŸ‘₯ Detect file clones across all users with epoch file tracking

  • 🌐 Browse files interactively via web interface

  • πŸ’Ύ Store file content in local filesystem or AWS S3

  • πŸ” Secure access with API key and JWT authentication

  • πŸš€ Scale horizontally with MongoDB and object storage

Features

File Metadata Tracking

Track comprehensive file information across your infrastructure:

  • File path, size, permissions, ownership

  • Timestamps (mtime, atime, ctime)

  • SHA256 content hash

  • Hostname and IP address

Content Deduplication

Save bandwidth and storage with automatic deduplication:

  • SHA256-based duplicate detection

  • Upload files only once

  • Metadata stored separately for each location

File Clone Detection (New in v0.4.0)

Discover and track duplicate files across your entire infrastructure:

  • Cross-user clone detection - Find files with identical content across all users

  • Epoch file tracking - Identify the original/canonical copy of each file

  • Interactive web browser - Tree-based file explorer with clone visualization

  • Visual highlighting - Green badges and styling for epoch files

  • Zero-length file handling - Special indicators for empty files

Interactive Web Interface (New in v0.4.0)

Manage your files through an intuitive web interface:

  • User authentication - Secure JWT-based login system

  • File browser - Tree layout organized by hostname and directory

  • File details modal - View comprehensive metadata for any file

  • Clone modal - See all instances of duplicate files

  • Real-time clone counts - Button badges showing number of duplicates

Flexible Storage

Choose the storage backend that fits your needs:

  • Local Filesystem - Simple, fast, no external dependencies

  • AWS S3 - Scalable, durable, cloud-native storage

  • Pluggable Architecture - Easy to add new backends

Secure Authentication

API key-based authentication:

  • SHA256-hashed key storage

  • Per-application/server keys

  • Key rotation and revocation

  • Audit trail with usage timestamps

REST API

Clean, well-documented REST API:

  • OpenAPI/Swagger documentation

  • JSON request/response format

  • Comprehensive error handling

  • Health check endpoints

  • New endpoints: /api/clones/{sha256}, /api/my_files

Client Features (Updated in v0.4.0)

Powerful command-line client with enhanced usability:

  • Graceful interrupt handling - Ctrl-C finishes current file before exiting

  • Partial completion status - See progress when interrupted

  • Configuration flexibility - CLI, environment, or file-based config

  • Rich console output - Progress bars and colorized status

  • Pattern-based exclusions - Skip unwanted files efficiently

Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   Client    β”‚         β”‚   Client    β”‚         β”‚   Client    β”‚
β”‚  (Server A) β”‚         β”‚  (Server B) β”‚         β”‚  (Server C) β”‚
β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜         β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜         β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜
       β”‚                       β”‚                        β”‚
       β”‚    X-API-Key Auth     β”‚                        β”‚
       β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                   β”‚
                   β–Ό
         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
         β”‚  PutPlace API   β”‚
         β”‚   (FastAPI)     β”‚
         β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                  β”‚
          β”Œβ”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”
          β”‚                β”‚
          β–Ό                β–Ό
   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
   β”‚  MongoDB   β”‚   β”‚  Storage   β”‚
   β”‚ (Metadata) β”‚   β”‚  Backend   β”‚
   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                          β”‚
                    β”Œβ”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”
                    β”‚           β”‚
                    β–Ό           β–Ό
            β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
            β”‚  Local   β”‚  β”‚   AWS    β”‚
            β”‚   FS     β”‚  β”‚    S3    β”‚
            β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Use Cases

Configuration Management

Track configuration files across your infrastructure:

  • Detect unauthorized changes

  • Monitor configuration drift

  • Centralized configuration inventory

Backup Verification

Verify backup integrity without storing duplicate data:

  • SHA256 verification

  • Deduplication across backup sets

  • Metadata-only comparison

Compliance & Auditing

Maintain audit trails of file changes:

  • Track file modifications

  • User and permission changes

  • Timestamp tracking

Distributed File Inventory

Keep inventory of files across multiple servers:

  • Centralized file database

  • Cross-server deduplication

  • Quick location lookup by SHA256

System Requirements

Server Requirements

  • Python 3.10 - 3.14

  • MongoDB 4.4 or higher

  • 1GB+ RAM (depending on usage)

  • Network connectivity

Client Requirements

  • Python 3.10 - 3.14

  • Network access to PutPlace server

Optional

  • AWS account (for S3 storage)

  • HTTPS/TLS certificate (for production)

License

See LICENSE file for details.

Support

Table of Contents

Deployment

Indices and Tables