Skip to content

zocs/inout

Repository files navigation

inout

Files in and out, that's all. — 轻点一下,文件分享即刻在线。

Release License Downloads Flutter Windows Android Linux macOS Build F-Droid

中文文档 · Privacy Policy · 📥 Releases


A graphical file sharing tool based on dufs. Zero config, zero barrier — run inout on one device, and anyone with a browser can access and transfer files. The other side needs no app.


📱 Screenshots

Screenshots


✨ Why inout?

The other side doesn't need an app. Install inout on ONE device, start the server, and anyone with a browser can upload and download files.

Feature
📱 One device is enough The rest use a browser
⬆️⬇️ Bidirectional Upload AND download, not just send
🔗 Just open a link QR code or URL — that's all the other side needs
🔐 Secure Optional password auth, CORS control
🎨 Customizable 6 color schemes + dark / light mode
🌐 Multilingual 简体中文 · 繁體中文 · English
📦 Zero setup Self-contained — no external dependencies

💡 Use Cases

Scenario How
🏠 Home file sharing Phone hotspot → browser access → transfer photos / docs
💼 Office quick transfer One PC starts → colleagues scan → share project files
🎓 Classroom distribution Teacher starts → students scan → download courseware
🔧 Device debugging Embedded device → phone hotspot → download logs
📷 Photo dump Camera/phone starts → PC bulk downloads

🚀 Quick Start

Download

Platform File
🪟 Windows inout-*-windows-x64-setup.exe (installer) or .zip (portable) ✅ Tested
🤖 Android inout-*-android-arm64.apk ✅ Tested
🐧 Linux x64 .AppImage (zero deps) or .deb ✅ Tested
🐧 Linux ARM64 .AppImage or .deb (Kylin/UOS compatible) ✅ Tested
🍎 macOS inout-*-macos-arm64.zip ⚠️ Untested

📥 Download latest release

🤖 Also available on F-Droid (pending review)

Steps

  1. Pick a folder
  2. Tap "Start Server"
  3. Scan QR code or enter URL in browser (port required)
  4. Share files — done!

🌐 Network

Simplest setup: All devices on the same WiFi or hotspot.

Environment
🏠 Same WiFi Just connect and share
📱 Phone hotspot One device creates a hotspot, others join — no router needed
🌍 Remote access Works with ZeroTier, Tailscale, EasyTier, or any VPN

🔒 All transfers happen directly between your devices. No data passes through third-party servers.


🔒 Security

⚠️ inout binds to all network interfaces by default (0.0.0.0)

Network Recommendation
Home WiFi ✅ Safe — LAN only
Public WiFi ⚠️ Enable password auth
Corporate network ⚠️ Watch firewall policies
Public internet ❌ Not recommended — use VPN instead

Best practices:

  1. Enable auth in public environments
  2. Stop the server when done
  3. Review access logs periodically

🔧 Troubleshooting

Android — Storage Permission

Symptom: Can't list files, "Need all files access permission"

Fix: Settings → Apps → inout → Permissions → Allow "All files access"

Port in Use

Symptom: Start fails, "Port XXX already in use"

Fix: Change port (try 8080–9000 range) or kill the occupying process

Linux — AppImage Won't Launch

Symptom: Double-click does nothing

Fix:

chmod +x inout-*.AppImage
./inout-*.AppImage

macOS — Developer Verification Blocked

Symptom: "Can't verify developer" on open

Fix:

xattr -d com.apple.quarantine inout.app

Windows — Firewall Blocking

Symptom: Other devices can't connect

Fix: Allow inout through Windows Firewall (you'll be prompted on first launch)


❓ FAQ

Q: Does the other side need inout? A: No! Only one device runs inout. Others just open a browser.

Q: Can I access it remotely? A: LAN by default. For remote access, use ZeroTier / Tailscale / EasyTier.

Q: Is HTTPS supported? A: Not yet. Planned for a future release.

Q: Max file size? A: No hard limit. Tested with a single 70GB+ archive over gigabit LAN — sustained full bandwidth throughout. Large downloads may have a brief delay while loading file info, which is normal. Actual speed depends on filesystem, disk I/O, and Wi-Fi throughput.

Q: How many devices can connect at once? A: No hard limit — depends on bandwidth and device performance.

Q: Are files uploaded to the cloud? A: No! Everything stays local. Transfers are device-to-device.


🛠️ Development

Requirements

  • Flutter SDK 3.41+
  • Windows: VS Build Tools 2022 (C++ workload)
  • Android: Android SDK, NDK
  • Linux: clang, lld, llvm, libgtk-3-dev
  • macOS: Xcode

Build

git clone https://github.com/zocs/inout.git
cd inout
flutter pub get

# Run (debug)
flutter run -d windows
flutter run -d android

# Build
flutter build windows --release
flutter build apk --release

Packaging Scripts

# Linux (x64 or ARM64)
bash scripts/build_linux.sh x86_64
bash scripts/build_linux.sh aarch64

# macOS (ARM64)
bash scripts/build_macos.sh aarch64

Output: AppImage, deb, rpm, tar.gz (Linux) and zip (macOS).

CI/CD

GitHub Actions builds all platforms on tag push (v*) and creates a release automatically.

Project Structure

lib/
├── main.dart                       # Entry + window init
├── app.dart                        # MaterialApp + theming
├── l10n/app_localizations.dart     # i18n (zh/en/zhTW)
├── models/
│   ├── server_config.dart          # Config model + persistence
│   └── transfer_log.dart           # Transfer log parser
├── pages/
│   ├── home_page.dart              # Home: dir / perms / start / QR
│   ├── settings_page.dart          # Settings: theme / color / language
│   ├── setup_wizard_page.dart      # First-run wizard
│   └── log_page.dart               # Transfer log viewer
└── services/
    ├── dufs_service.dart           # dufs lifecycle (platform dispatch)
    └── dufs_ffi.dart               # FFI bindings (desktop)
scripts/
├── build_dufs.sh                   # Cross-compile dufs (7 platforms)
├── build_linux.sh                  # Linux packaging (AppImage/deb)
├── build_macos.sh                  # macOS packaging
└── dufs-ffi/lib.rs                 # Rust FFI wrapper
android/app/src/main/kotlin/.../DufsForegroundService.kt  # Android native service
installer/inout.nsi                 # Windows NSIS installer

🙏 Acknowledgments

inout is built on top of dufs — a brilliant utility file server by sigoden. Without dufs, inout wouldn't exist. Thanks for making file sharing so simple.


📄 License

MIT © 2026 zocs


inout — files in and out, that's all.

About

A graphical interface built on dufs — zero configuration, zero barrier. 基于 dufs 的图形界面文件分享工具。轻点一下,文件分享即刻在线。

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors