Skip to content

holepunchto/pear-docs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Pear by Holepunch

Pear loads applications remotely from peers and allows anyone to create and share applications with peers.

Pear is an installable Peer-to-Peer (P2P) Runtime, Development & Deployment platform.

Build, share & extend unstoppable, zero-infrastructure P2P applications for Mobile, Desktop & Terminal.

Welcome to the Internet of Peers

  – Holepunch, the P2P Company

Documentation

Showcase

Peer-to-Peer applications built on, deployed with, running on Pear.

Encrypted peer-to-peer message, audio & video chat Secure peer-to-peer password & secrets manager      
Keet PearPass      

Terms

  • API - Application-Programming-Interface
  • CLI - Command-Line-Interface
  • link - a pear:// link, a file:// link or an absolute/relative dir path
  • P2P - Peer-to-Peer

Legend

Throughout the documentation, indications of stability are provided. Some modules are well-established and used widely, making them highly unlikely to ever change. Other modules may be new, experimental, or known to have risks associated with their use.

The following stability indices have been used:

Stability Description
stable Unlikely to change or be removed in the foreseeable future
experimental New, untested, or has known issues
deprecated Being removed or replaced in the future
unstable May change or be removed without warning

Reference

Pear is a native point-to-point peer-to-peer capable platform that consists of a runtime binary, an API, userland modules, a command-line interface, an on-demand daemon and an application shell to provide the capabilities to develop & deploy production P2P applications. With JavaScript and beyond.

Pear's runtime binary is built on Bare, a small and modular JavaScript runtime for desktop and mobile. Like Node.js, it provides an asynchronous, event-driven architecture for writing applications in the lingua franca of modern software. Unlike Node.js, embedding and cross-device are supported as core use cases, aiming to run just as well on mobile as desktop.

Examples

Guides

Guides on using Pear Runtime to build and share peer-to-peer applications.

How-tos

Collection of How-tos using the essential peer-to-peer building-blocks in Pear applications.

Pear Modules

The Pear global API is minimal and not intended as a standard library. Application & Integration libraries are supplied via installable modules prefixed with pear-.

Application Libraries

Pear modules related directly to application environment.

Module Description Systems     Stability
pear-crasher Uncaught exceptions & uncaught rejections crash logger
stable
pear-message Send inter-app pattern-matched object messages
stable
pear-messages Receive object messages that match a given object pattern
stable
pear-pipe Parent-app-connected pipe, the other end of pear-run pipe
stable
pear-run Run Pear child app by link. Returns a pipe to the child pipe
stable
pear-updates Receive platform and application update notifications
stable
pear-user-dirs Get the path of user-specific directories
stable
pear-wakeups Receive wakeup events, including link clicks external to app
stable

User Interface Libraries

Pear modules that supply User Interface runtime capabilities.

Module Description Systems     Stability
pear-electron Pear User-Interface Library for Electron
stable
pear-bridge Local HTTP bridge for pear-electron applications
stable

Common Libraries

Pear modules for general usage, including applications per case.

Module Description Systems     Stability
pear-drop Drop data, including application reset
stable
pear-dump Synchronize files from link to dir peer-to-peer or from-disk
stable
pear-gracedown Pear graceful closer. For use with pipe.autoexit = false
stable
pear-info Read Pear project information by link
stable
pear-link Parser-Serializer for pear:// links. Includes alias resolution
stable
pear-opwait Pear operation stream promise wrapper
stable
pear-release Set application production release version length
stable
pear-seed Seed or reseed a Pear app drive by link
stable
pear-stage Synchronize from-disk to app drive peer-to-peer
stable
pear-stamp Interleave locals into a template, sync and stream
stable

Developer Libraries

Pear modules to assist with developing & debugging

Module Description Systems     Stability
pear-inspect Securely enable remote debugging protocol over Hyperswarm
stable
pear-hotmods For pear-electron UI apps. Frontend framework-agnostic live-reload
stable

Integration Libraries

Pear modules for runtime integrations. Such as pear-electron.

Module Description Systems     Stability
pear-appdrive Read-only Hyperdrive API subset interface for application drives
stable
pear-aliases List of aliases for pear://<alias> links
stable
pear-api global.Pear API class
stable
pear-changelog Changelog parsing and diffing
stable
pear-constants Shared Pear constants
stable
pear-cmd Command parser & definitions
stable
pear-errors Shared Pear error types
stable
pear-gunk Shared builtins, overrides & linker mappings
unstable
pear-ipc Interprocess Communication library
stable
pear-ref IO handle reference counter & tracker
stable
pear-rti Runtime Information state bootstrap for API building
stable
pear-state Shared state structure & capabilities
stable
pear-terminal Terminal User Interface library
stable
pear-tryboot Used with pear-ipc, tries to boot sidecar on connect failure
stable

P2P Modules

Modules that supply point-to-point peer-to-peer connection and storage capabilities.

Building-Block Libraries

The essential building-blocks for building powerful P2P applications using Pear.

