okfsA whole folder in a browser tab, from one small binary. Below is okfs itself.
nix run github:jrnxf/okfs

okfs, a web file browser in one small binary, running in this page

OKFS/0 entrieswalked in -search -
02 Keys

Hold j and watch each file go by.

A file shows as soon as the cursor is on it. Pictures, text and tables draw as the cursor passes. A page, a PDF or a player waits until you let go, unless okfs loaded it ahead.

  • jkdown, up
  • hlout, in
  • ⏎full width
  • /filter
  • ⌘Kfind
  • ssort
  • rsource
  • .hidden
OKFS/photos/library/2025/
03 Previews

Pictures, film, sound, pages and code.

Each one shows in the same pane as the list. Markdown opens rendered and an HTML page runs sandboxed, in an origin of its own. SVG and JSON open as their source, colored and never run, and r flips any of them between the two.

OKFS/photos/05-headland.jpg
04 Themes

A theme is one CSS file.

Eleven come built in, each light and dark, and the palette switches between them. A theme sets 42 tokens and nothing else. okfs theme check holds a file to that contract, contrast included.

    OKFS/
    05 Binary

    The page is inside the binary.

    Nothing is fetched from another site while okfs runs. It is read only unless you turn writes on, and it follows the folder: a file added, removed, renamed or rewritten on disk shows at once, with no reload.

    $ okfs ~/tidewater
    okfs 0.1.0
      serving  ~/tidewater (read only)
      at       http://127.0.0.1:8080/
      theme    default
    --bind 0.0.0.0 --qr
    Let other machines on the network in, and print a QR code for a phone.
    --allow-upload --allow-edit
    Off by default. Add files and folders by dropping them on the list, and edit text files in place. --allow-delete deletes.
    --rescan 6h
    Read the tree again on a timer, for a tree too big to watch or a network share.
    --index index.html
    A folder that holds that file opens as its page, so a folder can be a small site.
    This adds a file to the demo folder. The okfs below shows it without a reload.
    OKFS/notes/
    06 This page

    What is okfs here, and what is not.

    Nothing on this page talks to a server once it has loaded. This is what runs okfs's own code, and what was recorded or made for the demo.

    okfs's own code

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

    Recorded or made for the demo

    • Text previews: the Markdown, code, tables and JSON as a real okfs drew them.
    • The folder itself: this page builds it in your browser from a seed, and draws its pictures and its bell sound.

    Only on your machine

    • Your own files. Here many names share one film, one PDF and one sound.
    • Thumbnails, a picture of a PDF's first page, folders as zips, and deleting.
    • Search on every core. Here it runs on one thread.
    07 Install

    Run it in a folder.

    On a Mac or Linux, Homebrew installs it. 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.

    brew install jrnxf/tap/okfs
    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 macOSRead only by defaultMIT licensed