Thanks to visit codestin.com
Credit goes to GitHub.com

Skip to content

A multi-protocol gateway for the Web using ActivityStream messages.

License

Notifications You must be signed in to change notification settings

sockethub/sockethub

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3,232 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Sockethub

Sockethub

A protocol gateway for the web.

Compliance CodeQL Release

Sockethub lets browser apps talk to IRC, XMPP, feeds, and other protocols using one ActivityStreams JSON format. Your app sends a single message shape, and Sockethub handles connections, credentials, and protocol translation.

What You Can Do

  • Send and receive chat messages (IRC, XMPP)
  • Fetch and parse feeds (RSS, Atom)
  • Generate link previews and metadata
  • Add new protocols as custom platforms

ActivityStreams In/Out

Sockethub uses ActivityStreams JSON for all platforms. Your app sends the same shape for IRC, XMPP, feeds, and more, and receives the same shape back. Only context changes.

Side-by-side Examples

ActivityStreams send/receive examples

The context selects a platform; the rest stays consistent.

About

Sockethub is a translation layer for web applications to communicate with protocols and services that are impractical to use from in-browser JavaScript. It runs server-side, keeps long-lived connections, and exposes everything as ActivityStreams JSON.

Built with modern TypeScript and powered by Bun, Sockethub is organized as a monorepo with packages for the server, client, schemas, and platforms.

Originally inspired as a sister project to RemoteStorage, and assisting in the development of unhosted and noBackend, Sockethub also fits into traditional stacks by removing protocol-specific code from the application layer.

Architecture

Sockethub runs each protocol in its own process and moves messages through Redis so browsers can talk to long-lived connections safely.

  • Main Server (packages/server/) - Socket.IO, validation, routing
  • Platform Processes - One process per protocol
  • Job Queue - Redis-backed BullMQ between server and platforms
  • Data Layer - Encrypted credentials and session state in Redis

Request Flow:

  1. Client connects via Socket.IO
  2. Message validated and routed
  3. Credentials are encrypted and stored per session in Redis
  4. Message queued to platform
  5. Platform responds via Socket.IO

For detailed architecture documentation, see Architecture.

Documentation

Capabilities

Sockethub standardizes platform actions as ActivityStreams type values. For example, an XMPP friend request can be modeled as request-friend, remove-friend, and make-friend in a consistent format.

Included Platforms

  • Feeds - RSS and Atom feed processing
  • IRC - Internet Relay Chat protocol support
  • XMPP - Extensible Messaging and Presence Protocol
  • Metadata - Link preview and metadata extraction

Build Your Own

Create a platform module that defines a schema and maps ActivityStreams verbs. Enable or disable platforms in config.json.

Quick Start

Requirements

  • Bun v1.2+
  • Redis (data layer and job queue)

CLI Install

npm install -g sockethub
sockethub --help
# Install dependencies
bun install

# Start Redis (required for data layer)
# - Docker: docker run -d -p 6379:6379 redis:alpine
# - Homebrew: brew install redis && brew services start redis

# Start dev server with examples
bun run dev

Open http://localhost:10550 for the interactive examples.

Production

bun run build
bun run start

Environment Variables

For debugging and configuration options, see the Server package documentation.

Debug logging:

DEBUG=sockethub* bun run dev

Packages

Core Infrastructure

Libraries

Platform Implementations

Example Package

Credits

Project created and maintained by Nick Jennings

Logo design by Jan-Christoph Borchardt

Sponsored by NLNET

NLNET Logo