Skip to content
jhd3197Public

About

Free, open-source file transfer and SSH client for Windows, macOS & Linux. Browse SFTP, FTP and S3, edit remote files, and preview directory syncs. An alternative to WinSCP, FileZilla and PuTTY.

Topics

Resources

Stars

58 stars

Watchers

2 watching

Forks

Repository files navigation

Faro: modern file access for servers and cloud

Faro

File & Agent Remote Operations

A modern desktop client for SFTP, FTP, SSH, S3-compatible storage, WebDAV, and cloud storage.

Latest release Downloads MIT license Join the Faro Discord

Download Faro · Watch the demo · Take a tour · Transfers · Agent Bridge · Build from source

English · Español · 中文版 · Português

Faro is a desktop file client for Windows, macOS, and Linux. Connect to a server or cloud account, browse files side by side, and transfer folders between them. Open an SSH terminal in the same workspace, edit remote files with your own editor, or give a local AI agent access through the Agent Bridge.

17 connection types: servers, buckets, drives, and CMS platforms 3 desktop platforms: Windows, macOS, and Linux GUI, CLI, and an MCP bridge: browse by hand or script your work

Quick start

Choose an installer from the latest release.

Platform Downloads
Windows · x64 .exe installer, .msi, or portable .zip
macOS · Intel + Apple Silicon Universal .dmg
Linux · x64 .AppImage, .deb, or .rpm

Open New Connection, choose your backend, and enter its connection details. You can also import profiles from ~/.ssh/config, FileZilla, or PuTTY.

First launch: unsigned builds on Windows and macOS

Faro's desktop builds do not yet have an Apple notarization or Windows code-signing certificate.

  • Windows: on the “Windows protected your PC” prompt, select More info → Run anyway.

  • macOS: drag Faro to Applications, then run the following once if macOS reports it as damaged:

    xattr -cr /Applications/Faro.app
  • Linux AppImage: make the downloaded file executable with chmod +x <filename>.AppImage.

Screenshots

Your local files and remote files, side by side

Keep servers in the connection rail, drag files between panes, and save frequently used folders as site shortcuts.

Faro dual-pane file browser with a local folder and an SFTP server

App screenshots use fictional demo data, including hostnames, paths, and transfer speeds. Reproduce the screenshots.

Open a terminal where you work See what is taking up space
SSH terminal in Faro Disk Usage Explorer with a treemap and size-ranked folders
Use an SSH shell alongside the file browser. Explore a folder with a treemap and size-ranked tree.
More views: transfers, sync, cloud storage, and settings
Transfer queue Directory sync
Transfer progress and queue Preview of a directory sync plan
Object storage Connection rail
S3 bucket browser Expanded connection rail
Agent Bridge Command approval
Agent Bridge sessions and tools Agent command awaiting approval
New connection Settings
Connection editor Faro settings

File actions context menu

Features

Files and connections Tools for daily work
Browse and transfer. Dual panes, drag and drop, recursive folders, and overwrite, skip, or rename choices. Edit in place. Open a remote file in your local editor and upload changes on save.
Sync folders. Preview an additive or mirror plan between two locations. Set up continuous local-to-remote sync with exclusions. Compare and search. Diff directories across servers, compare file hashes, or search by name and content.
Save your locations. Group connections and bookmark folders as sites, using the parent connection's credentials and permissions. Work from the keyboard. Use the command palette, breadcrumbs, filters, and sortable columns.
Connect across services. Use SSH servers, object storage, cloud drives, and CMS APIs from one connection list. Automate your fleet. Run saved shell workflows across servers with Fleet Skills, the CLI, or MCP tools.

Transfers

Queue uploads and downloads, pause work, retry failures, and set bandwidth limits. Faro uses pipelined SFTP reads and parallel download ranges on supported sources.

SFTP downloads: up to 32 read requests in flight per range; starts at 16 when server limits are unknown. This is a concurrency limit, not a speed benchmark. Resumable downloads keep completed ranges and retry missing bytes. Support depends on the source.

During a transfer What Faro does
Large downloads Splits supported sources into ranges and adjusts concurrency as the transfer runs.
Interrupted downloads Keeps partial data and resume metadata. Sources that cannot seek restart from the beginning.
Folder uploads Inventories files and directories before queuing, checks remote file sizes, and reports partial failures.
Verification Offers checksum verification where supported, in addition to upload size checks.

The cards describe transfer-engine behavior, not measured speed. This repository does not yet publish a reproducible comparison against other clients. The live transfer tests cover throughput and integrity against configured test servers; the pipeline source defines the SFTP limits.

Backends

Use the same file browser across 17 connection types. Available actions depend on each backend: a bucket has no shell, HTTP is read-only, and CMS connections expose their supported resources.

Connect to Supported services
Servers SFTP, FTP, and explicit FTPS
Object storage S3-compatible storage, Azure Blob, Google Cloud Storage
Web storage WebDAV, including Nextcloud and ownCloud; read-only HTTP(S) indexes and direct URLs
Cloud drives Dropbox, OneDrive, Google Drive, Box
Storefronts and CMS Shopify themes; HubSpot Design Manager, assets, and read-only HubDB exports; Dynamics 365 / Dataverse web resources; WordPress media and REST resources
Remote machines Faro Agent on Windows, macOS, and Linux

