Hold j.
See every file.

okfs is one small binary that serves a folder to your browser. Run it, then flip through everything inside: columns, instant previews, and a search over 300,000 files that keeps up as you type.

$nix run github:jrnxf/okfs
GitHub
localhost:8080/
● wasm
Starting okfs
0entries walked and indexed
-to read the whole tree
⌘Klast search, in the engine
-okfs's index, as WebAssembly
Try one, or click in and use the keys
Speed

Search 300,000 files while you type.

This box talks straight to okfs's index, the same Rust code that runs in the binary, compiled to WebAssembly. Each letter you add searches only what the last one matched.

  • 302,491names in the demo folder, walked by okfs's own code when this page opened. node_modules and what .gitignore names are left out, as on your disk.
  • ~20 msfor a search here, on one thread of your browser. On your machine okfs searches on every core.
  • 0requests to any server. Close the network and keep typing.
  • Type a few letters of any name, or pick one on the left.
0 matchesranked by okfs's matcher, best first
Keyboard first

Every file shows as the cursor passes.

Hold j and okfs flips through a folder: each picture, page and table draws as you pass it. Pages, PDFs and players wait until you let go, unless okfs loaded them ahead.

jkDown, up
hlOut, in
⏎Full width
/Filter
⌘KFind
sSort
rSource
.Hidden
localhost:8080/photos/library/
Previews

Pictures, film, sound, pages and code.

A file shows as soon as the cursor is on it, in the same pane. Markdown, SVG and JSON open as their source, colored and never run; r flips them to what they make. HTML is sandboxed in an origin of its own.

localhost:8080/
Themes

One CSS file per theme.

Five built in, light and dark, switchable from the palette. A theme sets 42 tokens and nothing else, and okfs theme check holds it to the contract: contrast included.

localhost:8080/field-notes.md
One binary

Nothing to install beside it.

The page is compiled into okfs, so nothing is fetched from another site while it runs. It is read only until you say otherwise, and it follows the folder: a file that changes on disk shows at once, with no reload.

~ - okfs
~ $ okfs ~/tidewater
okfs 0.1.0
  serving  ~/tidewater (read only)
  at       http://127.0.0.1:8080/
  theme    default
  indexed 302,491 entries
--bind 0.0.0.0 --qrLet a phone on the network in, with a QR code to scan.
--allow-deleteOff by default. Read only otherwise: no upload, no editing.
--rescan 6hFor a tree too big to watch, or a network share.
--index index.htmlA folder with that file opens as its page: a small site.

It follows the folder.

A file that is added, removed, renamed or rewritten shows at once, and so does an open preview, with no reload. Try it: this writes a note into the folder okfs serves below.

localhost:8080/notes/
How this page works

The real thing, in your tab.

There is no server behind this page. Here is exactly what is okfs, and what is drawn for the demo.

Real okfs

  • The page: okfs's own interface from its source, as it ships in the binary
  • The index: src/index.rs compiled to WebAssembly. It walks the folder, leaves out node_modules and what .gitignore and .okfsignore name, and answers every search, every recent list and every count
  • The listings: okfs's code for a folder's entries, with its sorting and hidden files

Recorded, or made for the demo

  • Previews of text: the Markdown, code, tables and JSON as a real okfs drew them, for the tidewater files and one file of each kind that the others borrow
  • The demo folder itself is made up: this page builds it, and draws its pictures and its bell, in your browser from a seed

Only on your machine

  • Your own files, with their own contents: here many names share one film, one PDF and one sound
  • Thumbnails, the first page of a PDF as a picture, zips of folders, and deleting
  • Search on every core: here it runs on one thread
Install

Run it in a folder.

With nix, run it without installing anything. On x86-64 Linux, each release has the binary on its own. From a checkout, cargo builds it.

nix run github:jrnxf/okfs -- ~/photos
nix profile install github:jrnxf/okfs
gh release download --repo jrnxf/okfs --pattern 'okfs-x86_64-unknown-linux-gnu*'
cargo install --path . # in a checkout, with bun on the PATH
Linux and macOSOne binary, the page insideRead only by defaultMIT licensed