Docfd

Back to Home

Introduction

User Guide | GitHub | Online Demo

Docfd is local document search tool with a Terminal User Interface (TUI) that allows you to fuzzy search for a phrase across multiple lines, across text files, PDFs, DOCX, etc.

Compared to other local document search tools, Docfd supports a more ad hoc search style. Users are not required to set up a managed central document repository or preconfigure which folders in their home directory should be included or excluded. Instead, Docfd processes unindexed files on demand when invoked, defaulting to scanning the current directory recursively. Because it does not periodically index files in the background, its CPU and memory use occurs when the user explicitly runs it, reducing the possibility of unexpected resource usage disrupting other desktop applications.

Read about the design constraints and alternatives considered.

Demonstrations

Searching Through Text Files

Docfd interactive demonstration

Searching Through PDF

Docfd interactive demonstration with PDF

Non-interactive Use

Docfd also provides a non-interactive mode for scripting uses:

Docfd non-interactive demonstration

But since this is not the primary use case, and some gaps remain, e.g. structured JSON output of search results.

Getting Started

See here to get started.

Engineering

Figure: Workflow Overview

See here for engineering details.

Versioning and Releasing

Docfd follows Semantic Versioning (SemVer), with the occassional suffices such as -alpha.X when the some design decisions are still in flux and committing to SemVer fully would have lead to many version bumps.

Releases for tagged versions are built through GitHub CI/CD pipeline, which was chosen for convenience and for macOS build support. Prior to adding macOS builds pipeline, Docfd was more or less following the reproducible build principle with version locking via opam lockfile (opam is the go-to package manager for most OCaml users). But since opam lockfile is not yet crossplatform (as of 2026 Sep 3), the use of lockfile was dropped.

In principle there are ways around, e.g. run the project dependency tracking file through a script to lock down the concrete versions, but this was not explored further as this is fairly low priority for a non-safety-critical project such as Docfd.