The brief for IT & InfoSec reviewers

A user at your organization wants to run Simpler Redact. This page answers the standard software-review questions, and every claim on it is independently verifiable — that's the point of the design.

Read this first: v0.1.0 is released, for Windows x64, and it is not code-signed — the certificate is a company-registry timing problem rather than a software one, and the decision was to ship with a published checksum rather than hold the release. SmartScreen will show "Windows protected your PC" and name no publisher. Everything a review normally asks about a binary is answered below, including the one answer we would rather not give: the Microsoft Edge WebView2 runtime that draws the window calls home at launch and we cannot switch it off. The few forward-looking lines carry a v0.1 marker and are commitments, not descriptions.

What it is

A local desktop application (Windows x64 at v0.1; the command-line tool runs anywhere Node does) that redacts personal information from documents entirely on the user's machine, so the redacted copy — not the original — can be pasted into an AI service or shared externally. There is no server component and no account: it is open-source software (Apache-2.0, © Simpler Terminal Value Systems Pte Ltd). This page exists to give your existing software-review process everything it will ask for — not to argue you should skip that process. If your organization routes tools that touch regulated data (MNPI, NPI, PHI) through third-party or AI-governance review, that review still applies; this page attests to the software's behavior, not to your data-handling policy.

Network behavior — the whole story

