Filestash is a free, open source storage solutions project written in Go and released under AGPL-3.0. It has 14,860 GitHub stars, 1,015 forks and 126 open issues, and was last pushed 5 days ago. On this registry it ranks #4 of 8 tracked projects in Storage Solutions, with 5 head-to-head comparisons available. It gained 112 stars over the last 30 tracked days.

What is Filestash?

What it is

Filestash is a Go, AGPL-3.0 licensed universal file storage client for enterprise storage. It lives in Infrastructure & Operations / Storage Solutions. It began as a storage agnostic Dropbox-like file manager that speaks FTP, SFTP, S3, SMB, WebDAV, IPFS, and about 20 more protocols. It has three products: a browser-based web client, native clients for macOS, Windows, Linux, Android, and iPhone, and gateways for exposing storage over protocols.

Organizations often store files across many protocols and services, making access, automation, and presentation fragmented. Filestash addresses that with one file manager and one plugin system for storage, authentication, search, thumbnailing, apps, middleware, and frontend behavior. The plugin philosophy keeps the core lean and lets unusual requirements be handled by plugins instead of forks.

Key capabilities

  • Connects to FTP, SFTP, S3, SMB, WebDAV, IPFS, and about 20 more protocols; topics also list Azure, Dropbox, NFS, Git, archiving, DMS, EDRMS, MFT, and GED.
  • Exposes data through APIs and gateways over SFTP, S3, FTP, WebDAV, MCP, and AS2.
  • Supports authentication and authorization plugins, including a virtual filesystem that can delegate authentication to WordPress and use its roles for RBAC authorization.
  • Provides a workflow engine that chains actions on file events, from Slack or email notifications to full MFT pipelines.
  • Supports file apps and features such as AI search, smart folders, OCRs, versioning, audit, public site, antivirus, quota, chat, Chromecast support, on-demand video transcoding, and mounting shared links as a network drive.

Who uses it and how

  • Teams needing one browser file manager over mixed protocols use the web client for FTP, SFTP, S3, SMB, WebDAV, IPFS, and other backends.
  • Device users needing synchronization use native clients for macOS, Windows, Linux, Android, and iPhone.
  • Integration teams use gateways and APIs to expose existing storage to clients expecting SFTP, S3, FTP, WebDAV, MCP, or AS2.
  • Operations teams use the workflow engine to automate file movements and notifications, including email or Slack alerts and MFT-style pipelines.

Getting started

The README excerpt does not name a Docker image, package manager, or hosted option. It lists deployment surfaces: web client, native clients for macOS, Windows, Linux, Android, and iPhone, and gateways.

When to use it — and when not to

Use it when an organization already has files in multiple protocols and needs one plugin-driven client, workflow layer, and gateway set rather than a single hosted storage service. The excerpt does not state that it replaces paid products, although it is described as Dropbox-like, so teams expecting a simple Dropbox replacement may need to evaluate the plugin and protocol surface. The supplied metadata lists 0 contributors and 0 years repo age, while open issues are 126, so it does not establish a clear maintenance picture.

project readme (upstream, from github) — read inline

screenshot

What is this?

Filestash started as a storage agnostic Dropbox-like file manager that speaks every storage protocol (FTP, SFTP, S3, SMB, WebDAV, IPFS, and about 20 more). It grew into what we want to be the world's best file management platform, centered around 3 separate products:

  1. Web client (the file manager available from your browser): documentation / screenshot / demo
  2. Native client (to sync your data on your device): repo / screenshots for mac, windows, linux, android & iphone
  3. Gateways (to expose your storages over any protocol): showcase

The philosophy that guides this project is: "anything that's not a fundamental truth of the universe lives in a plugin". That keeps the core lean and fast, and the opinions replaceable, so when your requirements get deep or weird, the answer is a plugin, not a fork. You only carry the bloat you really need.

storage + auth architecture

