ReboFilesDocs
Start3
What is ReboFiles
Getting started
Demos to run
Put it in your app6
React component
Headless: your own UI
Without a framework
Styling and themes
Keyboard and accessibility
Languages
Files9
Uploads
Previews and the viewer
Search
Live changes and large folders
Comments
Starred and fields
Versions, trash and space
Download as .zip
Word documents
The server14
The route
Frameworks and sign-in
Who may do what
Storage: S3, GCS, Azure and disk
Checking uploads
Metadata: SQLite and Postgres
Database schema
Sharing and links
Activity and notifications
Hooks, logs and limits
Retention, holds and export
Desktop and other origins
Sync a folder
Going to production
Together1
AI assistants (MCP)
Reference5
Packages
Components and hooks
Client API
HTTP routes
Status and roadmap
↑↓ to move↵ to openEsc to close38 pages

Start Demos to run

Demos to run

Each is a folder of apps/, started from the root of the repository. None needs an account but the one of a real bucket.
npm run dev

The playground

The drive on this computer: the bytes in storage/files, the entries in SQLite, the server in the same process as the page.

  • http://localhost:5180 is the drive in React; /vanilla.html without a framework; /headless.html built from the hooks alone.
  • ?as=bea is someone else, to share with; ?lang=es, ?lang=zh and ?theme=dark as they say.
  • The tools for an assistant at /api/mcp: claude mcp add --transport http rebofiles http://localhost:5180/api/mcp.
  • A Word document opens in Rebodocs’ editor, and ⌘S saves it back as its next version.
npm run demo

The demo

The drive of the landing, kept in the page: Acme’s files made in it, and Claude renaming one through the MCP tools, answered in the page.

It is built on createMemoryClient, so it needs no server, and the browser tests go through it.

npm run storage

A real bucket

The drive against Cloudflare R2, AWS S3, MinIO or Backblaze, the entries in SQLite on this computer.

Copy apps/storage/.env.example to .env, fill it in, give the bucket the rule of origins in apps/storage/cors.json, then npm run storage:check goes the whole way a file goes from Node before the page tries it. Storage says how. Everything is on there: ?as=bea to share with Bea (in group:teamwith Carl), links with a password, comments, a PDF’s first page made by the server, files checked, the assistant at /api/mcp.

npm run documents

Documents

Word documents from start to end, all with Rebodocs: New document, its editor with several people in one document at once, its viewer, and PDF. At http://localhost:5184.

Open a document as ?as=ana and, shared with her, as ?as=bea: each sees the other’s caret and what they write, and a version is kept when both have left. Besides, everything else of the drive is on: Compare in the history, copies, requests for files (?link=), what the server makes of each file (video with ffmpeg, OCR), and a webhook the demo takes at /api/hooks. In apps/documents, the rooms over the drive are server/collab.ts.

npm run desktop

The desktop

The drive in a window of its own, with Tauri, against the playground or any server.

Rust and Xcode’s command-line tools on a Mac. npm run build:desktop makes ReboFiles.app; Server → Sync a Folder… keeps a folder of the computer as the drive (Sync a folder). Desktop and other origins says what the server needs.

npm run site

This site

The landing, with the demo in it, and these pages: Next.js and Tailwind, built as plain files, in English, Spanish and Mandarin. /demo/ has the drive three ways, a tab each: <FileDrive> as it comes, its compact layout, and an interface of a creative suite’s look built on the headless hooks alone.