moukrea / cairn-p2p
cairn P2P connectivity library for PHP
v0.3.0
2026-03-29 12:51 UTC
Requires
- php: >=8.2
- ext-gmp: *
- ext-openssl: *
- ext-sodium: *
- endroid/qr-code: ^5.0
- evenement/evenement: ^3.0
- ramsey/uuid: ^4.7
- react/dns: ^1.12
- react/event-loop: ^1.4
- react/socket: ^1.15
Requires (Dev)
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^11.0
- squizlabs/php_codesniffer: ^3.9
- symfony/yaml: ^6.0
README
PHP implementation of the cairn P2P connectivity library.
Installation
composer require moukrea/cairn-p2p
Requirements
- PHP 8.2+
- Extensions: sodium, openssl, gmp
- ReactPHP event loop for long-running daemon operation
Quick Start
<?php use Cairn\CairnNode; use React\EventLoop\Loop; $loop = Loop::get(); $node = CairnNode::create($loop); $peer = $node->pairWithPin('123456'); $peer->send('hello'); $loop->run();
API Overview
CairnNode-- Main entry point, manages identity, sessions, and discoverySession-- Persistent encrypted session with a peerPeerIdentity-- Ed25519 identity with Peer ID derivationCairnConfig-- Configuration with tier presets
Key Dependencies
ext-sodium-- ChaCha20-Poly1305, X25519, Ristretto255ext-openssl-- AES-256-GCMreact/event-loop-- Async event loopreact/socket-- TCP transportramsey/uuid-- UUID v7 generationendroid/qr-code-- QR code pairing
Note on PHP
PHP's request/response execution model requires a long-running daemon process (via ReactPHP) for persistent P2P connections. The event loop must be running for transport I/O, heartbeat timers, and reconnection to function.
License
Licensed under the MIT License.