Steven Develops Icon

Steven Develops

All things engineering

Opinions are my own

BlogPortfolioContactX TwitterLinkedInGitHub

SFTPX – Automated SFTP Upload Service

Started on · Completed on

SFTPX – Automated SFTP Upload Service desktop

Challenge: Many teams rely on manual or brittle scripts to move files into SFTP servers—often failing with large files, partial writes, or unstable network conditions. Existing tools were either overly complex, required constant supervision, or lacked reliable support for high-volume, unattended uploads.

Solution: I built SFTPX as a focused, single-purpose service in Go that runs as a standalone binary on Windows, macOS, or Linux. The application watches a configured directory for new files or subfolders, waits for them to settle, and uploads them efficiently over SFTP using concurrent workers.

All behavior is controlled through a JSON configuration file—allowing operational changes without recompilation. SFTPX supports both password-based and SSH key authentication and is designed to handle large files (up to 4GB) with predictable performance and detailed logging.

Outcomes:

  • Operational Reliability: Automated uploads with configurable delays prevent partial or corrupted transfers.
  • Large File Support: Efficient streaming uploads handle multi-gigabyte files without excessive memory usage.
  • Concurrency Control: Worker-based upload system balances throughput with server stability.
  • Cross-Platform Delivery: Distributed as native binaries for Windows, macOS, and Linux.
  • Zero-Touch Configuration: JSON-based config enables environment changes without rebuilding.
  • Observability: Timestamped log files provide clear audit trails and fast troubleshooting.

SFTPX delivers a production-ready, no-frills solution for teams that need dependable, unattended SFTP uploads—bridging the gap between ad-hoc scripts and heavyweight managed services.

Steven Brown in Milan
Steven Brown

Let's Connect

If you've journeyed this deep into my site, you're exactly who I want to connect with — whether it's about a fresh project or just a friendly chat. Feel free to reach out through social media or my contact page.