Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Submit
ToolsExploitsBlog
Submit

Hacking, PenTest, and Cybersecurity Tools for Your Security Arsenal!

Kitploit is a directory of hacking, cybersecurity, and pentesting tools. Discover the latest project updates to find vulnerabilities, analyze systems, automate testing, and strengthen your security.

FeedsContactPrivacyΒ© 2026 Kitploit

Tool Directory

Categories

View all categories
Loading categories
NoEyes β€” Secure terminal chat. E2E encrypted, zero-metadata blind-forwarder server. PyNaCl XSalsa20-Poly1305 + Ed25519 + forward secrecy. Cross-platform Python. | Kitploit
Tools/GitHubGitHub/ymsniper/noeyes
Authentication & AuthorizationEncryption/Decryption ToolsNetwork SecurityCryptographyPrivacyUtilities & Frameworks
GitHubymsniper/noeyes

NoEyes

Secure terminal chat. E2E encrypted, zero-metadata blind-forwarder server. PyNaCl XSalsa20-Poly1305 + Ed25519 + forward secrecy. Cross-platform Python.

View Repository
1469234 months agoReviewed by Kitploit

Most Popular

View all β†’

Discover the most used tools by our community.

Explore all tools

Browse our collection of tools

View all tools β†’
Share

NoEyes πŸ”’ Secure Terminal Chat

Featured in OSINTech's OSINT Anatomy

End-to-end encrypted group chat, private messages, and file transfer in your terminal. The server is a blind forwarder: it cannot read your messages, does not know your username, does not know the room you are in, and cannot link any two messages to the same person, even if fully compromised.

See it in action

Full Showcase - 3 clients, rooms, private messages, sidebar panel

https://github.com/user-attachments/assets/d9faabfb-73bd-46dd-92b2-23f63daf5b06


install.sh - Bootstrap installer

https://github.com/user-attachments/assets/e8e0220d-cd7d-45a2-9443-9a5f20b57f12


install.py - Universal Python installer

https://github.com/user-attachments/assets/15fb383d-a02a-433e-bbd9-8ebadecf9481


Server - Guided launcher startup

https://github.com/user-attachments/assets/bca10cb1-6959-425d-96d6-fc1fbf845538


What is NoEyes?

NoEyes is a Python terminal chat tool for small trusted groups. The server never decrypts anything and never sees who you are - it only handles opaque tokens and forwards encrypted bytes.

You generate the key, share it out-of-band, and the server learns nothing about your conversations.

Useful for small trusted groups who want encrypted comms without trusting any third-party server, self-hosting a private chat with true end-to-end encryption, or anyone who wants to understand exactly what a server can and cannot see.


Features

FeatureDetails
Zero-metadata serverServer never sees usernames, room names, or public keys, only opaque tokens
Sealed senderSender identity lives inside the encrypted payload, never in the routing header
Blind-forwarder serverZero decryption, server forwards encrypted blobs it cannot read
Forward secrecy/ratchet start β€” Sender Keys protocol, each message encrypted with a unique derived key, past messages safe even if current key leaks
Group chatPer-room XSalsa20-Poly1305 keys derived via BLAKE2b, rooms cryptographically isolated
Private messagesX25519 DH handshake on first contact, pairwise key only the two parties hold
File transferChaCha20-Poly1305 streaming, any size, low RAM usage, pause/resume across reconnects
Ed25519 identityAuto-generated signing key, all messages and files are signed
TOFUFirst-seen keys trusted; key mismatches trigger a visible security warning
Random PBKDF2 saltEach deployment gets a unique random salt, rainbow tables are useless
TLS + cert pinningTransport encrypted, server cert pinned on first contact via TOFU
Replay protectionPer-room message ID deque, replayed frames silently dropped
Split sidebar panelRooms (top) and users (bottom) always visible, each half scrolls independently
CRT boot animationFull-screen phosphor effect with sound on startup
Ratchet activation animationFull-screen CRT effect with braille gear art, glitch flicker, spotlight sweep, synced SFX, and TUI chrome transition to red
Guided launcherArrow-key menu UI, no command-line experience needed
Auto dependency installerDetects your platform, installs what's missing, asks before changing anything