Key Features

  • Plugin Driven Architecture: everything that matters is a plugin, browse the ecosystem or build your own. With this approach, you get exactly what you need without overhead and bloat.
  • Universal Access: the web client is just one way to access your data (albeit an awesome one, handcrafted in vanilla JS). APIs and Gateways let you also expose your data over protocols like SFTP, S3, FTP, WebDAV, MCP, and AS2.
  • Integrations: our explicit goal is to support 100% of storage and authentication technologies on the market. Beyond your usual options, you can go much further, like a virtual filesystem delegating authentication to your WordPress site and using its roles to drive RBAC authorization.
  • Workflow Engine: automate anything that happens to your files by chaining actions on events, from simple notifications via Slack or email to full on MFT pipelines and everything in between.
  • File Apps: use any of the existing apps or build your own, from astronomy to embroidery and everything in between like:
  • Themes:
  • AI features for search, smart folders and OCRs.
  • ... and much much more (versioning, audit, public site, antivirus, quota, chat, chromecast support, on demand video transcoding, mounting shared links as network drive, ...) As a rule of thumb, if your problem involves files, we either already have a plugin for it or can make a plugin for it

Plugins

Malleability isn't an afterthought, it's the whole architecture:

anything that's not a fundamental truth of the universe lives in a plugin

Taken literally, the "truths of the universe" are a set of core interfaces, one for every key component of Filestash, and they're yours to implement (storage, authentication, authorisation, search, thumbnailing, apps, middleware, frontend changes, ...)

The oldest one is the storage interface, the one at work whenever you connect to a storage:

type IBackend interface {
	Ls(path string) ([]os.FileInfo, error)
	Stat(path string) (os.FileInfo, error)
	Cat(path string) (io.ReadCloser, error)
	Mkdir(path string) error
	Rm(path string) error
	Mv(from string, to string) error
	Save(path string, file io.Reader) error
	Touch(path string) error
}

Historically, plugins were made in Go and compiled in. Today there's a second path: runtime plugins, a zip you drop in the plugins folder. The zip can reshape the frontend and it can carry wasm implementing the very same core interfaces. That wasm runs in a VM with tight control on permissions: no declared network host, no way to phone home. Installing a plugin doesn't mean trusting it with everything.

For example:

use filestash::*;

#[derive(Default)]
pub struct Plugin;

impl Authorisation for Plugin {
    fn ls(&self, _ctx: &Context, path: &str) -> Decision {
        self.check(path)
    }
    fn cat(&self, _ctx: &Context, path: &str) -> Decision { ... }
    fn stat(&self, _ctx: &Context, path: &str) -> Decision { ... }
}

impl Plugin {
    fn check(&self, path: &str) -> Decision {
        if path.split("/").any(|segment| segment == "top_secret") {
            log::warn!("[TOPSECRET] access denied !!");
            return Decision::Deny;
        }
        Decision::Allow
    }
}

register!(Plugin: Authorisation);

These few lines give you a readonly view of your data where every folder named "top_secret" is off limits. For more examples, browse the plugin folder, the runtime plugin cookbook, and the plugin marketplace.

And to be clear, code is the power-user path, there are no code options

Getting Started

To install Filestash, head to the Getting started guide. If you want to leverage plugins, head over to the inventory, or learn about developing your own plugins.

Support

Why

Familiar with the infamous comment from Dropbox's launch on HN? In my memory it goes like this:

Credits

Filestash stands on the shoulder of: contributors, folks developing awesome libraries, BrandonM, a whole bunch of C stuff (the C standard library, libjpeg, libpng, libgif, libraw and many more), fontawesome, material, Browser stack to let us test on real devices, and the many guys from Nebraska and elsewhere who have been thanklessly maintaining the critical pieces that Filestash sits on top:

credit to the nebraska guy on xkcd

Frequently asked questions

Is Filestash free to use?

Filestash is open source under the AGPL-3.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does Filestash do?

Unified file management for your enterprise storage

What is Filestash written in?

Filestash is primarily written in Go. Its source is publicly available at https://github.com/mickael-kerjean/filestash, and it has 14,860 GitHub stars.