Redact sensitive text before sharing with AI, then restore it when you're done.
Note: Redactly is a tool for masking text before sharing. It is not a security product and makes no guarantees about data protection. Use your own judgement when handling sensitive information.
- Keyword-first matching - Define custom keywords that always get redacted, with priority over auto-detect patterns
- Auto-detect patterns - Automatically catches emails, IP addresses, hostnames, file paths, and usernames
- Fuzzy matching - Finds keyword variants and near-matches so sensitive terms don't slip through
- One-click restore - Reverse redacted tokens back to the original text using stored mappings
- Session persistence - Mappings are saved to a
.redact-map.jsonfile so you can restore across sessions
- Add keywords - Enter names, project codes, or any terms you want redacted
- Paste your text - Drop in the content you plan to share (logs, documents, chat messages)
- Copy & share - Redactly replaces sensitive values with consistent tokens like
[KEYWORD-1]or[EMAIL-1] - Restore later - Paste the redacted text back in to reverse all tokens to their original values
Grab the latest .dmg from Releases, mount it, and drag Redactly to your Applications folder.
Requires Rust, Node.js (v18+), and the Tauri v2 prerequisites.
git clone https://github.com/cowboyvang/redactly.git
cd redactly
npm install
npm run tauri buildThe built .dmg will be in src-tauri/target/release/bundle/dmg/.
Development
npm run tauri dev # Start dev server + Tauri window
npm run tauri build # Production build (.dmg/.app)
cd src-tauri && cargo test # Run Rust tests
npx tsc --noEmit # Type-check frontendRust handles all redaction logic. React is a thin display layer that calls into the backend via Tauri's invoke() bridge.
src/ # React frontend (React 19, TypeScript, Tailwind CSS v4)
components/ # Sidebar, RedactPanel, RestorePanel, MappingTable
hooks/ # useRedact, useKeywords
src-tauri/src/ # Rust backend
engine/ # Core redaction engine
pipeline.rs # Orchestrates keyword → pattern → token → restore
keyword.rs # Exact, case-insensitive, variant, and fuzzy matching
pattern.rs # Regex-based detection (email, IP, hostname, path, username)
types.rs # Shared types (Detection, RedactionMapping)
session/ # Session management and .redact-map.json persistence
keywords/ # Keyword store (keywords.json)
commands.rs # Tauri command handlers
| Layer | Technology |
|---|---|
| Backend | Rust, Tauri v2, regex, strsim, serde, chrono |
| Frontend | React 19, TypeScript, Vite, Tailwind CSS v4 |
| UI | shadcn/ui components, Nord-inspired dark theme |
Contributions are welcome. Please open an issue to discuss larger changes before submitting a PR.
- Tauri - Desktop app framework
- Nord - Color palette inspiration
- shadcn/ui - Component design patterns
- Radix UI - Headless component primitives
- Lucide - Icon library
- Geist - UI typeface by Vercel
- JetBrains Mono - Monospace typeface
- Tailwind CSS - Utility-first CSS
- Vite - Frontend build tool



