toxcore
The future of online communications.
Toxcore is the C library powering the Tox protocol, enabling encrypted peer-to-peer messaging, file transfers, and video calls between users with no central servers and no account registration required.
Toxcore is a C library that provides the networking and cryptography foundation for the Tox communication protocol. Tox was created as a response to concerns about centralized communication services and government surveillance programs, with the explicit goal of letting people send messages, share files, and make video calls without routing anything through a company's servers.
The system is fully peer-to-peer: instead of routing traffic through a central service, it connects users directly to each other. Every user gets a unique identifier called a Tox ID, which is derived from a public key. To find someone on the network, Tox uses a distributed lookup mechanism similar to how BitTorrent locates files, so no single server holds a directory of everyone's addresses.
Connections between peers are encrypted end-to-end. Once two users are connected, they can exchange text messages, transfer files, and start video chats, all over an encrypted channel. No account registration is required: you share your Tox ID with someone and they can add you directly.
For network connectivity, Tox prefers direct UDP connections because UDP allows a technique called hole punching, which lets two computers behind typical home or office routers find each other without manual configuration. When a firewall prevents that, the library falls back to TCP relay servers as an alternative path.
Toxcore is the core library only. It does not include a user interface. Separate client applications built on top of it are available for different platforms, with links listed on the project wiki. Installing it requires compiling from source.
Where it fits
- Build a privacy-focused chat client that lets users communicate without routing messages through any company's servers.
- Add encrypted peer-to-peer file transfer capability to an existing application using the Tox protocol.
- Create a secure video calling feature that uses direct UDP connections between users.
- Develop a serverless messaging system where users exchange Tox IDs instead of usernames or phone numbers.