Skip to main content

Smart enough to say no.

Project description

38 copy

nothx

Python 3.11+ License: MIT Status: Beta Platform Privacy

nothx (no thanks) hunts down marketing emails, uses AI to sort the noise from the signal, and actually clicks unsubscribe for you. It runs on your machine, learns your preferences, and never touches your data.

Your inbox, uncrowded.


Quick Start

pipx install nothx
nothx init

That's it. The wizard handles everything else.

Don't have pipx? brew install pipx (macOS) or sudo apt install pipx (Linux).

Run nothx anytime for the interactive menu.


Why nothx?

The Problem How nothx fixes it
Unroll.me sells your data 100% local — your data never leaves home
Most tools just filter emails Actually clicks unsubscribe links
Manual unsubscribing is tedious AI classifies hundreds of senders in seconds
One-size-fits-all rules Learns your preferences over time
Yet another app to run Uses native OS scheduling (launchd/systemd)
What if AI gets it wrong? Undo anything — and it learns from the correction

Features

Core

  • AI-Powered — Claude, GPT, Gemini, or local models via Ollama
  • Actually Unsubscribes — RFC 8058 one-click, GET requests, or mailto
  • Privacy First — Never reads email bodies. Only headers. All data stays local.

Smart

  • Learns From You — Gets smarter every time you disagree with a decision
  • 5-Layer Classification — Rules → Patterns → AI → Heuristics → Manual review
  • Protected Categories — Banks, government, healthcare never auto-unsubscribed

Practical

  • Multi-Account — Scan Gmail + Outlook simultaneously
  • Native Scheduling — No daemon needed. Uses launchd (macOS) or systemd (Linux).
  • Undo Anything — Changed your mind? nothx undo domain.com

Beautiful

  • Rich CLI — Animated banner, progress bars, colored output
  • Interactive Mode — Just run nothx for menu-driven operation

The Learning System

nothx gets smarter the more you use it. Every decision trains your personal preference model.

What it learns:

  • Keywords — Keep emails with "receipt"? Future receipt-related senders score safer.
  • Open rates — If you keep emails you never open, it stops penalizing low engagement.
  • Volume tolerance — Keep high-volume senders? It raises the threshold before flagging.

Corrections teach it too. When you run nothx undo, it doesn't just restore — it learns that this type of email matters to you.

nothx status --learning   # See your learned preferences

How It Works

Email arrives
      ↓
┌─────────────────┐
│  USER RULES     │  Your explicit keep/unsub patterns
└────────┬────────┘
         ↓
┌─────────────────┐
│  PATTERNS       │  Known marketing domains, safe categories
└────────┬────────┘
         ↓
┌─────────────────┐
│  AI ANALYSIS    │  AI examines headers (never bodies)
└────────┬────────┘
         ↓
┌─────────────────┐
│  HEURISTICS     │  Open rates, frequency, spam patterns
└────────┬────────┘
         ↓
┌─────────────────┐
│  REVIEW QUEUE   │  Uncertain? You decide.
└─────────────────┘

Each layer can make a final call or pass to the next. Your rules always win.


Commands

Essentials

Command What it does
nothx Interactive menu
nothx init Setup wizard — accounts, API key, first scan
nothx run Scan and process emails
nothx status Stats, accounts, schedule at a glance
nothx review Decide on uncertain senders

Day-to-Day

Command What it does
nothx senders List all tracked senders
nothx search <pattern> Find a specific sender
nothx undo [domain] Undo an unsubscribe
nothx history View activity log
nothx export Export data to CSV

Configuration

Command What it does
nothx rule "pattern" keep/unsub Add a classification rule
nothx rules List all classification rules
nothx schedule --monthly Set automatic run frequency
nothx account add/remove Manage email accounts
nothx config --show View current config
nothx update Check for and install updates
nothx completion Generate shell completion

Aliases: r (run), s (status), rv (review), h (history)


Setup

Requirements

  • Python 3.11+
  • Gmail, Outlook, Yahoo, or iCloud account
  • AI provider (optional — works without AI too)

Installation

pipx is the recommended way to install nothx. It handles virtual environments automatically.

# Base install (heuristics only, or Ollama)
pipx install nothx

# With your preferred AI provider
pipx install "nothx[anthropic]"  # Claude (recommended)
pipx install "nothx[openai]"     # GPT-4
pipx install "nothx[gemini]"     # Google Gemini
pipx install "nothx[all-ai]"     # All providers
Don't have pipx?

