Repository
Name: -
Description: -
Stars: -
Language: -
Last push: -
Loading live data from GitHub...
Name: -
Description: -
Stars: -
Language: -
Last push: -
Tag: -
Published: -
Assets: -
Count: -
Count: -
Read How to Use first, then Downloads. That is the fastest path to a working network and the release artifacts.
P2PNetwork is a Go/libp2p-based peer-to-peer system with three cooperating surfaces:
The network is intentionally simple at the edges and more opinionated in the middle. Bootstrap is responsible for registration and removal, peers are responsible for discovery and direct connections, and the GUI is responsible for making that runtime accessible without forcing a terminal-first workflow.
Bootstrap Service
Runs as the registry of active bootstrap nodes. It records the peer ID, multiaddr, and display name so clients can pull a fresh bootstrap list before joining the network.
Peer Runtime
Loads a local config, fetches bootstrap peers, starts libp2p, joins the discovery topic, and exposes an interactive CLI for peer inspection and ad-hoc connections.
GUI Runtime
Wraps the same networking stack in a Fyne desktop app. It can start and stop the node, shows connected peers, and keeps the app accessible for non-terminal users.
Registry API
The Python FastAPI service stores bootstrap nodes in a line-delimited registry and provides a simple read endpoint plus authenticated register and unregister routes.
That separation matters. Discovery is not the same thing as an active session, and the UI/CLI surfaces should reflect that difference instead of collapsing everything into one list.
The bootstrap binary is the anchor for initial network entry. It:
If the registry is unavailable, the bootstrap node cannot publish itself and the rest of the network has no canonical place to fetch peers from. That makes bootstrap the one component you want monitored first.
The peer binary is the everyday node. It:
config.yamlconnect, peers, discovered, and exitThis is the component that exercises the network under real use. If you are testing routing, discovery, or peer-name synchronization, this is the place to start.
The GUI wraps the same core behavior in a windowed interface. It:
The GUI is not a separate network implementation. It is a presentation layer over the same libp2p behavior, which keeps the system easier to document and debug.
The system is built around three related flows:
The practical result is that a node can learn about the network in stages. It first learns where to start, then who is available, then who is actually connected.
Configuration is deliberately small. The peer and GUI side use these fields:
port for the local listener portserver for the bootstrap registry endpointpassword for authenticated bootstrap registration and removaltopic for discovery scopename for the displayed node namelogging for debug behavior in the local runtimeThe bootstrap side keeps its own small config with the port, registry URL, password, and display name. The two files are separate because the bootstrap node plays a different role in the lifecycle.
port: 0server: https://p2p-64c70676.fastapicloud.devpassword: tehetopic: fgovname: Desklogging: falseport: 52837server: https://p2p-64c70676.fastapicloud.devpassword: tehetopic: fgovname: 2-bootstraplogging: falseThis project works best when you think about it as a small network stack rather than a single app.
The site is organized so each major question has a landing page:
If you are trying to bring the network up, start with How to Use. If you are trying to get a binary, go to Downloads. If you want the live project state, keep the panel above open and watch the release and repository data directly from GitHub.