Quick Start

Option A - Guided (recommended for beginners)

# 1. Run the setup wizard - installs Python, pip, and dependencies automatically
python ui/setup.py

# 2. Launch NoEyes
python ui/launch.py

ui/launch.py walks you through starting a server or connecting to one.


Option B - If Python isn't installed yet

PlatformRun this first
Linux / macOS / Termux / iSHsh install/install.sh
Windowsinstall\install.bat

Both scripts install Python if missing, then hand off to setup.py automatically.


Option C - Manual

# 1. Install dependencies
pip install cryptography PyNaCl

# 2. On the server machine β€” generate the access key
python noeyes.py --generate-access-key
# Prints an access code hex string β€” share with clients via USB

# 3. On a client machine β€” generate chat.key from the access code
python noeyes.py --generate-chat-key <ACCESS_CODE_HEX> --key-file ./chat.key
# Distribute chat.key to all other clients via USB. Never put it on the server.

# 4. Start the server (does NOT need the key file)
python noeyes.py --server --port 5000

# Start without bore tunnel (LAN / static IP / custom tunnel)
python noeyes.py --server --port 5000 --no-bore

# Start without adding a firewall rule (not needed when using bore tunnel)
python noeyes.py --server --port 5000 --no-firewall

# 5. Connect clients - each person needs their own identity file
python noeyes.py --connect SERVER_IP --port 5000 --username alice --key-file ./chat.key --identity-path ~/.noeyes/identity_alice.key
python noeyes.py --connect SERVER_IP --port 5000 --username bob   --key-file ./chat.key --identity-path ~/.noeyes/identity_bob.key

Important: Every user must have their own identity file. Two clients sharing the same identity file get the same inbox token and the server will reject the second one as a duplicate session. The identity file is auto-generated on first run, just pass a unique --identity-path per user.


Running on Termux (Android)

Download Termux from F-Droid (recommended): https://f-droid.org/packages/com.termux/

Keep the session alive - install tmux so NoEyes keeps running when you switch apps:

pkg install tmux -y
tmux
python ui/launch.py
# Press Volume Down + D to detach (keeps running in background)
# tmux attach   to come back

Storage permissions - file transfer will fail without this:

termux-setup-storage

In-Chat Commands

CommandDescription
/helpShow all commands
/quitDisconnect and exit
/clearClear messages from screen
/usersList users in current room
/join <room>Switch to a room (warns if in active ratchet)
/leaveReturn to the general room (warns if in active ratchet)
/msg <user> <text>Send an E2E-encrypted private message
/send <user> <file>Send an encrypted file
/whoamiShow your identity fingerprint
/trust <user>Trust a user's new key after they reinstall
/notify on|offToggle notification sounds
/ratchet startPropose forward-secrecy rolling keys to all room members (all must confirm)
/ratchet invite <u>Re-invite a user to the ratchet after they rejoin (triggers full restart β€” no chain keys forwarded)
/proceedDuring migration wait, vote to drop an offline peer and resume

TUI Keyboard Shortcuts

KeyAction
↑ / ↓Scroll chat up / down
PgUp / PgDnScroll chat one page
^P (Ctrl+P)Show / hide the sidebar panel
^CQuit

Sidebar panel

  • Top half - ROOMS - all rooms joined this session. Active room highlighted with β–Ά.
  • Bottom half - USERS - everyone currently in your active room.

Each half scrolls independently. Press ^P to hide the panel for a full-width chat view.


Message Tags

Prefix any message with a !tag to color it for everyone and trigger a notification sound. Tags travel inside the encrypted payload, the server never sees them.

TagColorUse for
!ok <msg>🟒 GreenSuccess, confirmed, done
!warn <msg>🟑 YellowWarning, heads up
!danger <msg>πŸ”΄ RedCritical, urgent, emergency
!info <msg>πŸ”΅ BlueStatus update, FYI
!req <msg>🟣 PurpleRequest, needs action
!? <msg>🩡 CyanQuestion, asking for input
Download Tool