Open source · MIT · Single binary

The self-hosted file manager
that embeds anywhere

One Go binary with a polished web UI, six storage drivers and a plugin API for the rest. Reachable as S3, SFTP, FTPS, NFS and WebDAV. Ships as a desktop app, a CLI, an embeddable component - and a built-in MCP server so AI agents can drive it natively.

$ docker run -p 5212:5212 -e FILEX_DEFAULT_STORAGE_DRIVER=local -e FILEX_DEFAULT_STORAGE_PATH=/srv/files -v filex-data:/data -v "$PWD:/srv/files" ghcr.io/brf-tech/filex:latest

Demo sign-in: [email protected] / demo - the files are yours to play with; the admin panel is read-only, and everything resets nightly.

Why filex

Not another directory listing

Most self-hosted file managers are either too small - a listing with an upload button - or part of a groupware suite you deploy for the file tab. filex aims at the gap.

Embeds in your product

The same UI ships as a Vue 3 component, a React adapter and a framework-agnostic <filex-explorer> web component. Confined API tokens keep each tenant locked to its own folder - enforced by the backend, not the widget. Presence avatars and live file updates arrive over WebSocket in embedded contexts too.

AI-agent native (MCP)

A built-in Model Context Protocol server at /api/ai/mcp, plus a token-scoped REST surface described in OpenAPI 3.1. Hand an agent a token confined to one folder: it works there with the explorer's own operations - list, read, write, copy, convert, share, the trash, versions, archives - and nothing outside it. Every integration keeps its own audit trail. And an AI assistant in the explorer, off until an administrator sets it up - Anthropic, OpenAI or a compatible server, or a local Ollama - works through the same tools as the person who asks, with Undo for a change and an approval card for what cannot be undone.

Six storage drivers, plus yours

Local disk, S3, SFTP, FTP, WebDAV and SMB/NAS - mount many at once, each as a top-level folder, and cut a folder from one into another for a real move. For anything else, a storage plugin is a separate program, in any language, that teaches filex a backend it has never heard of - installed from the admin panel, or from an app store that checked and signed it. And filex will tell you what they cost: it reads the daily usage report your provider already writes and prices it with a table you can edit, free allowances shown beside the billable lines.

Apps: things to do with a file

A second kind of plugin - a sandboxed WebAssembly module, an interface of its own that filex runs in a sandboxed frame, or both - adding actions to the file menu, screens and public pages for people with no account, installed through a review of every permission it asks for and granted exactly that. Apps say when their source has a newer version, nothing is installed until you have reviewed what it changes, and the previous version is one click away. Your people can browse a trusted store on filex's own App store screen and ask you for an app. An app you allow can edit a file together with other people through filex's relay, which never reads their changes, and open a file of an encrypted folder that your browser decrypts for it. Five ship alongside filex as public repositories: e-Signature - a document sent round for signature, a PAdES signature from your own authority, the finished file sealed by filex itself - Convert, the Office editor - Word, Excel and PowerPoint in ONLYOFFICE's editor, in the browser, with no Document Server, and on the server the office thumbnails and conversions a Document Server used to make - filextext - an end-to-end encrypted text workspace - and draw.io. Write your own in stock Go, against a test kit.

Your language, your colours

English and Turkish are built in; any other language is a language pack - a manifest of strings, no code and no release - which translates the explorer, the admin panel, the public pages and the text the server writes. Arabic, Hebrew, Persian and Urdu lay the whole interface out right to left. And it wears your colours, not ours: compose a theme on the Appearance screen and the sign-in page and every public link wear it too.

It finds things, and it keeps them

Search every mounted storage at once - by filename and by what is inside the file. Both are on by default, on an embedded index with nothing extra to run; add Tesseract and scanned pages join in. Behind that: trash with a retention window, version history, and optional ClamAV scanning of every file written - the built-in editor included, and files the storage sync finds on the backend rather than through filex - against a scanner on the box or a clamd container over the network.

Roles, sharing & sign-in

Everyone has one role - Administrator, User, Viewer or one you define as its own list of permissions, different in some folders if you like - with per-person exceptions, per-item grants with inheritance, and permissions installed apps add. Groups hold folder access and a role for everyone in them, and follow the groups a sign-in carries. The same answer holds in the browser, the agent API and every protocol, and an API key is held to its own verbs on each. Public links with a PIN, an expiry and a download cap; folder links stream as ZIP; file-request links take uploads into a folder without showing its contents. Folders can be end-to-end encrypted in the browser - an app you allow edits their files there, decrypted and encrypted again by the browser - and who may encrypt is the organisation's call: nobody, administrators, everyone whose role allows it, or anyone after an administrator's approval. Sign in with a local password, OIDC, LDAP / Active Directory, a proxy header or the Windows or Linux account of the machine filex runs on - set up on Admin → Identity providers, applied without a restart, with a Test now that really tests it. Wrong passwords are counted per account and per address, on the web form, WebDAV, FTPS and SFTP alike, and a lock doubles up to fifteen minutes.

Boringly deployable

One binary or one container. SQLite by default, PostgreSQL when you have a team. Multi-tenant mode - one switch in the admin panel - serves independent tenants from one install, each signed in to by its own address or its realm, and each able to run itself - its own OIDC or LDAP, its own domain and certificate. Compose stacks, a Helm chart, and Umbrel, CasaOS, Runtipi, Portainer and Unraid listings included.

Both directions

Whatever it connects to, it can be reached as

Point rclone, restic, aws s3, WinSCP, a scanner that only ever learned FTP or a media player that only ever learned NFS straight at filex. They land in the same tree.

Connects to

