Skip to content

overview

Douwe de Vries edited this page Jul 1, 2026 · 2 revisions

CSV Anonymizer

CSV Anonymizer is a local-first desktop app for reducing sensitive CSV and pasted-data exposure before a file or sample leaves a machine. The product combines a React/Vite frontend, a Tauri command shell, and a Rust anonymization core, with optional Smart replacement through a local Ollama runtime.

What it does

The app detects likely personal or sensitive fields, lets the user review selected columns, previews replacements, and writes protected output while preserving the input shape where possible. The main product modes are wired in frontend/src/App.tsx:

  • CSV file for streaming CSV transformation from disk.
  • Paste sample for CSV, JSON, XML, YAML, plain text, and log snippets up to the configured paste limit.
  • Quick by data type for generating protected sample values without first providing source data.

The Rust service in crates/csv-anonymizer-core/src/service.rs owns CSV analysis, preview, preflight checks, and full-file anonymization. Direct pasted and quick workflows live under crates/csv-anonymizer-core/src/direct_input/. Tauri commands in src-tauri/src/commands/csv.rs expose those operations to the frontend through wrappers in frontend/src/tauri.ts.

Quick links

Topic Start here
Repository overview video Watch the MP4
High-level architecture Architecture
Local setup and checks Getting started
Terms used by the app Glossary
CSV transformation flow CSV file workflow
Smart replacement Local AI Smart replacement
Tauri command boundary Tauri commands
Release and packaging Deployment

Repository shape

Path Purpose
frontend/src React UI, hooks, Tauri invoke wrappers, shared types, and styles
src-tauri/src Tauri desktop shell, command handlers, settings, file grants, background jobs, and Ollama integration
crates/csv-anonymizer-core/src Detection, CSV IO, transformation strategies, privacy reports, direct-input workflows, and public DTOs
crates/csv-anonymizer-app/src Lightweight CLI and smoke-test harness for the Rust core
scripts Release, packaging, metadata, contract, audit, and smoke-test tooling
.github/workflows CI, release, and scheduled dead-code/dependency scanning
docs Design notes, release notes, migration status, and quality assessments

Privacy boundary

The default detector and transformer run locally in Rust. Smart replacement is optional and sends selected values to the loopback Ollama endpoint configured in src-tauri/src/local_ai/mod.rs, not to a hosted API. The output is transformed source data, not a formal anonymity guarantee, so the preview and privacy report are part of the release decision rather than decoration.

Clone this wiki locally