hello-operator is a command-line file sharing tool. Using it looks like this:
$ hello-operator
Operator > what's your number?
< T-6-5000
Operator > what city are you calling from?
< madison, wi
Operator > and what city are you calling?
< green bay, wisconsin
Operator > ok hon, what number do you want to call?
< k-1640
Operator > one moment please...
Operator > your call has been connected, have a nice day!
< ?
say: send text
package: send a file
goodbye: hang-up
< say hi
k-1640 > hello, joe!
< package
> What's the filename?
< ~/Music/satisfaction.flac
k-1640 > Receiving .................... Done!
< goodbye
dialtone
When Hello, Operator starts, it attempts to connect to a "switchboard": a known server on a public Internet address. If a switchboard cannot be reached it says "we're sorry, your call cannot be completed at this time. Please try again later".
Once it connects to a switchboard it asks for your number, city and state name. This is what it will use to uniquely identify your node (if the city-state are already taken it will say "that line is in use, try another"). Once an unused city-state combo is found it is written to a local config file and the "calling from" question won't be asked again.
Next it asks for the "number", this is used to encrypt the data sent over the connection. Technically this can be anything, but it's more fun (and easier to remember) if you use a phone number.
At this point the switchboard attempts to connect the two nodes. If the connection is successful, commands can be used to send text and files directly and securely between the two nodes. If not, the operator responds with "Your call cannot be completed as dialed, please check the number and dial again".
How does this work?
When the operator connected to the switchboard, the switchboard noted the IP address you are connecting from and the random network port that was opened by your router/firewall for incoming connections (this is how any webserver/etc. sends data back to your computer). When you gave the operator your city-state, this IP-Port combination was stored in a database in the switchboard under that name. The same thing happened when the person you want to send files to ran hello-operator.
Once you provided the "number" you want to call to the operator, it looked-up the IP-Port for the city-state you requested in the switchboard database. If found, the operator attempts to send a message to the address associated with the city-state over its network port in the database, encrypted using the number you provided. If the message is able to reach the node, this "destination node" then attempts to decrypt the message. It should decrypt to a special "line test" message that the operator on the other end will use to repeat a similar test in the other direction. If this conversation is successful in both directions the call is considered connected.
At this point commands like "say" and "package" send data directly to the receiving node as if the two machines were on the same routable network until one sends the "goodbye" command.
Why?
I've been frustrated for a long time by the fact that something as simple as sharing a file has become so difficult, and in most cases requires setting up an account with and trusting a third-party. There are some tools that are supposed to work without doing that, but they often require messing with your router/firewall (which for me isn't an option) or they simple fail to work for mysterious reasons.
I think hello-operator will traverse most firewalls automatically and while it requires a you to use a public "switchboard", the switchboard doesn't require an account and stores no data of significance.
I have some more thinking to do about how the city-state naming could be abused, but if it becomes a problem storing it is a convenience that could be eliminated.
Once the call is connected the switchboard is out of the picture, but if you want total control you can run your own switchboard as the system requirements would be incredibly low and it could be run on the tiniest of ISP/VPS providers. The only really valuable thing it needs is a known, public IP address and port.
There is no transport security per-se, but any data transferred between the nodes is encrypted on the sending node using the "phone number" key. This key is never stored on either device, only in the caller's mind (which is why something memorable like a phone number is used). Not that privacy is the primary objective, but because the key is never stored electronically, this may be more secure than any other electronic filesharing system that (at least that I'm aware of). This also makes the switchboard simpler as it doesn't need to do the CPU-intensive work of encrypting/decrypting data and doesn't even require an SSL/TLS certificate.
Jason J. Gullickson, 2026