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 🙏

© 2025 – Pkg Stats / Ryan Hefner

@hivehub/umicp-sdk

v0.3.2

Published

UMICP TypeScript/JavaScript bindings with native types and MCP-compatible tool discovery

Readme

UMICP TypeScript SDK

npm version License: MIT

TypeScript SDK for the Universal Matrix Inter-Communication Protocol (UMICP), providing high-performance communication and matrix operations for distributed systems, federated learning, and real-time applications.

Version: 0.3.0

🚀 Features

  • 🔗 Universal Communication: WebSocket-based transport with automatic reconnection
  • 🌐 Multiplexed Peer Architecture: Each peer can BOTH receive incoming connections AND connect to multiple remote peers
  • 📦 Type-Safe Envelopes: Strongly-typed message serialization and validation
  • ⚡ High Performance: Optimized matrix operations with SIMD support
  • 🔄 Federated Learning: Built-in support for ML model distribution and aggregation
  • 🛡️ Security First: Input validation, rate limiting, and error handling
  • 📊 Real-time: Low-latency communication for IoT and financial applications
  • 🧪 Well Tested: Comprehensive test suite with 100% pass rate

📦 Installation

npm install @hivellm/umicp-sdk
# or
npm install @hivellm/[email protected]

Prerequisites

  • Node.js 14+
  • TypeScript 4.5+

🏃 Quick Start

Basic Envelope Usage

import { UMICP, OperationType } from '@hivellm/umicp-sdk';

// Create a UMICP envelope
const envelope = UMICP.createEnvelope({
  from: 'client-001',
  to: 'server-001',
  operation: OperationType.DATA,
  messageId: 'msg-12345',
  capabilities: {
    'content-type': 'application/json',
    'priority': 'high',
    'max_tokens': 100,  // Native number
    'streaming': true   // Native boolean
  }
});

// Serialize for transmission
const serialized = envelope.serialize();
console.log('Serialized envelope:', serialized);

// Deserialize received data
const received = UMICP.deserializeEnvelope(serialized);
console.log('From:', received.getFrom());
console.log('Capabilities:', received.getCapabilities());

Multiplexed Peer (NEW! 🎉)

The new UMICPWebSocketPeer enables true peer-to-peer communication where each node can simultaneously accept incoming connections AND connect to multiple remote peers.

import { UMICPWebSocketPeer, Envelope, OperationType } from '@hivellm/umicp-sdk';

// Create a multiplexed peer
const peer = new UMICPWebSocketPeer({
  peerId: 'my-agent',
  
  // Server component - accepts incoming connections
  server: {
    port: 20081,
    path: '/umicp',
    compression: true
  }
});

// Setup event handlers using EventEmitter pattern
peer.on('message', async (envelope, peerConnection) => {
  console.log(`Message from ${peerConnection.id} (${peerConnection.type})`);
  
  // Respond
  const response = new Envelope({
    from: 'my-agent',
    to: envelope.getFrom(),
    operation: OperationType.ACK,
    messageId: `ack-${Date.now()}`,
    capabilities: { status: 'received' }
  });
  
  peer.sendToPeer(peerConnection.id, response);
});

peer.on('peer:connect', (peerConnection) => {
  console.log(`Peer connected: ${peerConnection.id}`);
});

peer.on('peer:disconnect', (peerConnection) => {
  console.log(`Peer disconnected: ${peerConnection.id}`);
});

peer.on('error', (error, peerConnection) => {
  console.error(`Error:`, error.message);
});

// Connect to multiple remote peers
await peer.connectToPeer('ws://localhost:20082/umicp');
await peer.connectToPeer('ws://localhost:20083/umicp');

// Send to specific peer
peer.sendToPeer('peer-id', envelope);

// Broadcast to all connected peers
peer.broadcast(envelope);

// Get statistics
const stats = peer.getStats();
console.log(`Connected peers: ${stats.totalPeers}`);
console.log(`Incoming: ${stats.incomingConnections}`);
console.log(`Outgoing: ${stats.outgoingConnections}`);

