Skip to main content

Katacomb VPN

A desktop client for the Sentinel decentralized VPN network. Pick a node anywhere in the world, pay for a session on-chain, and Katacomb brings up the tunnel on WireGuard, AmneziaWG, OpenVPN, V2Ray, XRAY or Hysteria2, whichever that node speaks. No accounts, no subscription to a single provider: bandwidth is bought directly from independent node operators with a wallet you hold the keys to.

  • Linux x86_64
  • v1.3.0
  • GPL-3.0
  • Electron · React · TypeScript

A look inside

Katacomb VPN map view: a 3D globe beside a country list with node counts
Map: a 3D globe with per-country node counts, and the live network size in the corner.
Katacomb VPN node table listing country, city, moniker, protocol and price
Nodes: the whole network in one sortable table, with per-GB and per-hour prices.
Katacomb VPN multi-hop view showing entry and exit node selection
Multi-hop: pick an entry and an exit. Only nodes that can actually be chained are offered.

What it does

Everything runs locally against the chain. There is no Trinity Stake server in the path.

Map and node table
A 3D globe with per-country counts, plus a virtualized table over the whole network. Filter by country, city, protocol or bookmarks, sort on any column, and probe latency or test download speed before you spend anything.
Multi-hop
Chain two nodes so the entry sees your IP but not where you go, and the exit sees where you go but not your IP. Candidates are checked against each node's advertised inbounds before anything is paid for, and the two hops can be paid from separate wallets.
Kill switch
iptables rules that drop everything outside the tunnel, armed on connect and torn down on disconnect. A self-healing marker repairs stranded rules if the app dies mid-connection.
DNS and split tunneling
Choose a resolver (Cloudflare, Quad9, NextDNS) applied on connect; on the V2Ray-family protocols queries go out over DoH, so the node can't read them. CIDR routes bypass the tunnel, with private ranges excluded by default.
Wallet
BIP-39 import or generate, multiple wallets, subaccounts at a chosen index. Seeds are encrypted at rest with the OS keyring, and if the keyring is unavailable, saving is refused rather than falling back to plaintext.
Provider mode
The other side of the network: register a provider, create and activate plans, lease nodes and read subscriber counts off the chain. An economics strip tracks daily burn, escrowed funds and revenue net of the hub's cut.

Protocols

Each node runs exactly one. The client connects to all six and refuses only nodes advertising an unknown type.

ProtocolInterfaceHow it runsNotes
WireGuardsntl0root (wg-quick)Uses the distro wireguard-tools
V2Raysntl-tunuserspace + tun2socksBundled core; encrypted DNS over DoH
OpenVPNsntl-ovpnroot (openvpn)The node's PKI issues the client cert
XRAYsntl-tunuserspace + tun2socksVLESS + Reality; bundled core
AmneziaWGsntl0root (awg-quick)WireGuard fork with DPI-evasion params
Hysteria2sntl-tunuserspace + tun2socksQUIC; refuses to connect without a TLS pin

Multi-hop chains only work on V2Ray and XRAY. The mechanism is v2ray-core's proxySettings.tag, which the other protocols have no equivalent for. Bundled binaries are SHA-256 pinned; both the app and the root daemon refuse to execute one whose hash doesn't match.

Download

Verify what you downloaded

Every release ships a SHA256SUMS covering both artifacts. Put it next to the download and check it:

sha256sum -c SHA256SUMS --ignore-missing

A checksum on its own only proves the file arrived intact. Anyone who can replace the download can replace the checksums with it. It means something when the checksums reach you from somewhere the binaries don't, which is the point of listing the signing key on this page rather than only on the release:

gpg --verify SHA256SUMS.asc SHA256SUMS

Signing key740A F267 B0D8 162B E477 779D 7315 246A 6E67 F3C6

Before you install

  • Linux x86_64 only. There is no Windows, macOS or mobile build.
  • Connecting spends real funds. A session is a blockchain transaction priced in udvpn and paid to the node operator. Failures on the client side are refunded automatically; a session you actually used is not. A multi-hop chain is two sessions and two deposits.
  • Wallet storage needs an OS keyring. GNOME and KDE ship one; on a bare XFCE or LXQt install, add gnome-keyring. A missing keyring means saving a wallet is refused outright rather than silently falling back to weak encryption.
  • On Ubuntu 24.04+, prefer the .deb. With unprivileged user namespaces restricted, the AppImage starts with Chromium's sandbox disabled. The .deb installs the AppArmor profile that keeps it on.

Security model

The design assumption worth stating plainly: node operators are treated as adversaries. Their handshake data turns into configs that wg-quick, openvpn and iptables execute as root, and a single PostUp line in a WireGuard config is a root shell. So every node-supplied config passes an allow-list validator first, and anything not explicitly permitted is rejected, including every OpenVPN directive that can run a script. The privileged helper re-validates independently, because its socket is the real trust boundary, and the renderer runs sandboxed with context isolation and no Node access.

Payment order matters too: preflight checks run before the session is paid for, and a failure during the handshake or validation cancels the session and refunds it.

What multi-hop does not do. It protects against one dishonest node: with two hops, neither end holds both your identity and your destinations. It does not make you anonymous. Two operators working together can still correlate the circuit on traffic volume and timing, since the same bytes cross both hops at the same moments. That is a hard ceiling, not something a client can close.

The full model, including the invariants that must not regress, is in the repository.