@nirholas/openbare
v1.0.2
Published
A decentralized, censorship-resistant web proxy network
Maintainers
Readme
🌐 OpenBare
A decentralized, censorship-resistant web proxy network
Deploy your own node in 30 seconds • Use community nodes • Browse freely
Quick Start • Deploy Your Node • Documentation • Contributing
✨ 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.devdoes not resolve while hosting is being migrated. Run your own withnpm run start:registry(see/registry) and pointregistryUrlat 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 deployYou'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 \
openbareNODE_URL is required when NODE_ENV=production (the image default); the server refuses
to start without it.
Manual Deployment
cd server
npm install
npm startSee 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/errorSee .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
- Architecture - How OpenBare works
- Self-Hosting - Deployment guide
- API Reference - Full API documentation
- Client Usage - Client library guide
🤝 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 testAreas 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
- TompHTTP - Bare Server protocol
- Ultraviolet - Web proxy framework
- Titanium Network - Proxy community
Made with ❤️ by the OpenBare community
Documentation
Full documentation site: https://nirholas.github.io/openbare/
- Getting started covers install and first run.
- Examples has copy-paste snippets.
