Transfer files between two computers without server configuration
Send a file from one computer and enter a short code on the other. You can exchange data from anywhere with an internet connection without setting up a local server or configuring port forwarding. croc is a command-line tool that goes beyond file transfer to include sharing encrypted terminal sessions.
Browser client without installation
You can run croc in a browser at getcroc.com, allowing you to exchange files without a separate installation process. This browser version is fully compatible with the command-line interface, so it works even if one side is a web browser and the other is a desktop app. Since the method for entering codes is the same, you can also scan a QR code on a mobile device to receive files. This flexibility is particularly useful in situations with limited network environments.
Encryption and connection methods
croc uses PAKE (Password-Authenticated Key Exchange) to generate a secret key between the sender and receiver, ensuring end-to-end encrypted transmission. Data first attempts a direct connection and, if that is not possible, goes through a relay server. It prioritizes IPv6 and falls back to IPv4, and can also be transmitted through proxies like Tor. Thanks to this structure, computers behind firewalls can establish connections relatively easily.
Terminal session sharing
In Linux, macOS, FreeBSD, and OpenBSD environments, you can share a terminal session using the croc ssh command. The host generates a six-word invitation code for participants with read/write permissions and another for those with read-only permissions. This method provides encrypted terminal access through a temporary WireGuard path without exposing an SSH daemon or creating accounts. People with the invitation code can use the terminal within the specified permissions, while remote command execution and file transfer (SFTP) are disabled.
File storage and temporary sharing
If immediate transfer is difficult, you can encrypt files on the client side and upload them to the server using the croc store command. This method generates a browser link and a CLI token, with the configured expiration date or download count limit applied. The hash part of the link contains the decryption key, so the server only stores encrypted data and cannot know the original content. The sender can delete a valid transfer at any time using the cancellation receipt stored locally.
Pre-use considerations
croc is written in Go, and building from source requires Go 1.27 or higher. It can be easily installed on most operating systems via package managers or installation scripts, but for Alpine Linux, you must enable the community repository. When using the stored transfer feature, server policies may affect download counts and expiration dates, so you should check them. Additionally, the terminal sharing feature is only supported on specific Unix-like operating systems, and invitation codes should be treated as secret.