in this tab
Fig. 1. okfs, running on the screen above. It is the real program, compiled for this page; click into it and press j, or Ctrl K to search.
A file browser for any folder you can reach.
Run okfs in a folder and your browser opens on it. The list sits on the left. The file under the cursor shows beside it as soon as the cursor lands, so holding j flips through a folder of photos, PDFs or video.
- Runs onLinux, macOS
- Ships asone binary, about 18 MB
- Serves at127.0.0.1:8080
- Writes filesonly when turned on
Measured here
Measured in your browser, a moment ago.
When this page opened it unpacked okfs's index, compiled it and read a folder of about 300,000 names. These are its own timings.
| Index engine, WebAssembly | - |
| Unpacked | - |
| Compiled | - |
| Entries in the folder | - |
| Read all of them | - |
Each search ranks every name in the folder. The times are this tab's, with okfs compiled to WebAssembly.
Finishes
Available in eleven finishes, light and dark.
Each theme is one CSS file. Pick one with --theme, or write your own.
Plate: the tokyo-night finish.
What okfs does
- 01Previews
- Pictures, video, sound, PDFs, Markdown, code, CSV, JSON, zip files and web pages, each shown as itself.
- 02Search
Ctrl Kfinds any name in the tree. The query lives in the address, so a shared link keeps it.- 03Columns
- A folder under the cursor shows what is in it, and the columns slide as you go in and out.
- 04Live
- A file added, removed or rewritten shows at once, without a reload.
- 05Your phone
okfs --bind 0.0.0.0 --qrprints a QR code for another device on the network.- 06Self-contained
- The page is compiled into the binary. Nothing is fetched from another site.
How okfs compares
okfs is for looking at a folder. It is read only unless writes are turned on, and it has no accounts, on purpose: for uploads of very large files that resume, use copyparty; for a file manager with users, File Browser Quantum.
| okfs | python -m http.server | miniserve | dufs | copyparty | |
|---|---|---|---|---|---|
| Default address | loopback only | all interfaces | all interfaces | all interfaces | all interfaces |
| Beyond loopback | secret link | none | basic auth, optional | basic or digest auth, optional | accounts |
| Writes | none unless turned on: upload, edit and delete, each behind a flag | none | upload, optional | upload, edit, move and delete, each optional | upload, per account |
| Previews | images, video, audio, PDF, Markdown, code, CSV, JSON, zip, HTML | none | none | none | thumbnails, audio spectrograms |
| Search of the whole tree | instant, in memory | none | none | yes | yes, indexed |
| Live updates | yes | none | none | none | not checked |
| TLS | yes, optional | since Python 3.14 | yes | yes | yes |
no tool is ahead of okfsthis tool is ahead of okfs
This is how each tool read on 2026-10-21, from its documentation. Check the project you are comparing before you rely on a cell.
Questions
How do I browse a folder in my browser?
Run okfs in it. It serves the folder at http://127.0.0.1:8080 and opens your browser on it.
Is okfs an alternative to python -m http.server or miniserve?
Yes, for looking at files. It adds previews, a search of the whole tree and live updates, and stays read only unless you turn writes on.
How do I open files from my computer on my phone?
okfs --bind 0.0.0.0 --qr prints a QR code with a secret link. Scan it on a phone on the same network.
Can visitors upload, edit or delete files?
Only when you turn it on. --allow-upload adds files and folders and never replaces one, --allow-edit changes text files in place, and --allow-delete deletes. Each is off by default.
Does okfs need Docker, a database or an account?
No. It is one binary with the page inside it.
Does it run on Windows?
Not yet. It runs on Linux and macOS.
Install
Clip and paste into a terminal.
No postage. Tick one.
brew install jrnxf/tap/okfsokfs ~/photosOn a Mac or Linux. brew upgrade okfs updates it.
nix run github:jrnxf/okfs -- ~/photosnix profile install github:jrnxf/okfsThe first line runs it once in ~/photos. The second puts it on your PATH; nix profile upgrade okfs updates it.
tag=$(gh release list --repo jrnxf/okfs --limit 1 --json tagName --jq '.[0].tagName')gh release download "$tag" --repo jrnxf/okfs --pattern '*-aarch64-apple-darwin.tar.gz*'tar -xzf okfs-*-aarch64-apple-darwin.tar.gzThat is a Mac with Apple silicon; the binary is okfs in the folder the archive makes. For an Intel Mac ask for x86_64-apple-darwin, for Linux x86_64- or aarch64-unknown-linux-musl. Each archive holds completions and a man page. The first release, v0.1.0-pre.1, is on its way.
cargo install --git https://github.com/jrnxf/okfsokfs ~/photosIt needs a Rust toolchain and bun, which builds the page.