Name Description Systems     Stability
hypercore A distributed, secure append-only log for creating fast, scalable P2P applications
stable
hyperbee An append-only B-tree running on a Hypercore. Allows sorted iteration and more
stable
hyperdrive A secure, real-time, efficient distributed P2P file-system
stable
autobase A "virtual Hypercore" layer over many Hypercores owned by many different peers
stable
hyperdht The Distributed Hash Table (DHT) powering Hyperswarm
stable
hyperswarm A high-level API for finding and connecting to peers by topic
stable

Helper Libraries

Helper modules can be used together with the building-blocks to create cutting-edge P2P tools and application-modules.

Name Description Systems     Stability
corestore A Hypercore factory that simplifies managing Hypercore collections
stable
localdrive A file system interoperable with Hyperdrive
stable
mirror-drive Mirror between a Hyperdrive and/or Localdrive
stable
@hyperswarm/secret-stream Securely create connections between peers in a Hyperswarm
stable
compact-encoding Binary encoding schemes for efficient parser-serializers.
stable
protomux Multiplex multiple message oriented protocols over a stream
stable

Bare Modules

Pear's native runtime is Bare. The Bare global API is minimal and not intended as a standard library. Standard runtime functionality is provided via installable modules. prefixed with bare-.

Module Description Systems     Stability
bare-abort Cause abnormal program termination and generate a crash report
stable
bare-ansi-escapes Parse and produce ANSI escape sequences
stable
bare-assert Assertion library for JavaScript
stable
bare-atomics Native synchronization primitives for JavaScript
stable
bare-buffer Native buffers for JavaScript
stable
bare-bundle Application bundle format for JavaScript
stable
bare-channel Inter-thread messaging for JavaScript
stable
bare-console WHATWG debugging console for JavaScript
stable
bare-crypto Cryptographic primitives for JavaScript
stable
bare-daemon Create and manage daemon processes in JavaScript
stable
bare-dgram Native UDP for JavaScript
stable
bare-dns Domain name resolution for JavaScript
stable
bare-encoding WHATWG text encoding interfaces for JavaScript
stable
bare-env Environment variable support for JavaScript
stable
bare-events Event emitters for JavaScript
stable
bare-fetch WHATWG Fetch implementation for Bare
stable
bare-form-data Form data support for Bare
stable
bare-format String formatting for JavaScript
stable
bare-fs Native file system for JavaScript
stable
bare-hrtime High-resolution timers for JavaScript
stable
bare-http1 HTTP/1 library for JavaScript
stable
bare-https HTTPS library for JavaScript
stable
bare-inspect Inspect objects as strings for debugging
stable
bare-inspector V8 inspector support for Bare
stable
bare-ipc Lightweight pipe-based IPC for Bare
stable
bare-logger Low-level logger for Bare with system log integration
stable
bare-module Module support for JavaScript
stable
bare-os Operating system utilities for JavaScript
stable
bare-pack Bundle packing for Bare
stable
bare-path Path manipulation library for JavaScript
stable
bare-performance Performance monitoring for Bare
stable
bare-pipe Native I/O pipes for JavaScript
stable
bare-queue-microtask Microtask queuing for Bare
stable
bare-readline Line editing for interactive CLIs with command history
stable
bare-realm Realm support for Bare
stable
bare-repl Read-Evaluate-Print-Loop environment for JavaScript
stable
bare-rpc https://github.com/holepunchto/librpc ABI compatible RPC for Bare
stable
bare-semver Minimal semantic versioning library for Bare
stable
bare-signals Native signal handling for JavaScript
stable
bare-stream Streaming data for JavaScript
stable
bare-structured-clone Structured cloning algorithm for JavaScript
stable
bare-subprocess Native process spawning for JavaScript
stable
bare-tcp Native TCP sockets for JavaScript
stable
bare-timers Native timers for JavaScript
stable
bare-tls Transport Layer Security (TLS) streams for JavaScript
stable
bare-tty Native TTY streams for JavaScript
stable
bare-type Cross-realm type predicates for Bare
stable
bare-unpack Bundle unpacking for Bare
stable
bare-url WHATWG URL implementation for JavaScript
stable
bare-worker Higher-level worker threads for JavaScript
stable
bare-ws WebSocket library for JavaScript
stable
bare-zlib Stream-based zlib bindings for JavaScript
stable
bare-zmq Low-level ZeroMQ bindings for JavaScript
stable

Compatibility modules for Node.js builtins in Bare can be found in bare-node.

Tools

Beyond the Pear CLI these ecosystem P2P CLI tools are additionally useful for day-to-day development and operations.

Name Description Systems     Stability
Hypershell A CLI to create and connect to P2P E2E encrypted shells
stable
Hypertele A swiss-knife proxy powered by hyperdht
stable
Hyperbeam A one-to-one and end-to-end encrypted internet pipe
stable
Hyperssh A CLI to run SSH over the DHT.
stable
Drives CLI that interacts with hyperdrive & localdrive
stable

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published