Skip to main content

CLI client for the Confy encrypted communication system

Project description


Confy CLI

A command-line client for the Confy encrypted communication system.

Test GitHub License Visitors


A secure command-line interface for peer-to-peer encrypted messaging using the Confy communication system. This CLI enables users to establish encrypted connections with other peers, exchange cryptographic keys, and communicate with end-to-end encryption using industry-standard algorithms.

Learn more about the project at github.com/confy-security

Made with dedication by students from Brazil 🇧🇷.

⚡ Features

  • End-to-End Encryption - Messages are encrypted using AES-256 in CFB mode
  • Digital Signatures - Messages are signed using RSA with PSS padding for authenticity
  • Secure Key Exchange - RSA-4096 key exchange with OAEP padding
  • Interactive Terminal - User-friendly command-line interface using prompt-toolkit and Typer
  • Debug Mode - Detailed logging for troubleshooting and development
  • Cross-Platform - Works on Windows, macOS, and Linux
  • WebSocket Support - Secure peer-to-peer communication over WebSocket (WSS)

⚙️ Requirements

  • Python: 3.13 or higher
  • OS: Windows, macOS, or Linux

📦 Installation

Install the CLI globally with your package manager of choice.

pipx install confy-cli

🚀 Quick Start

Basic Usage

Start a secure conversation with another peer:

confy start your-user-id recipient-user-id

When prompted, enter the server address:

Server address: wss://secure-server.example.com

[!TIP] To learn how to deploy your own self-hosted Confy server, see github.com/confy-security/server.

Interactive Commands

Once connected, you can:

  • Send messages - Type your message and press Enter
  • Receive messages - Messages from peers appear in real-time
  • Exit - Type exit to end the session

Example Session

$ confy start alice bob
Server address: wss://secure-server.example.com
[SYSTEM] Waiting for recipient to connect...
[SYSTEM] The recipient is now connected.
> Hello Bob, this is Alice!
[RECEIVED] Hi Alice! I received your message.
> exit

🔒 Security Architecture

Key Exchange Process

  1. RSA Key Generation - Each client generates a 4096-bit RSA key pair
  2. Public Key Exchange - Public keys are exchanged securely over WebSocket
  3. AES Key Generation - A random 256-bit AES key is generated
  4. Encrypted Key Distribution - AES key is encrypted with peer's RSA public key
  5. Secure Communication - All messages are encrypted with the shared AES key and signed

Encryption Details

  • Message Encryption - AES-256 in CFB mode
  • Key Encryption - RSA-4096 with OAEP padding
  • Signatures - RSA-4096 with PSS padding and SHA-256
  • Cryptography Library - Uses the cryptography library (actively maintained)

📚 Environment Variables

Configure the CLI using environment variables:

# Enable debug mode
export DEBUG=true

# Or set it in .env file
DEBUG=false

Create a .env file in your project directory:

DEBUG=false

🔧 Configuration

Server Address Format

The server address can be specified as:

  • Secure WebSocket - wss://example.com (recommended)
  • WebSocket - ws://example.com (use only for testing)
  • HTTPS - https://example.com (automatically converts to WSS)
  • HTTP - http://example.com (automatically converts to WS)

Connection History

The CLI stores your connection history in:

~/.confy_address_history

This allows you to quickly access previously used server addresses using arrow keys.

🛠️ Troubleshooting

Connection Issues

"Error connecting to server"

  • Verify the server address is correct
  • Ensure the server is running and accessible
  • Check your network connectivity
  • For WSS connections, verify the SSL certificate is valid

"Connection refused"

  • Confirm the server is listening on the specified address and port
  • Check if a firewall is blocking the connection

Message Issues

"AES key has not been established yet"

  • Wait a moment for the key exchange to complete
  • Ensure both peers are connected
  • Check if the server is properly relaying messages

"Failed to encrypt/verify message"

  • This indicates an issue with the encryption layer
  • Try reconnecting to the server
  • Check if both peers are running compatible CLI versions

Performance Issues

Slow response times

  • Check your network latency to the server
  • Consider using a server closer to your location
  • Reduce the frequency of large messages

📖 Usage Guide

Connecting to a Server

confy start alice bob

You'll be prompted to enter the server address. For the first time, you can enter:

Server address: wss://secure-server.example.com

Sending Messages

Simply type your message and press Enter:

> Your encrypted message here

Security Considerations

  1. Verify Recipients - Ensure you're communicating with the intended person
  2. Secure Connections - Always use WSS (WebSocket Secure) in production
  3. Key Management - Store your user ID securely
  4. Session Management - End sessions with exit when finished

Advanced Usage

Debug Mode

Enable debug mode to see detailed information:

DEBUG=true confy start alice bob

This will display:

  • Key exchange details
  • Message encryption/decryption info
  • Connection status changes
  • Signature verification steps

Custom Server

Connect to a custom server:

confy start your-id recipient-id
Server address: wss://your-custom-server.com:8080

🤝 Dependencies

Confy CLI relies on:

All dependencies are installed automatically with pip.

🐛 Bug Reports

If you encounter any issues, please report them:

  1. Check if the issue already exists on GitHub Issues
  2. Provide clear reproduction steps
  3. Include your Python version and OS
  4. Attach relevant logs with DEBUG=true

See CONTRIBUTING.md for more information.

🔐 Security Policy

For security vulnerabilities, please follow responsible disclosure:

DO NOT open a public GitHub issue.

Instead, email: confy@henriquesebastiao.com

See SECURITY.md for detailed information.

📝 Contributing

We welcome contributions! Please see CONTRIBUTING.md for guidelines on:

  • Setting up the development environment
  • Code standards and style guidelines
  • Testing requirements
  • Pull request process

📄 License

Confy CLI is open source software licensed under the GPL-3.0 license.

📚 Additional Resources

🙋 Support

For questions and support:

Acknowledgments

This project was created with dedication by Brazilian students 🇧🇷 as part of the Confy Security initiative.

Built with ❤️ by the Confy Security Team

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

confy_cli-0.1.0.tar.gz (26.2 kB view details)

Uploaded Source

Built Distribution

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

confy_cli-0.1.0-py3-none-any.whl (25.0 kB view details)

Uploaded Python 3

File details

Details for the file confy_cli-0.1.0.tar.gz.

File metadata

  • Download URL: confy_cli-0.1.0.tar.gz
  • Upload date:
  • Size: 26.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for confy_cli-0.1.0.tar.gz
Algorithm Hash digest
SHA256 66e75e75146ac2d04e553084f80edc71405a9bce21769d9283add46ac0c829db
MD5 7d3a99a693f57cd875ed8f804a9dd8be
BLAKE2b-256 ad131339788a314316969e7ebc936f67817d2b9df5ed49d175e8c6df06023aa5

See more details on using hashes here.

Provenance

The following attestation bundles were made for confy_cli-0.1.0.tar.gz:

Publisher: publish.yml on confy-security/cli

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

File details

Details for the file confy_cli-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: confy_cli-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 25.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for confy_cli-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4233b8005c6a2a9733c35f851f56ead966755e82e79544ecc3f88932543e9e2b
MD5 744eafd78546058c36b3cd5df1ee6750
BLAKE2b-256 1de643f92641336bf784cb602ba892a91a8992add30b1d8dea22407f927d278c

See more details on using hashes here.

Provenance

The following attestation bundles were made for confy_cli-0.1.0-py3-none-any.whl:

Publisher: publish.yml on confy-security/cli

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