Skip to content

CowboyVang/redactly

Repository files navigation

Redactly

Redact sensitive text before sharing with AI, then restore it when you're done.

macOS MIT License Built with Tauri

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.


Redactly app showing redact panel with sample text

Light mode

Redactly in light mode

Features

  • 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.json file so you can restore across sessions

Detection types: keywords, email, IP, hostname, path, username, MAC, phone

How It Works

How it works: Add Keywords, Paste Text, Redact & Copy, Restore Later

  1. Add keywords - Enter names, project codes, or any terms you want redacted
  2. Paste your text - Drop in the content you plan to share (logs, documents, chat messages)
  3. Copy & share - Redactly replaces sensitive values with consistent tokens like [KEYWORD-1] or [EMAIL-1]
  4. Restore later - Paste the redacted text back in to reverse all tokens to their original values

Installation

Download

Grab the latest .dmg from Releases, mount it, and drag Redactly to your Applications folder.

Build from Source

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 build

The built .dmg will be in src-tauri/target/release/bundle/dmg/.

Development

Dev Commands

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 frontend

Architecture

Rust 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

Tech Stack

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

Contributing

Contributions are welcome. Please open an issue to discuss larger changes before submitting a PR.

Acknowledgements

License

MIT

About

Redact sensitive text before sharing with AI - then restore it when you're done

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors