What does Philter Router do that Philter doesn't?
Philter redacts a document against one policy you choose per request. Philter Router sits in front of one or more Philter engines and chooses that policy, and the engine, for you, from each file's attributes. It adds the routing, a folder-watcher, and a fail-closed default; Philter still performs the redaction.
How does it decide which policy to apply?
Each file is matched against an ordered list of routes. A route can match on content type (detected from the bytes with Apache Tika), filename extension, containing directory, and an optional local-LLM classification, and it can require a language. The first route that matches wins; a file that matches nothing falls to a mandatory default policy.
Do I have to run the LLM classifier?
No. Classification is an optional routing tier. If your routes only need content type, extension, directory, and language, no LLM is involved. When you do enable it, it points at a local Ollama endpoint, runs at most once per file, and caches the result.
Can my existing Philter integration call it?
Yes. The HTTP API mirrors Philter's filter contract, so the Philter SDK and existing Philter clients work against it unchanged. The difference is that the policy is selected by the routes rather than passed in, though you can still override it per request with ?p=.
Does it store the files or the text it extracts?
The router forwards files to Philter and returns the result; it does not retain them. Text extracted for language detection and classification is used only for routing: it is never written as output and never logged.
What happens to a file that matches no route?
It falls to the mandatory default policy, which redacts. The router refuses to start without a default, so no file is routed around redaction. The same fallback applies when a file's language is not allowed or a classifier is unavailable.
Is Philter Router open source?
Yes. Philter Router is open source under the Apache License, version 2, and the code is on
GitHub.