Skip to main content

A defensive communication CLI for spotting manipulation, holding boundaries, and answering bullies without becoming one.

Project description

IRL Gaslight

Spot the spin. Hold the line. Keep your receipts.

A warm, keyboard-driven defensive communication CLI for recognizing manipulation, rehearsing boundaries, answering bullies without becoming one, and keeping factual local notes.

PyPI Python License GitHub stars

Install · Explore · Commands · Identity · Safety


██╗ ██████╗  ██╗
██║ ██╔══██╗ ██║        IRL GASLIGHT
██║ ██████╔╝ ██║        ─────────────
██║ ██╔══██╗ ██║        A calmer answer,
██║ ██║  ██║ ███████╗   right when pressure hits.
╚═╝ ╚═╝  ╚═╝ ╚══════╝

IRL Gaslight turns a terminal window into a small reality-check toolkit. Open the command palette, choose what happened, and leave with a response you can actually say—not another argument designed to exhaust you.

It does not teach gaslighting, coercion, humiliation, retaliation, or psychological abuse.

Install

pip install --upgrade irl-gaslight

Then open the interactive experience:

irl-gaslight

Use the arrow keys to move and press Enter to choose. On first launch, the shared IRL identity ritual can create your local profile and optionally link Google.

What is inside

Path What you get
Pattern check Phrase-based signals for 20 manipulation tactics
Boundaries Calm lines with consequences you control
Comebacks Calm, dry, and direct answers without abuse
Rehearsal Practice against realistic pressure scenarios
Incident log Factual notes stored only on your machine
Daily grounding One deterministic reality check each day
Favorites A personal response shelf stored locally
Safety resources Clear signals for stepping beyond a comeback
Shared identity Name, pronunciation, pronouns, avatar, and oath
Google OAuth Optional local account link shared across IRL tools

The library contains 110 curated defensive entries across work, school, family, dating, friendship, and online situations. The interface includes a daily streak, clipboard support, favorites, responsive ANSI title art, and the warm burnt-orange IRL-Wisdom command-palette aesthetic.

Commands

irl-gaslight spot "That never happened. You imagined it."
irl-gaslight boundary --context work
irl-gaslight comeback --tone dry
irl-gaslight rehearse
irl-gaslight log
irl-gaslight history
irl-gaslight clear-log
irl-gaslight daily
irl-gaslight favorites
irl-gaslight resources
irl-gaslight upgrade

Add --copy or -c to supported response commands:

irl-gaslight boundary --context school --copy

Interactive lesson cards also offer Copy, Save to favorites, Back, and Exit actions.

Shared IRL identity and Google OAuth

IRL Gaslight uses the same local identity system as IRL Wisdom. A profile created in one ecosystem CLI can appear in the others.

irl-gaslight profile
irl-gaslight profile edit
irl-gaslight profile reset
irl-gaslight avatar
irl-gaslight oath
irl-gaslight oauth login
irl-gaslight oauth status
irl-gaslight oauth logout

The Google flow uses OAuth 2.0 Authorization Code with PKCE, a random state value, and a temporary localhost callback. Tokens are written locally to ~/.irl/google_oauth.json; profile data lives in ~/.irl/profile.json.

Google linking is optional. Cancelling, going offline, or skipping login does not block the defensive tools.

For a browserless terminal:

irl-gaslight oauth login --no-browser

The upgrade ritual

IRL Gaslight checks PyPI, compares versions, and asks before installing:

irl-gaslight upgrade

For scripts and confident terminals:

irl-gaslight upgrade --yes

How it works

irl-gaslight
├── Typer commands
├── Questionary command palette
├── Rich terminal rendering
├── Local JSON defensive library
├── irl_identity
│   ├── first-launch profile ritual
│   ├── avatars and Wisdom oath
│   └── Google OAuth with PKCE
├── ~/.irl_gaslight.json
│   ├── favorites
│   ├── incident notes
│   └── daily streak
└── ~/.irl
    ├── profile.json
    └── google_oauth.json

There is no application database, telemetry, or cloud sync. Gaslight state, the shared profile, and OAuth tokens stay on the local device.

Safety first

The detector is a phrase-based educational aid, not a diagnosis. Context, repetition, power imbalance, and safety matter more than one sentence.

Do not use a comeback when it could increase danger. If someone is threatening, stalking, controlling, or violent, prioritize distance, trusted support, and local emergency or abuse-support services. Use irl-gaslight resources for the built-in safety checklist.

Development

git clone https://github.com/Dev2Creator/irl-gaslight.git
cd irl-gaslight
python -m venv .venv
.venv\Scripts\activate
python -m pip install -e .
irl-gaslight

Build and validate a release:

python -m pytest -q
python -m build
python -m twine check dist/*

Author

Created by Anika Mukherjee

Email: cuteypieanika@gmail.com

GitHub: @Dev2Creator

Copyright and license

Copyright © 2026 Anika Mukherjee.

The source code is licensed under the GNU Affero General Public License v3 or later.


Built for people who want their footing back before they choose their next words.

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

irl_gaslight-0.2.0.tar.gz (47.5 kB view details)

Uploaded Source

Built Distribution

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

irl_gaslight-0.2.0-py3-none-any.whl (49.6 kB view details)

Uploaded Python 3

File details

Details for the file irl_gaslight-0.2.0.tar.gz.

File metadata

  • Download URL: irl_gaslight-0.2.0.tar.gz
  • Upload date:
  • Size: 47.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.11

File hashes

Hashes for irl_gaslight-0.2.0.tar.gz
Algorithm Hash digest
SHA256 2f7c2d8597af0a64f98d9b6498ee8495377f0cd1f5b23a50f4b1849809274dbb
MD5 96abb6f4449a5d6a7688952fb947da8b
BLAKE2b-256 135f3d2bc23d976ed2a28f500aa6ce34294fe0b7d20828919b8ddc46f9164f65

See more details on using hashes here.

File details

Details for the file irl_gaslight-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: irl_gaslight-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 49.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.11

File hashes

Hashes for irl_gaslight-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2dff6bbf8dae1c27148ff06205f98d8abb5e94003a1845b1861ebdc8f5ce9f7a
MD5 4e1d43b9c0ba984dc1426acdab790a0d
BLAKE2b-256 16937dcdafbf62352d1d52351b03aac307f344d95ad45b2085b976fecb06e9c2

See more details on using hashes here.

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