Benefits:

  • ✅ True peer-to-peer: no fixed client/server hierarchy
  • ✅ Dynamic topology: add/remove connections at runtime
  • ✅ Unified API: same code for incoming and outgoing connections
  • ✅ Flexible patterns: mesh, hub-and-spoke, pipeline, hierarchical
  • ✅ Event-driven: uses Node.js EventEmitter for flexible event handling
  • ✅ Multiple listeners: add/remove event handlers dynamically

Quick Start:

WebSocket Transport (Legacy)

import { AdvancedWebSocketTransport } from '@hivellm/umicp-sdk/transport';

// Server setup
const server = new AdvancedWebSocketTransport({
  port: 8080,
  isServer: true,
  heartbeatInterval: 5000
});

// Client setup
const client = new AdvancedWebSocketTransport({
  url: 'ws://localhost:8080',
  isServer: false,
  maxReconnectAttempts: 3
});

// Message handling
server.on('message', (envelope, connectionInfo) => {
  console.log('Received:', envelope.getCapabilities());
  
  // Echo response
  const response = UMICP.createEnvelope({
    from: 'server',
    to: envelope.getFrom(),
    operation: OperationType.ACK,
    messageId: `response-${Date.now()}`
  });
  
  server.send(response, connectionInfo.id);
});

// Start communication
await server.connect();
await client.connect();

// Send message
const message = UMICP.createEnvelope({
  from: 'client',
  to: 'server',
  operation: OperationType.DATA,
  messageId: 'hello-001',
  capabilities: { 'message': 'Hello UMICP!' }
});

await client.send(message);

Matrix Operations

import { Matrix } from '@hivellm/umicp-sdk';

// Create matrix instance
const matrix = new Matrix();

// Vector operations
const vector1 = new Float32Array([1, 2, 3, 4]);
const vector2 = new Float32Array([5, 6, 7, 8]);
const result = new Float32Array(4);

// Vector addition
matrix.vectorAdd(vector1, vector2, result);
console.log('Addition result:', result); // [6, 8, 10, 12]

// Dot product
const dotProduct = matrix.dotProduct(vector1, vector2);
console.log('Dot product:', dotProduct); // 70

// Matrix multiplication
const matrixA = new Float32Array([1, 2, 3, 4]); // 2x2 matrix
const matrixB = new Float32Array([5, 6, 7, 8]); // 2x2 matrix
const matrixResult = new Float32Array(4);

matrix.matrixMultiply(matrixA, matrixB, 2, 2, 2, matrixResult);
console.log('Matrix multiplication:', matrixResult);

🧪 Testing

Run Core Tests (v0.2.2)

npm test  # Runs 64 core tests (100% pass)

Core Test Suite (no native addon required):

  • ✅ Envelope tests (22 tests) - Message creation, serialization, validation
  • ✅ HTTP Transport tests (19 tests) - Streamable HTTP, peer connections
  • ✅ Custom Endpoint tests (23 tests) - Vectorizer compatibility

Run All Tests (requires native addon)

npm run test:all  # Includes matrix and load tests

Additional Tests (require C++ native addon):

  • Matrix operations (SIMD-optimized)
  • Load/stress tests
  • Security tests

Test Results (v0.2.2)

  • Core Suite: 64/64 tests passing (100%)
  • Test Duration: ~3.7 seconds
  • Coverage: Envelope, HTTP Transport, Custom Endpoints

📚 API Reference

Core Classes

UMICP

Static utility class for envelope operations.

// Create envelope
UMICP.createEnvelope(options: EnvelopeOptions): Envelope

// Serialize envelope
UMICP.serializeEnvelope(envelope: Envelope): string

// Deserialize envelope
UMICP.deserializeEnvelope(json: string): Envelope

Envelope

Message container with metadata and capabilities.

envelope.setFrom(from: string): Envelope
envelope.setTo(to: string): Envelope
envelope.setOperation(op: OperationType): Envelope
envelope.setMessageId(id: string): Envelope
envelope.setCapabilities(caps: Record<string, any>): Envelope

envelope.getFrom(): string
envelope.getTo(): string
envelope.getOperation(): OperationType
envelope.getMessageId(): string
envelope.getCapabilities(): Record<string, any>

