File & Agent Remote Operations
A modern desktop client for SFTP, FTP, SSH, S3-compatible storage, WebDAV, and cloud storage.
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.
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.
Keep servers in the connection rail, drag files between panes, and save frequently used folders as site shortcuts.
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 |
|---|---|
![]() |
![]() |
| 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 |
|---|---|
![]() |
![]() |
| Object storage | Connection rail |
|---|---|
![]() |
![]() |
| Agent Bridge | Command approval |
|---|---|
![]() |
![]() |
| New connection | Settings |
|---|---|
![]() |
![]() |
| 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. |
Queue uploads and downloads, pause work, retry failures, and set bandwidth limits. Faro uses pipelined SFTP reads and parallel download ranges on supported sources.
| 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.
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.
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.
-
Connect to a server. Open Bridge, select Start, and enable Allow agent access for the session.
-
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>"
-
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.
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 | shDaemon 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 controllersThe 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.
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.
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.
| 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 |
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.
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.
Faro is free and open source. Support development through GitHub Sponsors or Buy Me a Coffee, or star the repository.
Cryptocurrency donations
- 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.
Join Faro on Discord for setup help, feedback, and discussion. Report bugs and request features in GitHub issues.
MIT. Created by Juan Denis.
