macOS:

brew install pipx

Linux:

# Ubuntu/Debian
sudo apt install pipx

# Fedora
sudo dnf install pipx

pipx requires Python 3.11+. After installing, verify with python3 --version.

Using pip instead

If you prefer pip, use a virtual environment to avoid system conflicts:

python3 -m venv ~/.nothx-venv
source ~/.nothx-venv/bin/activate
pip install nothx
Gmail App Password
  1. Go to myaccount.google.com/apppasswords
  2. Generate a new password for "nothx"
  3. Copy the 16-character code

Requires 2FA enabled on your account.

Outlook App Password
  1. Go to account.live.com/proofs/AppPassword
  2. Enable 2FA if not already
  3. Generate and copy the app password
AI Provider Setup

Anthropic (Claude) — Best for email classification. Get API key

OpenAI (GPT) — GPT-4o models. Get API key

Google (Gemini) — Free tier available. Get API key

Ollama (Local) — Run models locally. No API key needed. Install Ollama

Without AI, nothx uses heuristic scoring. Still works, just less smart.


Troubleshooting

Connection failed
  • Verify your App Password (not your regular password)
  • Ensure IMAP is enabled in your email settings
  • For Gmail: Check that 2FA is enabled (required for App Passwords)
  • Run nothx test to diagnose
AI classification not working
  • Check your API key: nothx config --show
  • Verify you have credits/quota with your chosen provider (Anthropic, OpenAI, or Google)
  • nothx falls back to heuristics if AI fails — it still works
Still getting emails after unsubscribe
  • Some senders ignore unsubscribe requests (bad actors)
  • Run nothx run again — it escalates repeat offenders to blocking
  • Add manually: nothx rule "domain.com" block
Start fresh
nothx reset              # Delete everything
nothx reset --keep-config # Keep accounts, clear history

Comparison

Feature Unroll.me SaneBox Leave Me Alone nothx
Price Free $84-432/yr $48/yr Free
Privacy Sells data Cloud Cloud 100% local
Actually unsubscribes No Yes Yes Yes
AI classification No Yes Basic Yes (multi-provider)
Learns your preferences No Limited No Yes
Local AI option No No No Yes (Ollama)
Open source No No No Yes

Philosophy

We built nothx because:

  1. Your email is yours. Not a product to sell.
  2. AI should adapt to you. Not the other way around.
  3. Automation should be invisible. Set once, forget forever.
  4. You can always change your mind. Every action is reversible.

Contributing

git clone https://github.com/sainihas/nothx.git
cd nothx
pip install -e ".[dev]"
pytest

License

MIT — see LICENSE


nothx — Because your inbox should work for you, not against you.

Made with mass frustration at marketing emails.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nothx-0.1.7.tar.gz (114.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nothx-0.1.7-py3-none-any.whl (99.4 kB view details)

Uploaded Python 3

File details

Details for the file nothx-0.1.7.tar.gz.

File metadata

  • Download URL: nothx-0.1.7.tar.gz
  • Upload date:
  • Size: 114.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for nothx-0.1.7.tar.gz
Algorithm Hash digest
SHA256 a7190119ea00ebd96b10f11feef2de62adb98fd12c1d59c1d86f5bdbb1abfddc
MD5 469e6dbb65f57fb3e062da82569b9273
BLAKE2b-256 2c788036abe7b27dc84d40d3c3015cfd73b347fc200ebb1692664630511be559

See more details on using hashes here.

Provenance

The following attestation bundles were made for nothx-0.1.7.tar.gz:

Publisher: publish.yml on sainihas/nothx

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file nothx-0.1.7-py3-none-any.whl.

File metadata

  • Download URL: nothx-0.1.7-py3-none-any.whl
  • Upload date:
  • Size: 99.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for nothx-0.1.7-py3-none-any.whl
Algorithm Hash digest
SHA256 fc4c41751017287e2a1548fa8bb2ae97be7da07db7d4b82e5a687eb5dc6f72ec
MD5 4566b7e2ad35e73b542adaa9f006621f
BLAKE2b-256 e8fc1de45e22c53ff70e9531ed96fa04137fade020b2a0df35bb8ca2d0c9a88d

See more details on using hashes here.

Provenance

The following attestation bundles were made for nothx-0.1.7-py3-none-any.whl:

Publisher: publish.yml on sainihas/nothx

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page