S3 presets include AWS, Cloudflare R2, Backblaze B2, Wasabi, DigitalOcean Spaces, MinIO, Storj, Hetzner, Scaleway, Oracle OCI, IBM COS, and Supabase, plus generic S3 endpoints. Cloud drives use browser OAuth sign-in with refresh tokens stored in your OS keychain.

Agent Bridge

Let a local AI agent use the server sessions you already opened in Faro. Connect Claude Code or another MCP client through a localhost endpoint. Choose which sessions it can access and review commands in Faro, without handing the agent your server credentials.

Local AI agent → MCP over localhost → Faro and your approval policy → authenticated server session
  1. Connect to a server. Open Bridge, select Start, and enable Allow agent access for the session.

  2. Copy the command generated by the panel. For Claude Code, it looks like this:

    claude mcp add --transport http faro http://127.0.0.1:<port>/mcp \
      --header "Authorization: Bearer <token>"
  3. Ask the agent to inspect the server. Faro exposes tools for sessions, commands, files, search, and workflows; command approvals and activity appear in the Bridge panel.

The bridge binds to 127.0.0.1, requires a per-launch bearer token, and limits access to sessions you enable. Commands require approval by default; you can configure approval policies. The panel records commands, approvals, and denials, and exports a SKILL.md for agents using the HTTP API.

Faro Agent

Browse files and run native commands on another Windows, macOS, or Linux machine without setting up SSH. On the machine you want to control, open Settings → Remote control, enable it, and show the pairing code. Add a Faro Agent connection on your other machine and enter the six-digit code.

For a headless Linux or macOS machine, use the agent installer:

curl -fsSL https://github.com/jhd3197/Faro/releases/latest/download/install-agentd.sh | sh
Daemon commands and connection security
faro-agentd pair                 # serve and open a pairing window
faro-agentd run                  # serve paired controllers
faro-agentd install              # install as a service
faro-agentd install --read-only  # restrict the service to read operations
faro-agentd info                 # show identity and paired controllers

The agent uses a Noise handshake with X25519 and ChaCha20-Poly1305, code-based pairing, and pinned peer keys. The controlled machine enforces its own access policy and audit log. Discovery uses mDNS on the local network; internet rendezvous and relay support remain planned. See the remote agent guide.

CLI

Use the same saved profiles from your terminal. Download faro-cli from the release page.

faro-cli profiles list
faro-cli ls prod:/var/log
faro-cli cp ./report.pdf prod:/var/www/uploads
faro-cli sync ./site prod:/var/www/site --mirror --dry-run
faro-cli diff prod:/etc staging:/etc --hash
faro-cli search prod:/var/log "OutOfMemory" --content --regex
faro-cli agent exec prod 'journalctl -u api -n 100'

Use name:/path for a saved connection and a plain path for a local file. The CLI also supports file operations, shell commands, Bridge jobs, Fleet Skills, authenticated HTTP fetches, and self-updates. See more examples and build instructions.

Develop

Install Node 20+, Rust 1.88+, and the platform dependencies listed in the development guide, then run:

npm install
npm run tauri dev

Faro uses Tauri 2, Rust, React, and TypeScript. The desktop app and CLI share the Rust core and RemoteFs interface. Read the architecture, project layout, and Windows build notes.

Documentation

Guide Covers
Development Architecture, builds, CLI examples, and README artwork
Remote Agent Pairing, protocol, and security
Deep Links faro:// connection links
HubSpot setup Private app configuration
Screenshots Mock-data capture and reproduction
Updater key custody Updater signing-key handling

Roadmap

Planned work includes SMB/CIFS support, bidirectional sync with conflict resolution, on-demand virtual folders, Faro Agent internet reach, and desktop code signing. See releases for shipped changes and issues for discussion.

Contributing

Contributions to backends, transfer reliability, UI, tests, and documentation are welcome. Open an issue to discuss a larger change, or submit a pull request with a description and verification steps.

Support Faro

Faro is free and open source. Support development through GitHub Sponsors or Buy Me a Coffee, or star the repository.

Cryptocurrency donations
Asset Network Address
QR code for the USDT TRC-20 donation address USDT TRC-20 · Tron TTiCtqLauF1iSW2YGB3b78KmRxRqoLCgeL
QR code for the USDT and ETH ERC-20 donation address USDT / ETH ERC-20 · Ethereum 0xD13D5355Fa214e8317fea2ff192a065BaeC13527
QR code for the Bitcoin donation address BTC Bitcoin bc1qatx67n3qxdvuv3arc9j8aytk34f22g02k9c7vr
QR code for the Solana donation address SOL Solana AWXzqtBEgUfteHPQtDegsZ6D5y57M3GGdKPD8rR7h6xu

Related projects

  • ServerKit: manage web apps, databases, Docker containers, and server security from a browser.
  • LocalKit: run local WordPress sites with Docker Compose and connect them to ServerKit.
  • DeviceKit: manage Android devices, run automations, and test apps across a fleet.

Community

Join Faro on Discord for setup help, feedback, and discussion. Report bugs and request features in GitHub issues.

License

MIT. Created by Juan Denis.

About

Free, open-source file transfer and SSH client for Windows, macOS & Linux. Browse SFTP, FTP and S3, edit remote files, and preview directory syncs. An alternative to WinSCP, FileZilla and PuTTY.

Topics

Resources

Stars

58 stars

Watchers

2 watching

Forks

Releases

Contributors

Languages