A powerful, high-performance command-line tool to list, browse, pull, push, and copy files across remote servers — with full TAB path completion and streaming transfers.
- 🔌 Multi-protocol: SSH/SFTP, FTP, FTPS, SMB2/3
- 🔑 Secure auth: SSH key files + password via system keyring (never stored in plaintext)
- 🚀 High-Speed Copy: Direct remote-to-remote transfers. Performs native server-side copy (intra-server) or memory-streaming (inter-server) to avoid local disk usage.
- 📁 TAB completion: Remote paths complete in both interactive and inline shell modes (Bash/Zsh)
- 🐚 Interactive shell:
filegate shellopens a full REPL withls,cd,pull,push, etc. - 📊 Progress bars: Live speed, ETA, and file size during all transfers
- 🔄 Recursive: Pull/push/copy entire directories
sudo snap install filegate
# Grant permission for system keyring access (required for passwords)
sudo snap connect filegate:password-manager-servicebrew tap thehavays/tap
brew install filegatepipx install .You can use either filegate or the shorthand fgate. Both work identically!
# Register servers
filegate add mynas --host 192.168.1.10 --user admin --protocol sftp --key ~/.ssh/id_rsa
filegate add backup --host 10.0.0.5 --user ftpuser --protocol ftp
filegate add files --host 10.0.0.20 --user user --protocol smb --share documents
# List all servers with status
filegate list
# Test a connection
filegate test mynas
# Download a file (inline)
filegate pull mynas /home/admin/report.pdf ./report.pdf
# Download interactively with TAB completion
filegate pull mynas
# [mynas] Remote path> /home/admin/doc<TAB>
# /home/admin/documents/
# Local destination [./documents]: ./local_docs/
# Upload a file
filegate push mynas ./local_file.txt /home/admin/uploads/
# Remote-to-remote copy (streaming or server-side)
filegate copy mynas:/home/admin/data.zip backup:/archives/
# Interactive shell
filegate shell mynas
# [filegate.mynas:/home/admin]> ls
# [filegate.mynas:/home/admin]> cd documents
# [filegate.mynas:/home/admin/documents]> pull report.pdf
# Install TAB completion
filegate install-completion --shell bash
source ~/.bash_completion.d/filegate| Command | Description |
|---|---|
filegate list |
List registered servers with live status |
filegate add <name> --host … --user … --protocol … |
Register a server |
filegate remove <name> |
Remove a server |
filegate test <name> |
Test connection to a server |
filegate pull <server> [remote] [local] |
Download file/directory |
filegate push <server> [local] [remote] |
Upload file/directory |
filegate shell <name> |
Interactive shell with full TAB completion |
| `filegate install-completion [--shell bash | zsh]` |
| Protocol | Flag | Default Port | Notes |
|---|---|---|---|
| SSH/SFTP | --protocol sftp |
22 | Key or password auth |
| FTP | --protocol ftp |
21 | Password auth |
| FTPS | --protocol ftps |
21 | FTP over TLS |
| SMB2/3 | --protocol smb |
445 | Use --share for default share |
When remote_path is omitted from pull/push, filegate prompts you interactively with TAB completion enabled on the remote server's filesystem.
After running filegate install-completion, TAB completion works directly in your shell prompt:
filegate pull mynas /home/admin/do<TAB>
filegate pull mynas /home/admin/documents/
Servers are stored in ~/.config/filegate/servers.json.
Passwords are stored in your system keyring (GNOME Keyring, KWallet, etc.) — never in plaintext.
| Shell | Completion | Notes |
|---|---|---|
| bash | ✅ Full | Run filegate install-completion --shell bash |
| zsh | ✅ Full | Run filegate install-completion --shell zsh |