For over a hundred years, the telephone has been the one network we never really got to own. You rent a number from a company you didn't choose. Your calls travel through switches you can't see. Your "line" disappears the moment you stop paying. Telephony quietly stayed the most centralized network we still use every day, and honestly? That always bugged me.
So I started building OpenCarrier.Network. OCN, for short.
It's my attempt at a telephone network anyone can actually operate. Not another VoIP app that rides on somebody else's carrier. A real exchange that you run yourself, that plugs into one shared, open numbering space, where the number on your phone is something you hold instead of something you rent.
Here's the idea, in plain words. Anybody can run an exchange, which is just a server that owns a chunk of the numbering plan and serves real phone lines. Exchanges check in with a central registry, and the registry hands out area codes from a big open pool and figures out how to route calls between them. The numbers look completely normal. 440 area code on one exchange, 216 on another, and a friend across the network is still just a ten digit call away. Seven digits if they're local. Your brain already knows how to use this network. Only the plumbing underneath is new.
And the plumbing is the fun part, because none of it runs on the old telephone stack. No PSTN gateways. No SS7. No copper. When two phones talk, they connect straight to each other over WebRTC with encrypted media, and the exchange mostly stays out of the way, quietly handling the signaling and routing. Your identity is a key that lives on your device, not a SIM a carrier sold you. I call it a kSIM, because I couldn't help myself. Provisioning a new phone is literally scanning a QR code. Calls go device to device, and the voicemail and messages that do get stored sit encrypted on the server. Privacy is the default, not a feature checkbox.
The whole thing is built from small, boring pieces that I actually like maintaining. A tiny registry keeps the area codes, the routing table, the TURN relay, and push notifications. Each exchange is a Go service that looks after its own users. The server only ever touches call audio when it has to, like for conferences or recording voicemail or playing announcements. Text and voicemail are queued by the home exchange so they arrive even when the other phone is asleep or offline.
It's live right now, and it's actually federated, which still makes me grin. Two exchanges are joined: 440 on opencarrier.network and 216 on baudrate.org. A call from one genuinely routes through the registry and rings on the other. There's a softphone for Android and Linux that does all the normal phone things, caller ID with contacts, visual voicemail, text and picture messages, smart dialing. There are even network services hanging out on 800 and 900 numbers. A party line conference room. Announcement services. And the small, extremely satisfying *01 echo test and *02 number announcer, because a phone network should have little things like that to play with.
Then this week the network got a little more real. I grabbed an old Cisco ATA, the kind of box that gives a plain analog handset a second life as a VoIP phone, and I got it to register against an exchange and ring a softphone on the other end of the network. Picking up a real handset, dialing, and hearing a phone somewhere out there on my own federated network ring back is a feeling that no app has ever given me. Getting there meant writing a SIP registrar with digest auth, building a media bridge between the ATA's G.711 audio and the WebRTC world, and wrestling a home router's NAT into cooperating. It's all in the server now, and it's in the admin panel, so anyone running an exchange can provision a physical phone in a few minutes.
It's early and it's scrappy and there's plenty left to build. But the part that matters is already true: there is no choke point. Running your own exchange and owning your own area code is a normal, supported, doable thing.
If that sounds like your kind of project, come grab a number at opencarrier.network/join, or stand up your own exchange and join the numbering space. It's open source, it's exactly the kind of thing a forge exists for, and I'll be writing about the pieces as I go.