Storage drivers - mount many at once.

local diskS3 SFTPFTP WebDAVSMB / NAS plugin://yours

Is reachable as

Protocol servers - each one a switch.

S3SFTP FTPSNFSv3 WebDAVHTTPS

Same tree, same filex permissions, same trash, same quota, same search index, same audit trail as the web UI - a file uploaded over FTPS is thumbnailed and indexed exactly like one dropped in the browser. The POSIX bits and ACLs on the disk are not mapped to filex users. Each protocol has a credential you can revoke on its own.

Clients

Not just a browser tab

The same explorer, wherever you happen to be working.

Web

The app itself

Thumbnails that show the thing itself - a PDF's first page, an office document's first page, a video's first frame that is not black, a text file's own first lines, an SVG on every install, a phone's HEIC photo, what is inside an archive, and folders drawn with the files that came into them last - and viewers and editors for images, video, audio, PDF, Markdown, CSV, source code (Monaco), notebooks, draw.io and Mermaid diagrams and glTF/USDZ 3D models, with Office documents editable in the office editor app you install, alone or together and with no Document Server - a self-hosted ONLYOFFICE Document Server stays an option - in each person's own language. + New also creates them: Markdown, text, CSV and code straight away, and Word, Excel, PowerPoint or OpenDocument with the office editor app - the templates are compiled into the binary, so no LibreOffice is involved and a type this install could not then open is never offered. Light and dark, and any language: English and Turkish are built in, and a language pack adds more - Spanish, German and French ship as examples - right-to-left languages laid out right to left. On a phone it installs like an app, under your instance's name and logo, offered from the first visit, and with Web Push its notifications arrive with filex closed.

Desktop

Windows, Linux, macOS

The same explorer in its own window: several accounts side by side, folders kept in step with the server from the tray, drag-out to any folder on your disk - and on Windows and Linux the installed copy updates itself quietly. Not allowed to install anything? Every platform also has a build that just runs: a portable Windows .exe, an AppImage, a macOS .zip. The portable one keeps everything it has in one folder beside itself, so deleting that folder leaves nothing of yours on a machine that is not yours.

Sync

Folders, both ways

Keep a folder on your disk and a folder on the server in step - live: an edit on either side arrives in about a second, not on the next 30-second lap. Work offline and catch up on reconnect, with a bandwidth limit and a sync window when you want them, and a first run that holds back a big re-upload and asks first. Same engine in the desktop app and in filex sync, so a pair made in one is visible to the other.

CLI

filex mount

Attach a remote server over ordinary HTTPS: a folder on Linux, a drive letter on Windows. Nothing is downloaded but a bounded read cache, so one file opens out of a hundred thousand without pulling the rest.

Install the desktop app

Download from the Microsoft Store Get it from the Snap Store
Homebrew · macOS 13+ brew install brf-tech/filex/filex-app
winget · Windows 10/11 · in review winget install BRFTech.filex-app

Or download it

Windows 10/11
Installer .exe x64 arm64
Portable .exe x64 arm64
Linux
AppImage x64 arm64
Debian / Ubuntu .deb x64 arm64
Fedora / openSUSE .rpm x64 arm64
macOS 13+
Disk image .dmg Apple Silicon

x64 is almost every PC; arm64 is Windows on Arm (Snapdragon laptops) and Linux on Arm. On Ubuntu 23.10 and later the AppImage needs a one-time step before it opens (the app shows it if it is missing); the .deb needs none.

Release notes and every file, the snaps included, are on the latest release. The command line alone: brew install brf-tech/filex/filex, or on Windows winget install BRFTech.filex. To try what the next release brings, the desktop app of every night that passed its tests is on filex.sh/nightly and the Snap Store's edge channel - not supported, and not for the data you keep.

Quickstart

Up and running in a minute

Run it, open the admin UI, add a storage. That is the whole setup.

Docker

# serves the folder you are standing in
docker run -p 5212:5212 \
  -e FILEX_DEFAULT_STORAGE_DRIVER=local \
  -e FILEX_DEFAULT_STORAGE_PATH=/srv/files \
  -v filex-data:/data \
  -v "$PWD:/srv/files" \
  ghcr.io/brf-tech/filex:latest

# the first run prints the admin credentials
open http://localhost:5212/admin

Docker Compose

services:
  filex:
    image: ghcr.io/brf-tech/filex:latest
    ports: ["5212:5212"]
    volumes:
      - filex-data:/data
      - ./files:/srv/files
    environment:
      FILEX_PUBLIC_URL: https://files.example.com
      FILEX_DEFAULT_STORAGE_DRIVER: local
      FILEX_DEFAULT_STORAGE_PATH: /srv/files
volumes: { filex-data: }

Embed the component

<!-- one script tag, any framework -->
<script type="module" src="https://cdn.jsdelivr.net/npm/@brftech/filex/dist/filex.js"></script>

<filex-explorer api-base="https://files.example.com"></filex-explorer>

Connect an AI agent

claude mcp add filex --transport http \
  https://files.example.com/api/ai/mcp \
  --header "Authorization: Bearer <token>"

Reach it from anywhere else

# the server as a folder
filex mount ~/filex

# or point a tool that never heard of filex
rclone copy ./photos filex-s3:demo/Photos
Screenshots

A real UI, not an afterthought

Click any of them to see the whole thing.

Share links - PIN, expiry, download caps
Viewers for Markdown, code, Office, 3D
Admin - storages, users, queue, audit
Plugins - teach it a backend it never had
MIT licensed

Open source, all of it

Built and run in production at BRF Tech - powering multi-tenant platforms with per-project isolation.