npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@nirholas/openbare

v1.0.2

Published

A decentralized, censorship-resistant web proxy network

Readme

🌐 OpenBare

A decentralized, censorship-resistant web proxy network

Node.js Cloudflare Workers

Deploy your own node in 30 secondsUse community nodesBrowse freely

Quick StartDeploy Your NodeDocumentationContributing


✨ Features

  • 👀 Instant Setup - Deploy to Cloudflare Workers in 30 seconds
  • 🌍 Decentralized - Community-run nodes across the globe
  • Edge Performance - Cloudflare Workers for <50ms latency worldwide
  • 🔄 Automatic Failover - Client seamlessly switches between nodes
  • 📊 Built-in Monitoring - Health checks, metrics, and status dashboard
  • 🔒 Production Ready - Rate limiting, security headers, graceful shutdown
  • 🤝 UV Compatible - Works with Ultraviolet and other TompHTTP clients

🏗️ Architecture

┌─────────────────────────────────────────────────────────────────────────┐
│                            YOUR APPLICATION                             │
│                    (SperaxOS, Ultraviolet, etc.)                        │
└─────────────────────────────────────────────────────────────────────────┘
                                    │
                                    ▼
┌─────────────────────────────────────────────────────────────────────────┐
│                         OPENBARE CLIENT                                 │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐                      │
│  │ Server Pool │──│  Failover   │──│  Discovery  │                      │
│  │  Manager    │  │   Logic     │  │   Client    │                      │
│  └─────────────┘  └─────────────┘  └─────────────┘                      │
└─────────────────────────────────────────────────────────────────────────┘
                                    │
                    ┌───────────────┼───────────────┐
                    ▼               ▼               ▼
            ┌───────────┐   ┌───────────┐   ┌───────────┐
            │  Node 1   │   │  Node 2   │   │  Node 3   │
            │  (US)     │   │  (EU)     │   │  (Asia)   │
            │  Vercel   │   │ Cloudflare│   │  Railway  │
            └───────────┘   └───────────┘   └───────────┘
                    │               │               │
                    └───────────────┼───────────────┘
                                    ▼
                    ┌───────────────────────────────┐
                    │      OPENBARE REGISTRY        │
                    │   (Optional - Node Discovery) │
                    └───────────────────────────────┘

🚀 Quick Start

Option 1: Point the Client at a Registry

The client can auto-discover nodes from a registry. @openbare/client is a workspace package in this repo and is not published to npm, so import it from a clone (npm install at the repo root links every workspace).

No public registry is currently hosted: registry.openbare.dev does not resolve while hosting is being migrated. Run your own with npm run start:registry (see /registry) and point registryUrl at it, or skip discovery and list nodes explicitly as shown below.

import { OpenBareClient } from '@openbare/client';

// With your own registry (autoDiscover is off by default)
const client = new OpenBareClient({
  registryUrl: 'http://localhost:3000',
  autoDiscover: true
});

// Or without a registry, using an explicit node list
const direct = new OpenBareClient({
  servers: ['https://openbare.xyz/bare/']
});

// Fetch any URL through the proxy network
const response = await direct.fetch('https://example.com');

Option 2: Run Locally

# Clone the repo
git clone https://github.com/nirholas/openbare.git
cd openbare

# Start the server
cd server
npm install
npm start

# Server running at http://localhost:8080
# Bare endpoint at http://localhost:8080/bare/

Option 3: Deploy Your Own (see below)


🌐 Deploy Your Own Node

Recommended: Cloudflare Workers

| Platform | Deploy | Best For | |----------|--------|----------| | Cloudflare Workers ⭐ | Deploy to Workers → | Global edge, WebSocket support, free tier | | Render | render.com | Persistent servers, easy setup | | Fly.io | fly.io | Global, WebSocket support | | Self-hosted | Docker → | Full control |

⚠️ Note: Vercel and Railway don't work well for proxy servers (serverless limitations / banned dependencies).

Cloudflare Workers (Recommended)

Deploy to 300+ edge locations worldwide with WebSocket support:

cd edge
npm install
npx wrangler login
npx wrangler deploy

You'll get a URL like: https://openbare-edge.YOUR_SUBDOMAIN.workers.dev

Live Example: https://openbare.xyz

Docker

No prebuilt image is published yet, so build it from server/Dockerfile:

docker build -t openbare ./server
docker run -d \
  -p 8080:8080 \
  -e NODE_ID=my-node \
  -e REGION=us-east \
  -e NODE_URL=https://your-public-url.example \
  openbare

NODE_URL is required when NODE_ENV=production (the image default); the server refuses to start without it.

Manual Deployment

cd server
npm install
npm start

See Self-Hosting Guide for detailed instructions.


📦 Components

| Package | Description | Location | |---------|-------------|----------| | @openbare/server | Node.js bare server with metrics | /server | | @openbare/client | Client library with failover | /client | | @openbare/edge | Cloudflare Workers server | /edge | | @openbare/registry | Node discovery service | /registry |


🔧 Configuration

Environment Variables

# Node Identification
NODE_ID=my-bare-node          # Unique node ID
REGION=us-east                # Geographic region
NODE_URL=https://example.com  # Public URL

# Rate Limiting
RATE_LIMIT_MAX=100            # Requests per minute
RATE_LIMIT_WINDOW_MS=60000    # Window size

# Registry (Optional)
REGISTRY_URL=http://localhost:3000  # your own registry; no public one is hosted

# Logging
LOG_LEVEL=info                # trace/debug/info/warn/error

See .env.example for all options.


📊 API Endpoints

Every OpenBare node exposes these endpoints:

| Endpoint | Method | Description | |----------|--------|-------------| | / | GET | Server info and status | | /bare/ | * | Bare Server protocol | | /health | GET | Health check (for load balancers) | | /status | GET | Detailed metrics | | /info | GET | Node information |

Example Response: GET /

{
  "status": "ok",
  "name": "OpenBare Server",
  "version": "1.0.0",
  "node_id": "us-east-abc123",
  "region": "us-east",
  "uptime_seconds": 86400,
  "requests_served": 150000,
  "healthy": true,
  "bare_endpoint": "/bare/"
}

📖 Documentation


🤝 Contributing

We welcome contributions! See CONTRIBUTING.md for guidelines.

Development Setup

# Clone the repo
git clone https://github.com/nirholas/openbare.git
cd openbare

# Install all workspace dependencies
npm install

# Start server in dev mode
npm run dev:server

# Run tests
npm test

Areas for Contribution

  • 🌍 Run a public node
  • 🐛 Report bugs
  • 💡 Suggest features
  • 📝 Improve documentation
  • 🔧 Submit PRs

🔒 Security

OpenBare is designed with security in mind:

  • Rate limiting prevents abuse
  • Helmet.js sets security headers
  • No logging of proxied content
  • Registry validation prevents malicious nodes

Report security issues to: [email protected]


📄 License

Proprietary - Copyright 2026 nirholas. All rights reserved. See the LICENSE file for the full terms.


🙏 Acknowledgments


⬆ Back to Top

Made with ❤️ by the OpenBare community

Documentation

Full documentation site: https://nirholas.github.io/openbare/