|
|
|
CB File Hub is a cross-platform file manager for large media libraries. It combines visual browsing, tabs, tags, albums, torrent management and downloads, media viewing and editing, network and SSH access, settings/tag backups, disk cleanup, and an AI assistant in one workspace.
Website: coolbird.net
- AI-assisted file management: Search, organize, review suspicious files, and guide cleanup workflows with CB Agent.
- Disk cleaner with AI review: Scan large drives, inspect junk candidates, and ask CB Agent before deleting uncertain files or folders.
- Media-first browsing: Use thumbnails, gallery views, and video previews designed for photo and video heavy folders.
- Tabbed workflow on desktop and mobile: Keep multiple locations open and switch contexts quickly.
- Tags, smart albums, and discovery tools: Organize large libraries beyond folder names.
- Local, network, and SSH access: Work with local storage, SMB, FTP, WebDAV, SFTP, and saved SSH hosts from one app.
- SSH workspace: Keep SSH hosts and keys organized, open an in-app terminal, or browse the same host through SFTP.
- Torrent library and downloads: Index torrents wherever you store them, import client libraries, merge duplicates, and choose when and where to download.
- Backups and personalization: Back up settings and tags locally or to available cloud integrations; choose themes, accents, views, and thumbnail preferences.
These images render the production Flutter dialogs with sample data. Vietnamese previews are also available.
Mobile home |
File grid |
Tabs and saved locations |
Tags and tag browsing |
The AI side panel sits beside the file browser. Ask it to find files, clean up duplicates, or organize folders — it shows results inline and asks for approval before making any changes.
Scan a drive, inspect bulky folders and junk candidates, then ask CB Agent for a risk-aware review before cleaning anything uncertain.
In the disk cleaner, you can right-click any file or folder and ask CB Agent whether it should be deleted. The agent receives the current path, type, size, file count, and junk classification, then explains what the item is likely used for, the risks of deleting it, and gives a clear recommendation to delete, keep, or review it manually.
- Browse local storage and network locations in a unified interface.
- Open directories in multiple tabs.
- Use the same tab-oriented workflow across desktop and mobile.
- Pin folders, drives, or favorite locations to the sidebar.
- Restore the last opened tab workspace when returning to the app.
- Split a tab into two panes; use list, tiles, grid, details, tree, or column views.
- Search with optional regular expressions, sort, select multiple items, and use keyboard shortcuts and drag and drop.
- Follow file operations and supported app updates in the Status Center.
- Search across folders with natural-language requests instead of exact file names.
- Create files and folders from user intent when routine setup work gets repetitive.
- Manage files with guided actions such as rename, move, copy, delete, and batch organization.
- Find files that may need attention, including broken media, missing thumbnails, duplicates, odd names, or misplaced items.
- Sort messy downloads, recordings, photos, and videos into clearer folder structures.
- Assist with larger cleanup workflows while keeping file operations visible and controllable.
- Optionally run compatible models on-device for local cleanup advice, with model selection and context-window controls in Settings.
- Scan Windows drives for large folders, temporary files, browser caches, recycle-bin content, and other cleanup candidates.
- Browse scan results in a virtualised tree that remains responsive with large directory counts.
- Select cleanup candidates manually or by category.
- Review selected files and folders with CB Agent before deleting.
- Move supported cleanup targets to the Recycle Bin instead of deleting blindly.
- Inspect installed-app storage, cleanable data, and available Windows usage evidence so large or rarely used apps can be reviewed before taking action.
- Add tags to files to create your own organization layer beyond folder names.
- Search by tag using direct tag paths and multi-tag filtering.
- Reuse recent and popular tags for faster tagging.
- Display tags directly in file and gallery views for quick visual context.
- Build a parent/child tag hierarchy and browse it as an expandable tree.
- Filter and sort tags in the tag manager, and switch between list, grid, and tree layouts.
- Browse hierarchical data as a virtualised, expandable tree that stays smooth even with very large folders.
- Available in the tag manager (parent/child tags), the local file browser, and network browsers (SMB/FTP).
- Folders load their children on demand the first time they are expanded, then cache the result.
- Generate image, video, and folder thumbnails.
- Tune video thumbnail extraction position from settings.
- Choose whether thumbnails fill their frame or preserve their full aspect ratio.
- Browse dedicated image and video gallery views.
- Use the built-in video player for local and supported network files.
- Support desktop-oriented media workflows such as external opening and focused playback.
- Edit images with crop, rotation, flip, tonal adjustments, filters, and markup.
- Play supported audio/video, choose audio tracks and subtitles, capture video frames, and use desktop picture-in-picture or a separate playback window.
- Keep a shared index while storing
.torrentfiles in user-selected locations, or organize metainfo with Copy/Move modes. - Browse large libraries with lazy loading, configurable files per page, familiar views, search, sorting, and detailed torrent columns.
- Press F5 to discover new torrents from configured sources and quickly skip files already indexed.
- Add local
.torrentfiles, magnets, or HTTP/HTTPS torrent URLs. Add link prefills a valid magnet from the clipboard. - Choose a payload destination and whether to start immediately; remember that choice and pause/resume/stop downloads.
- In Torrent settings, optionally skip download options and use the saved folder/start preference; choose a folder once if none is saved.
- Reuse an existing Torrent tab for magnet/file activations; queue consecutive requests and show their dialogs in order.
- Confirm a merge for duplicate info hashes, combining trackers and sources while retaining the existing download task and destination.
- Import qBittorrent backups, with optional source cleanup after explicit confirmation and while qBittorrent is closed; keep downloaded content.
- Import saved
.torrentfiles from µTorrent, BitTorrent, Transmission, and Deluge, with profile discovery and manual folder selection. - Copy magnet links from the context menu for single or multiple selections. Track progress, speeds, seeds, peers, trackers, and more.
- Desktop downloads use aria2 and support BitTorrent v1/hybrid torrents. See the Torrent guide for platform details.
- Browse SMB shares.
- Connect to FTP and SFTP servers.
- Connect to WebDAV locations.
- Generate thumbnails for supported network files.
- Stream supported media directly from network locations.
- Store network credentials locally for faster reconnects.
- Save and organize SSH host profiles, with password or private-key authentication.
- Import existing OpenSSH / PEM keys, generate new keys, and copy public keys when provisioning a server.
- Discover eligible hosts and keys from the local
.sshfolder without running shell commands. - Verify and manage trusted host fingerprints, including an explicit warning when a host key changes.
- Open an interactive in-app SSH terminal, reconnect or clear its session, and open remote files through SFTP in the current or a new tab.
- Browse archive contents as virtual folders without extracting everything first.
- Extract a selected entry or an entire archive when needed.
- Support ZIP, TAR, GZip, BZip2, and common compressed TAR variants; on Windows, use installed 7-Zip for 7z and RAR archives.
- Create albums for curated collections.
- Create smart albums driven by dynamic rules.
- Match files into albums automatically based on filename patterns.
- Scope rules to selected source folders so albums stay relevant instead of noisy.
- Export and restore settings and tags with ZIP backups.
- Back up to available Google Drive, Dropbox, and OneDrive integrations using your own accounts, including multiple connected drives.
- Choose light/dark appearance, accent colors, default views, preview settings, and thumbnail fitting.
- Use English or Vietnamese; optional AI providers, cloud integrations, and local models depend on your configuration.
- Use the Microsoft Store update path for Store installations and the supported update flow for other distribution types.
- Windows
- Android
- Linux
- macOS
Latest packaged builds are published here:
More information and downloads: coolbird.net
Available package types include:
- Windows: portable ZIP, EXE installer, MSI installer
- Android: APK and AAB
- Linux:
tar.gz - macOS: DMG (Universal: Apple Silicon and Intel, macOS 12 or later)
- Download the latest Windows package from the releases page.
- Install with the EXE or MSI package, or extract the portable ZIP.
- Run
cb_file_manager.exe.
- Download the latest APK.
- Allow installation from unknown sources if needed.
- Install and launch the app.
tar -xzf CBFileManager-<version>-linux.tar.gz
cd bundle
./cb_file_manager- Download
CBFileHub-<version>-macos.dmg, open it, and drag CB File Hub into Applications. - Open the app. The build is not notarized, so macOS says it cannot verify it: click Done (not Move to Trash).
- Open System Settings → Privacy & Security and click Open Anyway next to the CB File Hub message, then confirm with your password. After that the app opens normally.
- Grant Full Disk Access when the app asks. Click Grant Permission: System Settings opens on the Full Disk Access list, with a CB File Hub icon floating beside it. Drag that icon into the list, approve with Touch ID or your password, and choose Quit & Reopen.
Without Full Disk Access the app still runs, but macOS asks separately for Desktop, Documents, Downloads, and external or network drives, and keeps some folders out of reach.
Release builds are ad-hoc signed, so macOS may drop Full Disk Access after an update. Switch it on again in the same list. If macOS reports the app as damaged, run xattr -dr com.apple.quarantine "/Applications/CB File Hub.app" and open it again. The DMG includes the install and Full Disk Access steps in English and Vietnamese.
This repository is a workspace, not a single Flutter package:
cb_file_manager/ main Flutter app
mobile_smb_native/ local SMB/CIFS FFI plugin
scripts/ build, screenshot, version, and CI helpers
installer/ Windows installer configuration and macOS DMG notes
justfile primary developer command runner
Run just recipes from the repository root. Run direct flutter and dart commands from cb_file_manager/.
- Flutter SDK 3.47.2 stable
- Dart SDK bundled with that Flutter SDK
just- Git Bash on Windows, used by the repository
justfile - Visual Studio 2022 with C++ tools for Windows builds
- Android SDK and JDK 17+ for Android builds
- GTK3 development libraries for Linux builds
- Xcode and CocoaPods for macOS builds, on macOS 12 or later
git clone https://github.com/coolbirdzik/cb-file-hub.git
cd cb-file-hub
just deps
cd cb_file_manager
flutter runOn macOS, run flutter run -d macos from cb_file_manager/.
Enable the developer overlay only for local development:
flutter run --dart-define=CB_SHOW_DEV_OVERLAY=trueDebug builds are ad-hoc signed by default, which gives the app a new identity on every rebuild, so macOS drops the Full Disk Access you granted each time. To keep it, sign Debug builds with your own Apple Development certificate:
cd cb_file_manager/macos/Runner/Configs
cp Signing.local.xcconfig.example Signing.local.xcconfig
# Set DEVELOPMENT_TEAM to your team ID (the OU= field):
security find-certificate -c "Apple Development" -p | openssl x509 -noout -subjectSigning.local.xcconfig is git-ignored and only affects Debug builds; CI and release builds are unchanged. Grant Full Disk Access once more after the first signed build.
# From the repository root
just # list recipes
just deps # install dependencies
just verify # format check + analyze
just test # unit and widget tests
just e2e-parallel # Windows E2E tests
just cleanjust windows
just windows-msi
just android
just android-aab
just linux
just macos # DMG in cb_file_manager/build/macos/dmg/Direct Flutter commands are also valid when run inside cb_file_manager/:
flutter pub get
flutter test
flutter analyze
dart format --output=none --set-exit-if-changed .
flutter test integration_test -d windows --dart-define=CB_E2E=trueGenerate lightweight showcase screenshots for the main app features on desktop and Android:
# Windows desktop screenshots
./scripts/capture_screenshots.sh desktop
# Android screenshots, using first connected Android device or emulator
./scripts/capture_screenshots.sh android
# Both targets
./scripts/capture_screenshots.sh allOn Windows PowerShell, use the native script instead of the Bash wrapper:
# Windows desktop screenshots
./scripts/capture_screenshots.ps1 desktop
# Android screenshots, using the first connected Android device or emulator
./scripts/capture_screenshots.ps1 android
# Both targets
./scripts/capture_screenshots.ps1 allOutput files are copied to:
screenshots/auto/desktop/
screenshots/auto/android/
The screenshot scripts use a dedicated showcase E2E flow and export only the final hero frames for each featured scenario, not every intermediate test step. Desktop and Android run different scene lists, because the two shells look nothing alike: desktop captures the multi-pane workspace, file tag-assignment dialog, SSH workspace, SMB/WebDAV network catalog, and disk cleaner, while Android captures the home, file grid, tab manager, and tag screens that feed the four mobile promo slots.
Android requires a connected device or running emulator visible in flutter devices. The test process writes its frames inside the app sandbox, so the script pulls them off the device with adb before copying them into screenshots/auto/android/.
Generate promotional artwork from the captured screenshots:
python scripts\make_promo_images.pyThe generated artwork is written to screenshots/promo/desktop/, screenshots/promo/mobile/, screenshots/promo/tablet7/, the matching Vietnamese folders under screenshots/promo/vi/, Turkish and Chinese desktop promos under screenshots/promo/tr/ and screenshots/promo/zh/, and the text-free Microsoft Store hero art in screenshots/promo/store/. Use --desktop-only --languages tr,zh to regenerate only some languages.
Render the English/Vietnamese Torrent dialog images with sample data from cb_file_manager/:
flutter test --no-pub tool/capture_torrent_screenshots_test.dart --dart-define=CB_CAPTURE_SCREENSHOTS=trueThis opt-in widget capture writes screenshots/features/torrents/en/ and vi/. It does not launch the desktop app or use the user's torrent library.
Both stores use the same concise descriptions in store/listings/, one per app language (English, Vietnamese, Turkish, Simplified Chinese). Edit each language's .txt once; its bullet points also generate Microsoft Store features. The sibling .json holds the short description, Google Play language code and the Microsoft Store screenshots/hero art. CI checks text limits and image sizes and uploads a store-listings preview. MSIX submissions apply the text and images in Partner Center; AAB submissions include the text in the same Google Play edit as the app bundle. See the content guide.
just verify
just test
just e2e-parallelcb_file_manager/
├── lib/ Flutter application source
├── test/ Unit and widget tests
├── integration_test/ E2E and showcase screenshot tests
├── tool/ E2E runner, dashboard, and reporting tools
└── pubspec.yaml
mobile_smb_native/ Local SMB/CIFS FFI plugin
scripts/ Build, screenshot, release, and CI scripts
installer/ Windows installer definitions and macOS DMG notes
docs/ Feature and UI implementation notes
- Project agent instructions
- Agent architecture graph
- Technical documentation
- Feature notes
- UI pattern notes
- Build script
- Version helper
Contributions are welcome. Open an issue for bugs or feature requests, or submit a pull request if you want to improve the app.

















