🇨🇳 中文 | 🇺🇸 English
A cross-platform multi-protocol file manager based on Apache OpenDAL™, providing both command-line interface and graphical interface.
- 🌐 Multi-Protocol Support: Support for local filesystem, S3-compatible storage, FTP and other protocols
- 🖥️ Dual Interface: Provides both command-line tools and modern graphical interface
- 🔧 Connection Management: Save and manage multiple storage connection configurations
- 📁 Complete File Operations: Support for file/directory listing, upload, download, delete, create, and more
- 🚀 Cross-Platform: Support for Windows, Linux, and macOS
- ⚡ High Performance: Built with Rust, featuring async I/O operations
- Quick Start Guide (English) | 快速开始指南 (中文)
- Adding New Protocol Support (English) | 新增协议支持指南 (中文)
- FTP Testing Guide
- Architecture Overview
Multi-Protocol File Manager Main Interface - Unified file management experience supporting multiple storage protocols
mpfm/
├── 📁 src/ # Rust backend source code
│ ├── main.rs # Tauri GUI entry point
│ ├── main_cli.rs # Command-line interface entry point
│ ├── tauri_commands.rs # Tauri command handlers
│ ├── 📁 cli/ # Command-line interface module
│ │ ├── app.rs # CLI application main logic
│ │ ├── commands.rs # CLI command implementations
│ │ └── mod.rs
│ ├── 📁 core/ # Core functionality modules
│ │ ├── config.rs # Configuration management
│ │ ├── error.rs # Error handling
│ │ ├── file.rs # File operations
│ │ └── mod.rs
│ ├── 📁 protocols/ # Protocol adapters
│ │ ├── fs.rs # Local filesystem
│ │ ├── s3.rs # S3 protocol
│ │ ├── traits.rs # Protocol interface definitions
│ │ └── mod.rs
│ └── 📁 utils/ # Utility functions
│ ├── logger.rs # Logging utilities
│ └── mod.rs
├── 📁 ui/ # React frontend source code
│ ├── src/
│ │ ├── App.tsx # Main application component
│ │ ├── main.tsx # Application entry point
│ │ ├── types.ts # TypeScript type definitions
│ │ ├── 📁 components/ # React components
│ │ └── 📁 services/ # API service layer
│ ├── package.json # Frontend dependencies configuration
│ └── vite.config.ts # Vite build configuration
├── Cargo.toml # Rust project configuration
├── tauri.conf.json # Tauri application configuration
└── package.json # Tauri CLI configuration
Backend (Rust)
- OpenDAL - Unified storage access layer
- Tauri - Cross-platform desktop application framework
- Tokio - Async runtime
- Clap - Command-line argument parser
Frontend (TypeScript + React)
- React 18 - UI framework
- Ant Design - UI component library
- Vite - Build tool
- TypeScript - Type safety
- Rust 1.87.0+
- Node.js 18+
- pnpm or npm
# Clone the project
git clone <repository-url>
cd mpfm
# Install Rust dependencies (automatic)
cargo check
# Install frontend dependencies
cd ui && pnpm install && cd ..
# Install Tauri CLI
pnpm installLaunch Tauri desktop application with complete graphical interface:
pnpm run tauri:devThis will:
- Automatically start the frontend development server (React + Vite)
- Compile and run the Rust backend
- Open the desktop application window
Use command-line tool only:
# View help
cargo run --bin main_cli -- --help
# View available commands
cargo run --bin main_cliLaunch frontend interface only (demo mode with mock data):
cd ui
pnpm devThen visit http://localhost:1420 in your browser
- Launch Application: Run
npm run tauri:dev - Add Connection: Click "Add Connection" in the left panel
- Select Connection: Choose the storage you want to use from the connection list
- File Operations: Perform file operations in the right file manager
# Add local filesystem connection
cargo run --bin main_cli -- connection add
# Add S3 connection
cargo run --bin main_cli -- connection add
# List all connections
cargo run --bin main_cli -- connection list
# Remove connection
cargo run --bin main_cli -- connection remove <connection-id># List files and directories
cargo run --bin main_cli -- ls --connection <connection-id> [path]
# Upload file
cargo run --bin main_cli -- upload --connection <connection-id> <local-path> <remote-path>
# Download file
cargo run --bin main_cli -- download --connection <connection-id> <remote-path> <local-path>
# Delete file or directory
cargo run --bin main_cli -- rm --connection <connection-id> <path>
# Create directory
cargo run --bin main_cli -- mkdir --connection <connection-id> <path>
# View file information
cargo run --bin main_cli -- stat --connection <connection-id> <path>- ✅ Local Filesystem (fs): Local disk file operations
- ✅ S3 Protocol: AWS S3, MinIO, Ceph, and other S3-compatible storage
- ✅ FTP Protocal: File Transfer Protocol
- 🔄 SFTP
- 🔄 WebDAV
- 🔄 Azure Blob Storage
- 🔄 Google Cloud Storage
- 🔄 Alibaba Cloud OSS
- 🔄 Tencent Cloud COS
# Build Tauri application
pnpm run tauri:build
# Build CLI tool
cargo build --release --bin main_cliBuild artifacts location:
- Tauri application:
target/release/bundle/ - CLI tool:
target/release/main_cli
- Port Conflict: If you encounter port conflicts, modify the port number in
ui/vite.config.ts - Permission Issues: Ensure you have read/write permissions for target directories
- Connection Failure: Check network connectivity and storage service configuration
- macOS Installation Failure: If installation shows "mpfm is damaged and can't be opened", run
sudo xattr -r -d com.apple.quarantine /Applications/mpfm.appto resolve
# Enable debug logging
RUST_LOG=debug cargo run --bin main_cli
# Check code issues
cargo clippy
# Run tests
cargo test- Quick Start Guide - Get started quickly
- Development Guide - Detailed development documentation
- Adding New Protocols - How to add new protocol support
- FTP Testing Guide - FTP protocol testing instructions
Welcome to contribute code, report issues, or suggest improvements!
- Fork the project
- Create a feature branch:
git checkout -b feature/amazing-feature - Commit your changes:
git commit -m 'Add some amazing feature' - Push to the branch:
git push origin feature/amazing-feature - Submit a Pull Request
Please read our Development Guide for coding standards and contribution guidelines.
This project is licensed under the MIT License - see the LICENSE file for details.
- Apache OpenDAL™ - Providing unified storage access interface
- Tauri - Modern desktop application development framework
- Rust Community - Excellent systems programming language ecosystem
