GitHub 火線榜

GitHub 火線榜 · 倉庫檔案

mickael-kerjean/filestash

:file_folder: Universal File Management Platform (for humans and agents) (簡介來自倉庫自身文件。)

資料截至 October 27mickael-kerjean

最好成績

#279

總榜 · Go 语言

15K

累計 Star

1K

Fork 總數

0

近 30 天在榜天數

專案狀態授權條款: AGPL-3.0最近 push: October 26Open Issues(含 PR): 127

自 2026-10-25 起採集;未知 = 尚未採集到

把上榜徽章放進你的 README · mickael-kerjean/filestash[![把上榜徽章放進你的 README](https://git.vaiox.xyz/api/badge/mickael-kerjean/filestash.svg)](https://git.vaiox.xyz/zh-TW/repo/mickael-kerjean/filestash)

Badge · 任何仓库都可以挂 —— 未上榜的仓库显示灰章,上完榜会自动点亮。

<a href="https://git.vaiox.xyz/zh-TW/repo/mickael-kerjean/filestash"><img src="https://git.vaiox.xyz/api/badge/mickael-kerjean/filestash.svg" alt="把上榜徽章放進你的 README" height="20"></a>

專案文件

screenshot

What is this?

Filestash began in 2017 as a Dropbox-like file manager that speaks every storage protocol: SFTP, S3, SMB, WebDAV, IPFS, FTP, NFS, and everything else (probably the oddest Babel fish in the Universe)

It grew into what we want to be the world's best file management platform. The world has enough silos to lock your data in. What is missing is the tooling to give those existing silos the Dropbox++ treatment with:

  1. Web client (the file manager available from your browser): documentation / screenshot / demo
  2. Native client for humans (the folder that syncs across your devices): repo / screenshots for mac, windows, linux, android
  3. Native client for agents (A shared folder that syncs for your agents): documentation / demo
  4. Gateways (to expose your data 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.

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: beware of the leopard");
            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

Standard installation procedurethe guide, plugin inventory
Engineering manualcreate your own plugins, rust plugins, runtime plugin cookbook, plugin collection
🐟 Mostly harmless ROT13 transmission interceptedSvaq gur Onory svfu

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 shoulders 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:

so long, and thanks for all the fish

當前上榜

  • 279

    總榜 · 史上最強 · Go

    15K 星 · 1K fork · 累計星星

    總榜 · Go →

近 30 天勢頭

近 30 天沒有上榜紀錄。

同類專案 · 共享主題

← 回到榜單

GitHub 火線榜往日榜發現联系我们 · Contact