envelope.serialize(): string
envelope.validate(): boolean
envelope.getHash(): string

AdvancedWebSocketTransport

High-performance WebSocket transport with connection management.

// Configuration
interface WebSocketConfig {
  url?: string;           // Client connection URL
  port?: number;          // Server port
  isServer: boolean;      // Server or client mode
  heartbeatInterval?: number;
  maxReconnectAttempts?: number;
  perMessageDeflate?: boolean;
  maxPayload?: number;
}

// Methods
transport.connect(): Promise<boolean>
transport.disconnect(): Promise<boolean>
transport.send(message: string | object, targetId?: string): boolean
transport.isConnected(): boolean
transport.getStats(): TransportStats

// Events
transport.on('connected', () => {})
transport.on('disconnected', (code, reason) => {})
transport.on('message', (message, connectionInfo) => {})
transport.on('error', (error) => {})

Operation Types

enum OperationType {
  DATA = 0,      // Regular data message
  CONTROL = 1,   // Control/management message
  ACK = 2,       // Acknowledgment
  ERROR = 3,     // Error message
  REQUEST = 4,   // Request message
  RESPONSE = 5   // Response message
}

🎯 Use Cases

Federated Learning

// Model weight distribution
const weightsEnvelope = UMICP.createEnvelope({
  from: 'coordinator',
  to: 'worker-001',
  operation: OperationType.DATA,
  messageId: `weights-${Date.now()}`,
  capabilities: {
    'model-version': '1.0',
    'layer-count': '12',
    'weights': JSON.stringify(modelWeights)
  }
});

await transport.send(weightsEnvelope);

IoT Data Streaming

// Sensor data collection
const sensorData = UMICP.createEnvelope({
  from: 'sensor-temp-001',
  to: 'data-collector',
  operation: OperationType.DATA,
  messageId: `temp-${Date.now()}`,
  capabilities: {
    'sensor-type': 'temperature',
    'value': temperature.toString(),
    'unit': 'celsius',
    'timestamp': Date.now().toString()
  }
});

await transport.send(sensorData);

Financial Transactions

// Transaction processing
const transaction = UMICP.createEnvelope({
  from: 'payment-gateway',
  to: 'transaction-processor',
  operation: OperationType.REQUEST,
  messageId: `txn-${transactionId}`,
  capabilities: {
    'amount': amount.toString(),
    'currency': 'USD',
    'merchant-id': merchantId,
    'customer-id': customerId
  }
});

await transport.send(transaction);

🔧 Configuration

Environment Variables

# WebSocket configuration
UMICP_WS_PORT=8080
UMICP_WS_HOST=localhost
UMICP_WS_MAX_PAYLOAD=1048576

# Performance tuning
UMICP_HEARTBEAT_INTERVAL=5000
UMICP_MAX_RECONNECT_ATTEMPTS=3
UMICP_CONNECTION_TIMEOUT=10000

TypeScript Configuration

{
  "compilerOptions": {
    "target": "ES2020",
    "module": "commonjs",
    "lib": ["ES2020"],
    "strict": true,
    "esModuleInterop": true,
    "skipLibCheck": true
  }
}

📈 Performance

Benchmarks

  • Envelope Creation: ~1ms per envelope
  • Serialization: ~8ms for complex envelopes
  • WebSocket Connection: <100ms establishment
  • Message Throughput: 1000+ messages/second
  • Matrix Operations: SIMD-optimized performance

Memory Usage

  • Envelope Overhead: ~200 bytes per envelope
  • Connection Overhead: ~50KB per WebSocket connection
  • Matrix Operations: Efficient memory allocation with cleanup

🛠️ Development

Build from Source

git clone https://github.com/hivellm/umicp.git
cd umicp/bindings/typescript
npm install
npm run build

Development Scripts

npm run dev           # Development mode with watch
npm run build         # Production build (TypeScript only)
npm run build:native  # Build C++ native addon (optional)
npm run test          # Run core tests (64 tests)
npm run test:all      # Run all tests (requires native addon)
npm run test:watch    # Watch mode testing
npm run lint          # Code linting
npm run docs         # Generate documentation