A stealthy-yet-flexible messaging CLI tool designed for modularity, extensibility, and research-grade logging.
- Modular architecture with
cli/,core/,transports/, andtests/directories. - CLI implemented with
argparsesupportingsendandlistencommands. - Core modules for
Messageobject, routing, and configuration. - HTTP transport implemented with retry and logging.
- Comprehensive logging to
ghostwhisper-devlog.txtfor all actions. - Unit and integration tests covering message serialization, transport, routing, and CLI.
- FastAPI backend server with async message handling and CORS support.
- Automatic client discovery with transport detection.
- Interactive CLI GUI with chat window and transport selection.
-
Clone the repository.
-
Create and activate a Python 3.11+ virtual environment.
-
Install dependencies:
pip install -e .[dev]-
Ensure
~/.local/binis in your PATH. Use the provided helper scriptfix_path_and_reload.shif needed. -
Verify CLI installation:
ghostwhisper --helpghostwhisper send --to http://localhost:8000/receive --via http --message "Hello World"Or use the interactive CLI GUI:
PYTHONPATH=. python cli/ghostwhisper_gui.pyType help for commands, discover to find clients, and sendauto <target> to send messages using the best transport.
ghostwhisper listen --port 8000- The listener starts a FastAPI server on the specified port.
- Incoming messages are displayed live and saved to
received_messages.log. - Logs of all actions are in
ghostwhisper-devlog.txt.
- Run all tests with:
python -m unittest discover tests- Tests cover core message handling, transports, CLI commands, backend API, and integration flows.
- If
ghostwhispercommand is not found, ensure~/.local/binis in your PATH. - Use
fix_path_and_reload.shto add it for bash or zsh shells. - Restart your terminal or source your shell config after changes.
- Fork the repo and create feature branches.
- Write tests for new features or bug fixes.
- Submit pull requests with clear descriptions.
We continuously review and improve security. Please report any issues via GitHub.
Enjoy the animated mascot:
MIT License

