{"_id":"@adrianmanole/lexchat","_rev":"5-518777f08a05c4d3a62fc8d5e5f6f74e","name":"@adrianmanole/lexchat","dist-tags":{"latest":"1.0.4"},"versions":{"1.0.0":{"name":"@adrianmanole/lexchat","version":"1.0.0","author":{"name":"Adrian Manole"},"license":"MIT","_id":"@adrianmanole/lexchat@1.0.0","maintainers":[{"name":"adrianmanole","email":"manoleadrian2004@gmail.com"}],"bin":{"lexchat":"index.js"},"dist":{"shasum":"084530b99539680f23ea7c9aa24207811e8a7003","tarball":"https://registry.npmjs.org/@adrianmanole/lexchat/-/lexchat-1.0.0.tgz","fileCount":4,"integrity":"sha512-nwGm4+w30hhXu6A3vbjm1PnRxuUGOhR523tuK21VBZvsGfTeIXVOa8juwidJeN3NSfZY7vlQM5UOGglAeRhHWg==","signatures":[{"sig":"MEQCIDvMmD912Z7vEOFIajU3LmXcLKGlgnlIbsNuQ6/BJhb/AiBj5V6F0SKfaxcmJXk3LamPyGTLlopgZPyBcmXF0bWE7w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":43293},"main":"index.js","type":"module","_npmUser":{"name":"adrianmanole","email":"manoleadrian2004@gmail.com"},"_npmVersion":"10.9.2","description":"Secure Decentralized P2P E2EE Terminal Chat Suite","directories":{},"_nodeVersion":"23.10.0","dependencies":{"ws":"^8.16.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/lexchat_1.0.0_1779621992314_0.8298083597599588","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@adrianmanole/lexchat","version":"1.0.1","author":{"name":"Adrian Manole"},"license":"MIT","_id":"@adrianmanole/lexchat@1.0.1","maintainers":[{"name":"adrianmanole","email":"manoleadrian2004@gmail.com"}],"bin":{"lexchat":"index.js"},"dist":{"shasum":"b5e555e8ccd04db4a7b0a46a2431b584198a1332","tarball":"https://registry.npmjs.org/@adrianmanole/lexchat/-/lexchat-1.0.1.tgz","fileCount":4,"integrity":"sha512-3R6h4u4ufoz8aJmeND5Jd359pVUmNMqgB7n5pQFKDjYI1iSrwhY0qNMzxDpUJZ98R41ArhOfWhicB+fsCyfWcw==","signatures":[{"sig":"MEQCIEP70wE3N1zqTDGsjN319wQ5RJKP16tfIEdBqZKrU2d7AiB6Hwz3LX1YiA6x+S9IfTXJKI04RsIRpMFNdEsiAHK0NA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":44760},"main":"index.js","type":"module","_npmUser":{"name":"adrianmanole","email":"manoleadrian2004@gmail.com"},"_npmVersion":"10.9.2","description":"Secure Decentralized P2P E2EE Terminal Chat Suite","directories":{},"_nodeVersion":"23.10.0","dependencies":{"ws":"^8.16.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/lexchat_1.0.1_1779622201118_0.39061259610587706","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@adrianmanole/lexchat","version":"1.0.2","author":{"name":"Adrian Manole"},"license":"MIT","_id":"@adrianmanole/lexchat@1.0.2","maintainers":[{"name":"adrianmanole","email":"manoleadrian2004@gmail.com"}],"bin":{"lexchat":"index.js"},"dist":{"shasum":"5a705f6cf933b6f9ba65092f64bc6d638332d9c2","tarball":"https://registry.npmjs.org/@adrianmanole/lexchat/-/lexchat-1.0.2.tgz","fileCount":4,"integrity":"sha512-LO0OaLrB2fMxqPBhBkHQH7ZP6XWkUii+qwtWII3Ha6G2SqjjuihSEQB3WANnY5hxrerbRaRuHyX2BC1hHGRV6g==","signatures":[{"sig":"MEQCIBRCAPzZxMrJebnjt2KagpZNAUlxPGaYB33fET4BHe40AiAC1a8yT+nINH+uH/SGp7E1izkMwVva1CubcbgS+RLYtg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":44760},"main":"index.js","type":"module","_npmUser":{"name":"adrianmanole","email":"manoleadrian2004@gmail.com"},"_npmVersion":"10.9.2","description":"Secure Decentralized P2P E2EE Terminal Chat Suite","directories":{},"_nodeVersion":"23.10.0","dependencies":{"ws":"^8.16.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/lexchat_1.0.2_1779622249634_0.2765391209929222","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@adrianmanole/lexchat","version":"1.0.3","author":{"name":"Adrian Manole"},"license":"MIT","_id":"@adrianmanole/lexchat@1.0.3","maintainers":[{"name":"adrianmanole","email":"manoleadrian2004@gmail.com"}],"bin":{"lexchat":"index.js"},"dist":{"shasum":"6cf1bf16731e2c9be13e7904d95828204d2bef32","tarball":"https://registry.npmjs.org/@adrianmanole/lexchat/-/lexchat-1.0.3.tgz","fileCount":8,"integrity":"sha512-Gy1ukq5APOFGEWX3twiHBBCHBI7rXLxMBVPxbALiB7owhDccyNF712zYUqZ5zgYOYqvmPKRE5QghTHp5YP78lA==","signatures":[{"sig":"MEUCIQCoBGA9MayDtdZm2CyjK7g+X4NFfotq/bx5ixUwa56UoQIgauNMvj0mCv0ZGiWXzc96HVjtE4MVO8HvbteZSwuSpfQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80861},"main":"index.js","type":"module","_npmUser":{"name":"adrianmanole","email":"manoleadrian2004@gmail.com"},"_npmVersion":"10.9.2","description":"Secure Decentralized P2P E2EE Terminal Chat Suite","directories":{},"_nodeVersion":"23.10.0","dependencies":{"ws":"^8.16.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/lexchat_1.0.3_1779622672339_0.5408231484097583","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@adrianmanole/lexchat","version":"1.0.4","description":"Secure Decentralized P2P E2EE Terminal Chat Suite","main":"index.js","type":"module","bin":{"lexchat":"index.js"},"dependencies":{"ws":"^8.16.0"},"author":{"name":"Adrian Manole"},"license":"MIT","_id":"@adrianmanole/lexchat@1.0.4","_nodeVersion":"23.10.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-TDh7g8G9dsuhrLfjUHI7LcJ+EcWXgPADDYY1zKOYwOlWRWtj213PM7FP5YejluFW4IEuN7iBTjZa693hELAHNg==","shasum":"bcecff2064817682677a72dd271a6e1f1a905bc0","tarball":"https://registry.npmjs.org/@adrianmanole/lexchat/-/lexchat-1.0.4.tgz","fileCount":8,"unpackedSize":80874,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCBcuJJpyrOZDDDT8Fpg7aC75UIad+SlJiLbhquoCU8IwIgLgMdCoyLXdAIQTw2tnf52MOExbalIxBZvtZc/YxLtkE="}]},"_npmUser":{"name":"adrianmanole","email":"manoleadrian2004@gmail.com"},"directories":{},"maintainers":[{"name":"adrianmanole","email":"manoleadrian2004@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/lexchat_1.0.4_1779623376705_0.4615621375279142"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-24T11:26:32.069Z","modified":"2026-05-24T11:49:36.949Z","1.0.0":"2026-05-24T11:26:32.462Z","1.0.1":"2026-05-24T11:30:01.298Z","1.0.2":"2026-05-24T11:30:49.790Z","1.0.3":"2026-05-24T11:37:52.505Z","1.0.4":"2026-05-24T11:49:36.834Z"},"author":{"name":"Adrian Manole"},"license":"MIT","description":"Secure Decentralized P2P E2EE Terminal Chat Suite","maintainers":[{"name":"adrianmanole","email":"manoleadrian2004@gmail.com"}],"readme":"# 💬 LexChat — Secure Decentralized P2P Encrypted Terminal Chat\n\n> Zero-config, zero-trust, end-to-end encrypted mesh chat — right in your terminal.\n\nLexChat is an ultra-secure, decentralized peer-to-peer (P2P) chat app that runs entirely in your terminal. No accounts, no servers storing your messages, no data collection. Just pure encrypted communication.\n\nAll messages are protected with **secp256k1 Elliptic Curve** key exchange and **AES-256-GCM** encryption. A lightweight global relay helps peers find each other, but it **never** sees your keys or messages — it's completely zero-knowledge.\n\n---\n\n## ⚡ Quick Start (30 seconds)\n\n### Prerequisites\n- [Node.js](https://nodejs.org/) v18 or later\n\n### Launch LexChat\n\nRun this single command — no install needed:\n\n```bash\nnpx @adrianmanole/lexchat\n```\n\nThat's it. You're in. 🚀\n\n### What happens on first launch?\n\n1. 🔑 A **cryptographic wallet** is generated automatically (`wallet.json`)\n2. 🌐 You connect to the **global peer lobby**\n3. 👤 You're prompted to **set an alias** (your display name)\n4. 📡 You can instantly see **all online peers** worldwide\n\n---\n\n## 🎮 How to Use\n\n### Set Your Nickname\nWhen you first launch, you'll be asked for an alias. You can change it anytime:\n```\n/nick CoolName\n```\n\n### See Who's Online\n```\n/peers\n```\nShows all connected users globally.\n\n### Start a Private Chat\n```\n/select Alice\n```\nThis initiates a **secure E2EE handshake** with that peer. Once connected, just type your message and hit Enter — it's encrypted automatically.\n\n### View Chat History\n```\n/history Alice\n```\nDecrypts and displays your locally stored conversation history.\n\n### Create a Group Chat\n```\n/group create squad\n/group add squad Alice\n/group add squad Bob\n/group select squad\n```\nNow every message you send is **multicast-encrypted** to all group members!\n\n### Manage Groups\n```\n/group list          # See all your groups\n/group select squad  # Switch to group chat mode\n```\n\n### Exit Safely\n```\n/exit\n```\nSecurely closes connections, wipes keys from memory, and shuts down.\n\n---\n\n## 📋 Command Reference\n\n| Command | Description |\n|---|---|\n| `/peers` | List all online peers in the lobby |\n| `/nick <name>` | Set or change your display alias |\n| `/select <alias>` | Open an encrypted 1-on-1 channel with a peer |\n| `/history <alias>` | View decrypted chat history with a peer |\n| `/group create <name>` | Create a new mesh group |\n| `/group add <name> <alias>` | Add a peer to a group |\n| `/group list` | List all active groups |\n| `/group select <name>` | Switch to group chat mode |\n| `/exit` | Securely disconnect and exit |\n\n---\n\n## 🔐 Security & Architecture\n\n| Feature | Detail |\n|---|---|\n| **Key Exchange** | ECDH over secp256k1 |\n| **Message Encryption** | AES-256-GCM with per-message nonces |\n| **Perfect Forward Secrecy** | Session keys rotate automatically |\n| **Lobby Server** | Zero-knowledge — blind relay only |\n| **NAT Traversal** | 100% success via relay (no port forwarding needed) |\n| **Local Storage** | Encrypted vault (`chat_history.json`) |\n\n### How it works\n\n```\nYou  ←──E2EE──→  Peer\n       ↕ (encrypted envelope)\n   Lobby Server\n   (sees nothing)\n```\n\n1. Your device generates a **secp256k1 keypair** on first launch\n2. The lobby server helps peers **discover** each other (like a phonebook)\n3. Peers perform an **ECDH handshake** to derive a shared secret\n4. All messages are **AES-256-GCM encrypted** — the lobby just passes opaque blobs\n5. Chat history is **encrypted locally** on your machine\n\n---\n\n## 🌐 Connect to a Custom Lobby\n\nRunning your own private lobby? Pass the URL as an argument:\n\n```bash\nnpx @adrianmanole/lexchat ws://your-server.com:6060\n```\n\n---\n\n## 💻 Install Globally (Optional)\n\nIf you use LexChat often, install it globally for faster access:\n\n```bash\nnpm install -g @adrianmanole/lexchat\nlexchat\n```\n\n---\n\n## 📦 Package Info\n\n- **npm**: [@adrianmanole/lexchat](https://www.npmjs.com/package/@adrianmanole/lexchat)\n- **License**: MIT\n- **Author**: Adrian Manole\n\n---\n\n*Built with ❤️ and zero trust.*\n","readmeFilename":"README.md"}