Inspiration
We've all been there: you need a file that's on your laptop, but you're working on your desktop. Or you're collaborating with teammates in a coffee shop and need to share large files without dealing with cloud upload speeds. Cloud storage solutions work great for the internet, but they're overkill for local networks where devices are just meters apart. We wanted to create a lightweight, fast, and privacy-first solution that leverages the speed of local networks to make file sharing effortless.
What it does
ower is a cross-device file synchronization and discovery tool designed specifically for local networks. It enables you to:
- Automatically sync files: Set up watched directories that continuously sync in the background
- Discover files across devices: Search for files across all connected devices using wildcard patterns (e.g.,
*.pdf,report_*.docx) - Transfer files instantly: Grab files from any device on your network with a simple command
- Work seamlessly: Files stay on their source devices - Tower only tracks metadata, ensuring privacy and minimizing storage overhead
- NLP File Searching: Set up a local sentence transformer on the raspberry to enable nlp file searching and summarizing
How we built it
Tower uses a three-tier architecture that balances centralization with distributed storage:
- TypeScript CLI Client: Monitors local files, detects changes, and communicates with the backend
- FastAPI Backend: Acts as a central metadata registry coordinating all file operations
- SQLite Database: Stores file metadata (paths, timestamps, device locations) - NOT the actual files
- Open AI Text Transformer: Enables NLP querying and summarizing.
We also deployed the backend on a Raspberry Pi 4, turning it into a lightweight local coordination hub. This allowed us to simulate a “home server” setup that multiple laptops and devices could connect to on the same Wi-Fi network. The Pi handled metadata storage, API routing, and background file transfer orchestration, showing how Tower could run privately without relying on any external cloud.
Challenges we ran into
Originally we had an idea to make a network manager with the raspberry pi acting as router and having a SLM running on the pi to configure the network settings in real time. However we learned after 10 hours of debugging that due to raspberry pi hardware limitations its not possible to have it set up as a bridge and connected to the internet at the same time. Then we had to rapidly brainstorm and pivot to our next great idea.
Cross-platform path handling: Windows and Unix systems handle file paths very differently. We had to implement robust path conversion utilities to ensure files could be tracked correctly across different operating systems.
SSH key management: Setting up passwordless SCP transfers required managing SSH keys programmatically. We needed to ensure devices could authenticate with each other securely without constant password prompts.
Real-time file monitoring: Detecting file changes efficiently without overwhelming system resources was tricky. We implemented smart background processes that balance responsiveness with performance.
Network discovery: Initially, we struggled with getting devices to automatically discover the backend server. We added client IP detection and manual configuration options to make the setup process smoother.
What we learned
This project was a deep dive into distributed systems, network programming, and secure file transfer protocols. We learned how to work with SCP at a low level, manage SSH authentication programmatically, and design APIs that coordinate actions across multiple devices. We also gained valuable experience in building CLI tools with great UX, handling cross-platform compatibility issues, and architecting systems that prioritize privacy and efficiency.
We also learned how to deploy and debug Python APIs on embedded devices like the Raspberry Pi — giving us experience in edge computing and local-first architecture design.
What's next for Tower
- Conflict resolution: Handle file conflicts when multiple devices modify the same file
- Router Assistant: SLM router assistant that does file uploads/updates when the network is idle
Built With
- fastapi
- openaiapi
- python
- restapi
- sqlite
- typescript

Log in or sign up for Devpost to join the conversation.