Core

module
v0.0.8 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 12, 2026 License: LGPL-3.0

README ยถ

Uqda Core ๐ŸŒ

Build status Go Version License Go Report

Uqda (Arabic: ุนูู‚ูŽุฏ โ€” nodes/knots) โ€” A fully encrypted, self-organizing IPv6 mesh network. No center. No owner. No single point of failure.


๐Ÿ“‹ Table of Contents


๐Ÿค” How Does It Work?

Imagine the internet, but without any company controlling it.

In a normal network, your traffic goes through servers owned by corporations. In Uqda, every device is a node โ€” and nodes talk directly to each other.

Normal Internet:          Uqda Network:

You โ†’ Company โ†’ Friend    You โ†โ€”โ€”โ†’ Friend
      (they see           (direct, encrypted,
       everything)         no middleman)

Your identity is your key. When you join Uqda, a unique cryptographic key is generated for you. Your IPv6 address is mathematically derived from that key โ€” so your address belongs to you, not to any registrar or ISP.

Your Key โ†’ Your Address: 205:xxxx:xxxx:xxxx:...

No one can take it away. No one can reassign it.


โœจ What Makes Uqda Different?

Feature Traditional VPN Uqda
๐Ÿข Central server Required Not needed
๐Ÿ”’ Encryption Usually yes Always, end-to-end
๐Ÿ“ Your address Assigned by provider Derived from your key
๐ŸŒ Routing Through one server Across all nodes
๐Ÿ’€ Single point of failure Yes No
๐Ÿ’ฐ Cost Often paid Free & open source
๐Ÿš€ Unique Capabilities
Capability Why it matters
7 peer transports: TCP, TLS, QUIC, WebSocket, WSS, SOCKS5, UNIX Works through any network โ€” firewalls, proxies, CDNs, Tor
WSS (WebSocket Secure) peering Hides mesh traffic as HTTPS โ€” bypasses restrictive networks
SOCKS5 + Tor support Peer through anonymity networks
Fully decentralized No coordination server, no lighthouse, no single point of failure
Self-sovereign identity Your IPv6 address comes from your Ed25519 key โ€” no one can take it
No installation needed Single binary, no kernel modules, no dependencies
Go embeddable API Import as a library in your Go applications
8 platforms supported Linux, macOS, Windows, FreeBSD, OpenBSD, Android, iOS, Docker

๐Ÿš€ Quick Start (1 Minute)

Install
curl -sfL https://raw.githubusercontent.com/Uqda/Core/main/scripts/install.sh | sh

One command โ€” downloads, installs, configures, and starts your node.

Add a peer
sudo uqdactl addPeer uri=tls://jed-peer.ygg.sy.sa:8442
Check your node
sudo uqdactl getSelf

๐ŸŽฎ All Commands

Command What it does Example
install Install or update scripts/uqda-manage.sh install
start Start the node scripts/uqda-manage.sh start
stop Stop the node scripts/uqda-manage.sh stop
restart Restart the node scripts/uqda-manage.sh restart
status Check everything scripts/uqda-manage.sh status
info Show node details scripts/uqda-manage.sh info
peer add <uri> Add a peer scripts/uqda-manage.sh peer add tls://...
peer list List peers scripts/uqda-manage.sh peer list
peer remove <uri> Remove a peer scripts/uqda-manage.sh peer remove tls://...
logs View logs scripts/uqda-manage.sh logs -f
update Update to latest scripts/uqda-manage.sh update
uninstall Remove completely scripts/uqda-manage.sh uninstall

๐Ÿ–ฅ๏ธ uqdactl Commands

Command What it does
uqdactl getSelf Your address, key, uptime, peers
uqdactl summary Colored node overview
uqdactl stats Full network statistics
uqdactl getPeers All connected peers
uqdactl getTree Network spanning tree
uqdactl getSessions Active encrypted sessions
uqdactl addPeer uri=... Add a peer on-the-fly
uqdactl removePeer uri=... Remove a peer
uqdactl list All available commands

๐Ÿ› ๏ธ Control Your Node

uqdactl is your command-line tool for managing a running node.

Command What it does
uqdactl getSelf Your address, key, and routing info
uqdactl getPeers All connected peers and their stats
uqdactl getTree The network spanning tree
uqdactl getSessions Active encrypted sessions
uqdactl addPeer uri=... Add a peer without restarting
uqdactl removePeer uri=... Remove a peer
uqdactl list All available commands

๐Ÿ“ฆ Installation

Pre-built packages
Platform Package
๐Ÿง Debian / Ubuntu .deb
๐ŸชŸ Windows .msi
๐ŸŽ macOS .pkg
๐Ÿ”ง EdgeOS / VyOS .deb (router)

All packages are published automatically on every release.

Build from source

Requires Go 1.24+

git clone https://github.com/Uqda/Core
cd Core
./build

Produces uqda and uqdactl in the project root.


๐Ÿ“š Documentation

Concepts
Guide Description
About Uqda How the mesh works, design goals
Configuration All config options explained
Configuration reference Quick reference table
Advanced peerings Tor, multi-homed, priorities
Private two-node network Closed network between two people
Hosting on Uqda Run a website inside the mesh
Mesh DNS Set up DNS for your network
Key rotation What to do if your key leaks
FAQ Common questions
Installation guides
Platform Guide
๐Ÿง Linux Manual build
๐ŸŽ macOS Manual ยท .pkg installer
๐ŸชŸ Windows Installer
๐Ÿ“ฆ Debian / Ubuntu Package
๐Ÿ“ฆ Fedora / RHEL Package
๐Ÿ”ง OpenWrt Guide
๐Ÿ”ง EdgeOS / VyOS Guide
๐Ÿ˜ˆ FreeBSD Guide
๐Ÿ‰ Gentoo Guide

๐Ÿ” Security Notes

  • ๐Ÿ”‘ Keep your private key secret โ€” it is your identity on the network
  • ๐Ÿงฑ Use a firewall โ€” any node on the mesh can attempt to reach your services
  • ๐Ÿšซ Uqda does not provide anonymity โ€” your peers can see your real IP address
  • ๐Ÿ”Œ The admin socket has no authentication โ€” never expose it to untrusted networks

๐Ÿค Contributing

We welcome contributions! See:

Help us grow: Star the repo, share with friends, and open issues/PRs!

โš–๏ธ License

Licensed under GNU LGPLv3 with a library linking exception. See LICENSE for the full text.

Directories ยถ

Path Synopsis
cmd
genkeys command
This file generates crypto keys.
This file generates crypto keys.
uqda command
uqdactl command
contrib
ansible command
This file generates host_vars and vault key material for use with Ansible and Uqda.
This file generates host_vars and vault key material for use with Ansible and Uqda.
src
address
Package address contains the types used by Uqda to represent IPv6 addresses or prefixes, as well as functions for working with these types.
Package address contains the types used by Uqda to represent IPv6 addresses or prefixes, as well as functions for working with these types.
config
The config package contains structures related to the configuration of an Uqda node.
The config package contains structures related to the configuration of an Uqda node.
tun

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL