Spotlight never read your scans. Fouine does.

Fouine is a full-text search engine for macOS. It reads the folders you point

it at, extracts the text of every document, indexes it page by page, and

runs Apple's text recognition on the pages that carry no text layer: scanned

PDFs, comic pages, photographs pasted into a .docx. Everything happens on

your Mac. No document, no search, no usage data ever goes out on the network.

- Download the disk image. Fouine-1.0.1.dmg, from the releases page of this repository. The product page is basedpolymer.eu/fouine.

- Open the disk image and drag Fouine.appontoApplications. macOS files privacy permissions by path and signature, so an app that moves around asks for them again every time. Leave it in/Applications.

- Open Fouine. Nothing is indexed until you name a folder.

- Click "Add a folder…", or drop a folder into the window: a thesis, a library of PDFs, an archive drive.

- Accept the macOS prompt. If the folder sits under Documents, Desktop, Downloads, a removable volume or a network share, macOS asks for permission. This is the only moment it can appear, and a refusal leaves the folder indexing as if it were empty, with no error. See permissions.

- Search. Indexing starts, results arrive as they are found, and search answers while the index is still being built.

To keep the index current on its own, turn on "Keep the index up to date automatically" under the Index card: Fouine then watches your folders in the background, and reads scanned pages when the Mac is plugged in and idle. See the background agent.

Requirements: macOS 13 or later, Intel or Apple Silicon (universal binary).

Language: the app follows the system language and speaks English and French,

macOS permission prompts included; the fouine command and the agent's log are

in English, like git or brew.

PDF, EPUB, Word (including the old .doc), Excel, PowerPoint, ODF, RTF, Pages,

Numbers, Keynote, HTML and web archives, mail (EML, MBOX), plain text, Markdown,

CSV, LaTeX, subtitles, Jupyter notebooks, comic archives (CBZ, CBR), DjVu, and

source code. Old .doc, .xls and .ppt files are read for real: the type is

decided on the leading bytes, never on the extension. Images, audio and video

are read on request.

The full list, family by family, with what each one needs: formats. Pages with no text layer go to Apple's text recognition, and the result lives in Fouine's own database. None of your files is ever modified.

Typing mistakes and meaning are covered too. Fuzzy matching catches recognition

errors, and an optional local model searches by meaning: "catalyst selectivity"

finds a page about regioselectivity that shares none of its words. That model

is a 220 MB download, asked for by an explicit gesture (Settings ▸ Search by

meaning, or fouine model download), and full-text search never needs it. See

searching.

Fouine runs for 30 days with nothing held back: every format, every folder, scanned page recognition, search by meaning. No card, no account.

Then €39, once. Updates for life, 3 Macs per key, no subscription. The sale goes through Creem, which takes the payment and handles VAT; the key appears after payment and arrives by email.

When the trial ends, search, preview, export, the assistant server and the read-only command line keep working on the index you have. Only index updates stop: nothing you indexed is held hostage.

To enter a key: Fouine ▸ Enter a licence key… (Settings ▸ Licence), or

fouine license activate <key>. To free the Mac for another one: Deactivate

this Mac, or fouine license deactivate.

No document, no search, no usage data leaves your Mac. There is no account, no password, no server, no telemetry, no crash report sent anywhere.

Four outgoing connections exist, and only one of them does not wait for a gesture of yours: downloading the search-by-meaning model, checking for updates (off by default), activating or releasing a licence key, and a silent key check at launch, at most once every 30 days. None of them sends anything about your documents, and nothing goes out while Fouine indexes, reads or searches.

That last sentence is held by a continuous integration test rather than by a

promise: NetworkSilenceTests runs a local server while an indexing pass reads

deliberately booby-trapped fixtures, and asserts zero accepted connections.

What Fouine knows lives in one SQLite file, ~/Library/Application Support/Fouine/fouine.db. It holds the text extracted from your documents, so

it is as confidential as they are: back it up and encrypt it the same way.

Details, and how to check any of this yourself: privacy.

fouine does everything the app does, plus JSON export. It ships inside the app

and works on the same index. Install it from Fouine ▸ Install the command-line

tool…, which creates a symlink at /usr/local/bin/fouine.

fouine root add ~/Documents/Thesis --label Thesis # add a folder

fouine search '"ideal gas" -biology' # exact phrase, exclusion

fouine search 'catalysis' --hybrid --json # meaning, JSON outputEvery command and option: the command line.

Letting an assistant read your index. fouine mcp --stdio serves the index

to Claude Code, Claude Desktop, Cursor, Codex or Antigravity, read-only and with

no network: five tools to search, read a page, jump to nearby pages and see what

is indexed. It never writes, never indexes, and never hands over your original

files. fouine mcp install configures those five clients in one command; the

command line lives inside the app

(/Applications/Fouine.app/Contents/Helpers/fouine) until you install it from

Settings ▸ Advanced, and the welcome screen copies the whole request for your

assistant. For Claude Desktop there is also nothing to type, the

Fouine-<version>.mcpb file attached to each release installing with a

double-click. See the assistant server.

git clone https://github.com/basedpolymer/fouine.git

cd fouine

make release ARCHS=$(uname -m) # Fouine.app, ad-hoc signedXcode (Swift 5.10 or later) and nothing else. Three SwiftPM dependencies:

GRDB.swift (MIT),

swift-argument-parser

(Apache-2.0) and Sparkle (MIT).

Without a Developer ID certificate the signature is ad hoc, and the app runs only

on the machine that built it. See CONTRIBUTING.md.

Trickier cases are in docs/pitfalls.md.

Fouine is source-available under LICENSE (Fouine

Source-Available Licence 1.0, held by Mathis Demory), on the Aseprite model.

What you may do. Read all the code, compile it, modify it for your own use, propose a contribution. Install Fouine on the Macs you use, and keep backups.

What you may not do. Redistribute Fouine, as source, modified or not, or as a binary, including one you compiled yourself; rent it, lend it, or offer it as a service. The code is open to read. It is not free software in the FSF sense, and that is not an oversight: the app is sold under a perpetual licence.

Contributions. By proposing one you grant the holder the right to use and

redistribute it under any licence (article 4, and

CONTRIBUTING.md). There is no separate agreement to sign.

Third-party components. GRDB.swift (MIT), swift-argument-parser (Apache-2.0)

and Sparkle (MIT) ship with the app; the multilingual-e5-small model is MIT,

Microsoft. Their notices are in

THIRD_PARTY_LICENSES.md, and fouine licenses

prints them in a terminal. Which licence covers which part, the MCP server

included: LICENSING.md.

Reporting a vulnerability goes through SECURITY.md, not a

public issue. Release notes: CHANGELOG.md.

Everything else is indexed in docs/README.md: the app guide,

the background agent, search syntax, formats, the command line, the assistant

server, privacy, permissions, updates and installation, then the documents for

whoever reads the code.