Runtime network calls, from our codeZero. Document processing, review, and export never touch any network. The UI's Content-Security-Policy forbids external hosts at the platform level, and the only socket the application opens is 127.0.0.1:49331, the local model server. Measured on the shipped installer rather than asserted from source: scripts/cold-gates.mjs installs the real artifact, launches it, and reads the operating system's connection table for the whole process tree — gate 11 fails the release if simpler-red.exe holds any endpoint outside loopback.
Runtime network calls, from the Edge WebView2 runtimeNot zero, and not ours to switch off. The window is drawn by Microsoft's Edge WebView2 runtime — the same component Teams, Outlook and most Windows desktop apps use — and its browser process opens a TLS connection to Microsoft within seconds of launch, before any document is opened. We found this with the gate above, on our own installer, and could not suppress it: it survives --disable-background-networking, --disable-component-update, --disable-sync, --no-pings, --disable-domain-reliability and a total resolver block (--host-resolver-rules="MAP * ~NOTFOUND"), which is every documented Chromium switch for the purpose, and it leaves no trace in the Windows resolver cache because Edge resolves it over its own DNS-over-HTTPS. Microsoft's tracker carries an open request for an off switch (WebView2Feedback #5224) and no answer. No document content can reach it. The redaction pipeline runs in the Rust process and never hands text to the webview's network stack; the CSP forbids the page itself from making any external request; and the connection exists before a file is loaded. If your policy is no egress at all, block msedgewebview2.exe outbound at the firewall — the application needs no network to do its job, which is the airplane test below, and that test is yours to run rather than ours to promise.
How the model arrivesYou fetch it; the software never does. The weights are obtained through your own controlled channel — Google's published Gemma release — and placed in the model folder. The application then hashes that file and refuses to start the engine on anything that does not match the pinned SHA-256 byte for byte (src-tauri/src/lib.rs; scripts/verify-model.mjs checks the same value offline). One exception, stated because it is the ordinary case at v0.1: if you run your own model server and leave it listening on the local port, the app uses that instead of starting its own — it did not choose those weights and cannot hash a file another process holds open, so it claims no verification, says so on screen, and records it on the receipt of every document redacted that way. In this configuration the application's own code makes no outbound network call in its entire lifetime, and there is nothing to allowlist for it; the WebView2 row above is the separate, honest exception.
A convenience we have not builtv0.1A first-run downloader that fetches those same weights from a project mirror is planned. It does not exist, the mirror is not stood up, and it will always be optional — the hash makes any mirror untrusted-by-design, so sideloading stays fully supported.
Telemetry / analytics / updatesNone from us. No crash reporting, no usage analytics, no update pings — verifiable in source today. Updates are manual, from the release page; there is no auto-update code path to disable. The Edge WebView2 runtime does start its own Crashpad handler, which writes to %LOCALAPPDATA%\red.simpler.app\EBWebView\Crashpad on your own machine; cold-gates.mjs gate 12 fails the release if a cold launch produces a new crash dump there.

Runtime behaviour on the endpoint

Data at restDocuments are read from and written to the user's chosen locations only. Nothing else is written to disk at all: run history is held in memory for the session and is gone when the process exits. There is no cache, no index, no temp spool of document text.
Model runtimeA llama.cpp server process bound to 127.0.0.1 only, supervised by the application and terminated with it. It is the single socket in the product, and it cannot leave the machine by construction.
PrivilegeNo elevation is required to run, and none is requested. The engine is ordinary user-space code — today you can satisfy yourself of that by reading it.

Deployment, signing and application control

Answered as far as an unsigned build allows. Managed deployment, AppLocker/WDAC publisher rules, SmartScreen reputation and MDM allowlisting all want a signed binary, and v0.1.0 does not have one: there is no certificate, no publisher identity, and no Team ID to write a rule against. A hash rule is what your tooling can use today, and the installer's SHA-256 is printed on the download page and shipped as SHA256SUMS.

v0.1 is Windows x64 only, and it will not be code-signed. bundle.targets is ["nsis"]; there is no macOS or Linux build to notarize, so there will be no Team ID or bundle identifier for v0.1, and an earlier version of this page implied otherwise. The certificate is a company-registry timing problem rather than a software one, and the decision was to ship without it rather than hold the release — so SmartScreen will show “Windows protected your PC” and name no publisher. What v0.1 does give your tooling: per-release SHA-256 checksums, a CycloneDX SBOM of every component in the installer, a changelog, and the full source. A checksum proves the file matches what we published; it does not prove who published it, and we are not going to dress it up as a signature. When a certificate is issued it applies to the build after this one, not retroactively to v0.1. Until then, the honest deployment answer for a regulated environment is that the source is public and auditable and the command-line tool runs today without an installer at all.

Verify it yourself — don't take this page's word

Audit artifacts your users get

Every run can export a redaction receipt: tool and engine versions, the pinned model and its SHA-256 (or an explicit statement that no model ran), counts found, masked and deliberately left visible, the reviewer's own decisions named, which detection passes completed, an independent verify-by-extraction result, a fragment check, and an attestation that the application's own process opened no connection outside loopback. It records what was checked and decided; whether that satisfies a given regulator, court, or file requirement is your professionals' judgment — the receipt gives them the facts to make it.

Plain-language regulatory framing (not legal advice)

Project facts

LicenseApache-2.0 (includes an express patent grant), full source available, © Simpler Terminal Value Systems Pte Ltd. No strong-copyleft (GPL / AGPL / SSPL) components. Five weak-copyleft MPL-2.0 dependencies are present and unmodified — cssparser, cssparser-macros, dtoa-short, selectors (all reached via the webview layer) and option-ext — disclosed because commercial scanners flag MPL and you should hear it from us first; MPL-2.0's obligations are per-file and attach on modification, and we modify none of them. The full inventory, with texts, ships as THIRD_PARTY_LICENSES.txt inside the installer and is generated per release by scripts/notices.mjs. Model weights remain under Google's Gemma terms (THIRD_PARTY_NOTICES.md).
Source & releasesgithub.com/Simpler-Systems/simpler-redact — full source and the complete benchmark today. v0.1Releases will carry binaries + checksums + changelog.
Security disclosuresVia GitHub private vulnerability reporting on the repository (Security tab → Report a vulnerability); see SECURITY.md.
Supply chainEach release ships SHA-256 checksums, a software bill of materials (SBOM), and a human-readable changelog — npm run release:checksums, npm run release:sbom (CycloneDX 1.5, built from the graph cargo resolves for the shipping target rather than from the lockfile, and recording its own exclusions) and CHANGELOG.md. All three are published beside the v0.1.0 binary. Also: pinned lockfiles in the repository and no auto-update code path anywhere in the app.
What it deliberately is notNo cloud service, no accounts, no browser extension, no Office/Outlook add-ins, no document storage. Scope is one job: local redaction with human review before export.