{"id":51482626,"url":"https://github.com/philterd/philterdesktop","last_synced_at":"2026-07-07T03:01:31.563Z","repository":{"id":366924268,"uuid":"1170953811","full_name":"philterd/PhilterDesktop","owner":"philterd","description":"Philter app for Windows","archived":false,"fork":false,"pushed_at":"2026-07-01T21:38:28.000Z","size":2909,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-07-01T23:25:02.176Z","etag":null,"topics":["anonymization","anonymize","deidentify","docx","pdf","phi","pii","redact","redaction","text","windows"],"latest_commit_sha":null,"homepage":"https://www.philterd.ai","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/philterd.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-02T17:58:11.000Z","updated_at":"2026-07-01T21:38:15.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/philterd/PhilterDesktop","commit_stats":null,"previous_names":["philterd/philterdesktop"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/philterd/PhilterDesktop","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/philterd%2FPhilterDesktop","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/philterd%2FPhilterDesktop/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/philterd%2FPhilterDesktop/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/philterd%2FPhilterDesktop/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/philterd","download_url":"https://codeload.github.com/philterd/PhilterDesktop/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/philterd%2FPhilterDesktop/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35212581,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-07T02:00:07.222Z","response_time":90,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["anonymization","anonymize","deidentify","docx","pdf","phi","pii","redact","redaction","text","windows"],"created_at":"2026-07-07T03:01:28.722Z","updated_at":"2026-07-07T03:01:31.491Z","avatar_url":"https://github.com/philterd.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Philter Desktop\n\nA Windows desktop application for redacting personally identifiable information (PII) from\nplain text (`.txt`), Microsoft Word (`.docx`), and PDF (`.pdf`) documents.\n\n![build-and-test](https://github.com/philterd/PhilterDesktop/actions/workflows/ci.yml/badge.svg)\n\n![Philter Desktop main window](images/main-form.png)\n\n## Get Philter Desktop\n\nPhilter Desktop is a **commercial product** from Philterd. The **official, signed build — with\nsupport — is a per-user subscription** (currently **$100 per user, per year**), provided to\nsubscribers from **[philterd.ai](https://www.philterd.ai)** (it installs cleanly, with no Windows\nSmartScreen warning).\n\nIts **source code is free and open source** under the Apache License 2.0 — you (or your IT\ndepartment) can inspect exactly what it does, confirm it works entirely on your own machine and never\nsends your documents anywhere, and [build and run your own copy](#building-from-source) under that\nlicense. **This repository hosts the source code, not ready-made installers** — the official build is\nprovided to subscribers from Philterd.\n\n\u003e *Philter* is a trademark of Philterd, LLC; Philterd's official builds are distributed under the\n\u003e Philter brand.\n\n## Building from source\n\n### Prerequisites\n\n- .NET 10.0 SDK or later\n- Windows 10/11\n- Visual Studio 2022 (17.12 or later) — optional; the CLI is sufficient\n\nThe redaction engine ([Phileas](https://github.com/philterd/phileas-net)) is consumed as the\n`Philterd.Phileas` NuGet package, so no separate clone or build is required.\n\n### Building\n\n```bash\ngit clone https://github.com/philterd/PhilterDesktop\ncd PhilterDesktop\ndotnet build PhilterDesktop.slnx\n```\n\n`PhilterDesktop.slnx` contains two projects:\n\n- **PhilterDesktop** — the WinForms application (UI, data access, redaction, and the policy editor)\n- **PhilterDesktop.Tests** — the xUnit test suite\n\nTo build the distributable **setup installer**, see [`Installer/README.md`](Installer/README.md).\n\n### Running\n\n- Press F5 in Visual Studio, or\n- Run from the command line:\n  ```bash\n  dotnet run --project PhilterDesktop/PhilterDesktop.csproj\n  ```\n\nWord (`.docx`) redaction uses the open-source [Open XML SDK](https://github.com/dotnet/Open-XML-SDK)\n— no license key or third-party component is required. All supported formats (`.txt`, `.docx`,\n`.pdf`) redact out of the box.\n\n## Features\n\n- **Redaction queue** — add `.txt`/`.docx`/`.pdf` files (button or drag-and-drop); they are\n  redacted in the background with live, color-coded status. PDF redaction is image-based (the\n  output has no recoverable text layer).\n- **Policy editor** — enable PII filters and configure their replacement strategies. Filters are\n  discovered automatically from the Phileas model and grouped by category (Personal, Contact,\n  Location, Financial, Identifiers, Technical, Medical, …), with a search box and an\n  enabled-count indicator.\n- **On-device name detection** — an optional **AI Detection → Names** filter uses a bundled\n  [PhEye](https://github.com/philterd/phileas-net) GLiNER model to find person names contextually,\n  running entirely on the machine with no network call. The model is downloaded at build time and\n  shipped inside the installer (see [Bundled models](PhilterDesktop/Models/README.md)).\n- **Highlight redactions** — optionally highlight the replacement text in redacted Word (`.docx`)\n  documents for clearer visual review (a per-document option on the Redact Documents form).\n- **Watched folders** — monitor folders for new `.txt`/`.docx`/`.pdf` files and redact them\n  automatically to an output folder, each with its own policy, context, and highlight option\n  (configured on the **Watched Folder** tab of Settings). Philter Desktop runs in the **system\n  tray** (closing the window keeps it watching) and can **start at sign-in**.\n- **Contexts** — manage redaction contexts for consistent replacement.\n- **View Diff** — right-click a completed document → **View Diff…** to compare the original and the\n  redacted output: a color-coded line diff for `.txt`, or a side-by-side page view for `.pdf`.\n- **Passphrase protection** — optionally require a passphrase to open the encrypted database\n  (**Settings → Security**); the key is re-wrapped, so toggling never re-encrypts the database.\n- **Command-line redaction** — redact files headlessly for scripting/automation:\n  `PhilterDesktop.exe /p mypolicy /c mycontext file1.pdf file2.pdf` (policy/context optional,\n  defaulting to the default policy/context). Works even while the app is running.\n- **Explorer right-click menu** — an optional **\"Redact with Philter Desktop\"** context-menu entry\n  for `.pdf`/`.docx`/`.txt` files (toggled in Settings). Right-clicking files opens a dialog to pick\n  the policy/context and adds them to the redaction queue; a multi-file selection opens one dialog.\n- **Settings** — output location, logging, and the redaction policy defaults.\n\nEach filter supports multiple replacement strategies:\n\n- **Redaction** — replace with a format string (e.g., `{{{REDACTED-%t}}}`)\n- **Static replacement** — replace with fixed text\n- **Random replacement** — replace with a randomly generated value\n- **Conditional filtering** — apply a strategy only when a condition is met\n- **Scope control** — document-level or context-level replacement\n\n## Testing\n\n```bash\ndotnet test PhilterDesktop.Tests/PhilterDesktop.Tests.csproj\n```\n\nThe suite covers the data layer (LiteDB repositories), the redaction service, Word redaction\n(via the Open XML SDK — no license needed, so these always run), the editor↔engine policy\ncontract, and form construction smoke tests. On-device name-detection tests are skipped when the\nPhEye model is not bundled.\nThe same build-and-test flow runs in CI on every push and pull request\n(`.github/workflows/ci.yml`).\n\n### Testing before release\n\nBefore publishing a release, run the manual checklist in [`RELEASE_TESTING.md`](RELEASE_TESTING.md): it\ncovers installing on a clean Windows machine and smoke-testing the app. Most of the functional\nverification is automated by the built-in self-test — run it against the installed (or built) binary:\n\n```\nPhilterDesktop.exe --selftest\n```\n\nIt redacts a small built-in corpus (generated at runtime — nothing is bundled) across every supported\ntext-based format and verifies each output is free of residual PII, printing `Result: PASS (n/n)` and\nexiting `0` on success. PDF is not covered by the self-test and is checked manually per the checklist.\n\n`PhilterDesktop.exe --smoketest` is a separate release check that confirms the bundled license agreement\n(`philterd-eula.txt`, refreshed by the installer build) still matches the live copy at\n`https://philterd.ai/philterd-eula.txt` (requires network); it exits `0` on a match.\n\n## License\n\nThe **source code** is open source under the **Apache License, Version 2.0** — you may inspect,\nmodify, and build it under that license. See [`LICENSE`](LICENSE) for the full text.\n\nThe **official Philter Desktop product** — the signed, maintained build and the support that comes\nwith it — is a paid **per-user subscription** from Philterd, provided to subscribers under the\nPhilterd Commercial License Agreement (see [Get Philter Desktop](#get-philter-desktop) and\n[philterd.ai](https://www.philterd.ai)). That agreement covers the official product and does not limit\nyour rights in the open-source code under the Apache license. ***Philter*** is a trademark of\nPhilterd, LLC; the Apache license does not grant permission to use that mark for redistributed builds.\n\nCopyright 2026 Philterd, LLC.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphilterd%2Fphilterdesktop","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fphilterd%2Fphilterdesktop","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphilterd%2Fphilterdesktop/lists"}