Catalog npm
Back to packageRELEASE DETAILS

0.2.15

npm

0g-serving-broker

TS SDK for 0G Compute Network

Published4 Aug 2025
Direct dependencies56
Transitive dependenciesNot calculated

README

Current package documentation

0G Compute Network SDK

Access decentralized AI computing through the 0G Compute Network - a GPU marketplace that connects developers with affordable AI inference and fine-tuning services.

Features

  • AI Inference: Run LLMs, text-to-image, and speech-to-text models
  • Fine-tuning: Customize models with your own data
  • OpenAI Compatible: Works with existing OpenAI SDK clients
  • Web UI: Built-in interface for easy service discovery and testing
  • CLI Tools: Command-line interface for automation

Requirements

  • Node.js >= 22.0.0
  • A wallet with 0G tokens

Installation

# Using pnpm (recommended)
pnpm add @0glabs/0g-serving-broker

# Using npm
npm install @0glabs/0g-serving-broker

# Using yarn
yarn add @0glabs/0g-serving-broker

# Install globally for CLI access
pnpm add @0glabs/0g-serving-broker -g

Quick Start

Web UI

The fastest way to get started:

# Launch the Web UI
0g-compute-cli ui start-web

Open http://localhost:3090 in your browser to:

  • Connect your wallet (MetaMask)
  • Browse available AI services
  • Chat with AI models directly
  • Get integration code examples

CLI

# Setup network
0g-compute-cli setup-network

# Login with your wallet
0g-compute-cli login

# Deposit funds
0g-compute-cli deposit --amount 10

# List available providers
0g-compute-cli inference list-providers

# Transfer funds to a provider
0g-compute-cli transfer-fund --provider <PROVIDER_ADDRESS> --amount 5

# Acknowledge provider before use
0g-compute-cli inference acknowledge-provider --provider <PROVIDER_ADDRESS>

# Get API secret for direct access
0g-compute-cli inference get-secret --provider <PROVIDER_ADDRESS>

# Generate API key with a specific token ID (0-254)
0g-compute-cli inference get-secret --provider <PROVIDER_ADDRESS> --token-id 5

SDK

import { ethers } from "ethers";
import { createZGComputeNetworkBroker } from "@0glabs/0g-serving-broker";

// Initialize
const provider = new ethers.JsonRpcProvider("https://evmrpc-testnet.0g.ai");
const wallet = new ethers.Wallet(process.env.PRIVATE_KEY!, provider);
const broker = await createZGComputeNetworkBroker(wallet);

// Discover services
const services = await broker.inference.listService();

// Fund your account
await broker.ledger.depositFund(10);

// Acknowledge provider
await broker.inference.acknowledgeProviderSigner(providerAddress);

// Get service metadata
const { endpoint, model } = await broker.inference.getServiceMetadata(providerAddress);

// Generate auth headers
const headers = await broker.inference.getRequestHeaders(providerAddress);

// Make request (OpenAI compatible)
const response = await fetch(`${endpoint}/chat/completions`, {
  method: "POST",
  headers: { "Content-Type": "application/json", ...headers },
  body: JSON.stringify({
    model,
    messages: [{ role: "user", content: "Hello!" }]
  })
});

Direct API Access

After obtaining a secret with 0g-compute-cli inference get-secret, use any OpenAI-compatible client:

import OpenAI from 'openai';

const client = new OpenAI({
  baseURL: `${serviceUrl}/v1/proxy`,
  apiKey: 'app-sk-<YOUR_SECRET>'
});

const completion = await client.chat.completions.create({
  model: 'model-name',
  messages: [{ role: 'user', content: 'Hello!' }]
});

Account Management

The 0G Compute Network uses a two-tier account system:

  • Main Account: Where you deposit funds from your wallet
  • Sub-Accounts: Provider-specific accounts for service payments
# Check account balance
0g-compute-cli get-account

# Deposit to main account
0g-compute-cli deposit --amount 10

# Transfer to provider sub-account
0g-compute-cli transfer-fund --provider <PROVIDER_ADDRESS> --amount 5

# Request refund from sub-accounts (24-hour lock period)
0g-compute-cli retrieve-fund

# Withdraw to wallet
0g-compute-cli refund --amount 5

Fine-tuning

Customize AI models with your own data:

# List available providers
0g-compute-cli fine-tuning list-providers

# List available models
0g-compute-cli fine-tuning list-models

# Upload your dataset
0g-compute-cli fine-tuning upload --data-path ./my-dataset

# Create fine-tuning task
0g-compute-cli fine-tuning create-task \
  --provider <PROVIDER_ADDRESS> \
  --model distilbert-base-uncased \
  --dataset <DATASET_ROOT_HASH> \
  --config-path ./config.json \
  --data-size <SIZE>

# Monitor progress
0g-compute-cli fine-tuning get-task --provider <PROVIDER_ADDRESS> --task <TASK_ID>

# Download and decrypt result
0g-compute-cli fine-tuning acknowledge-model --provider <PROVIDER_ADDRESS> --task-id <TASK_ID> --data-path ./model
0g-compute-cli fine-tuning decrypt-model --provider <PROVIDER_ADDRESS> --task-id <TASK_ID> --encrypted-model ./model --output ./model.zip

Provider Controller (For Service Providers)

Service providers can manage their deployed containers and configurations remotely using the controller CLI.

Setup

# Reset saved endpoint configuration
0g-compute-cli controller reset-controller-endpoint

Container Management

# View all container status
0g-compute-cli controller status

# Start/stop/restart specific containers
0g-compute-cli controller start --container broker
0g-compute-cli controller stop --container event
0g-compute-cli controller restart --container ingress

# Available containers: broker, event, ingress, prometheus-init, prometheus

Configuration Management

The controller manages three types of configurations:

TypeDescriptionFormat
coreBroker + Event shared configYAML
ingressNginx ingress environment variablesJSON
prometheusPrometheus monitoring configYAML (auto base64 encoded)
# Get configuration
0g-compute-cli controller get-config --type core --output config.yaml
0g-compute-cli controller get-config --type ingress
0g-compute-cli controller get-config --type prometheus --decode  # decode base64

# Update configuration
# core: updates config AND restarts broker+event
0g-compute-cli controller update-config --type core --config config.yaml

# ingress: provide JSON file with env vars
# Example env.json: {"DOMAIN": "example.com", "PORT": "443"}
0g-compute-cli controller update-config --type ingress --config env.json

# prometheus: provide YAML file (auto base64 encoded)
0g-compute-cli controller update-config --type prometheus --config prometheus.yml

Admin & Security Management

# Manage admin wallet whitelist
0g-compute-cli controller list-admins
0g-compute-cli controller add-admin --address 0x...
0g-compute-cli controller remove-admin --address 0x...

# Manage IP whitelist
0g-compute-cli controller list-ips
0g-compute-cli controller add-ip --ip 192.168.1.100
0g-compute-cli controller add-ip --ip 10.0.0.0/8  # CIDR supported
0g-compute-cli controller remove-ip --ip 192.168.1.100

Image Management

# View current image info
0g-compute-cli controller image-info

# Pull latest image and recreate broker+event containers
0g-compute-cli controller update-images

Network Configuration

NetworkRPC Endpoint
Testnethttps://evmrpc-testnet.0g.ai
Mainnethttps://evmrpc.0g.ai

Browser Usage

For browser environments, you'll need polyfills for Node.js built-in modules:

pnpm add -D vite-plugin-node-polyfills
// vite.config.js
import { nodePolyfills } from 'vite-plugin-node-polyfills';

export default {
  plugins: [
    nodePolyfills({
      include: ['crypto', 'stream', 'util', 'buffer', 'process'],
      globals: { Buffer: true, global: true, process: true }
    })
  ]
};

Troubleshooting

Insufficient Balance

# Check which account needs funds
0g-compute-cli get-account

# Deposit to main account
0g-compute-cli deposit --amount 10

# Transfer to provider
0g-compute-cli transfer-fund --provider <ADDRESS> --amount 5

Provider Not Acknowledged

0g-compute-cli inference acknowledge-provider --provider <PROVIDER_ADDRESS>

Web UI Port Conflict

0g-compute-cli ui start-web --port 3091

Documentation

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Declared dependencies 60

Native requirements
56 direct targetsNot calculated transitive count
Package / targetRequirementRelationship
util
Environment
{
  "local_name": "util",
  "alias": false,
  "peer_metadata": null
}
^0.12.5runtime
axios
Environment
{
  "local_name": "axios",
  "alias": false,
  "peer_metadata": null
}
^1.7.9runtime
chalk
Environment
{
  "local_name": "chalk",
  "alias": false,
  "peer_metadata": null
}
^5.4.1runtime
brotli
Environment
{
  "local_name": "brotli",
  "alias": false,
  "peer_metadata": null
}
^1.3.3runtime
buffer
Environment
{
  "local_name": "buffer",
  "alias": false,
  "peer_metadata": null
}
^6.0.3runtime
dotenv
Environment
{
  "local_name": "dotenv",
  "alias": false,
  "peer_metadata": null
}
16.4.7runtime
openai
Environment
{
  "local_name": "openai",
  "alias": false,
  "peer_metadata": null
}
^4.78.1runtime
adm-zip
Environment
{
  "local_name": "adm-zip",
  "alias": false,
  "peer_metadata": null
}
^0.5.16runtime
eciesjs
Environment
{
  "local_name": "eciesjs",
  "alias": false,
  "peer_metadata": null
}
^0.4.13runtime
express
Environment
{
  "local_name": "express",
  "alias": false,
  "peer_metadata": null
}
5.1.0runtime
commander
Environment
{
  "local_name": "commander",
  "alias": false,
  "peer_metadata": null
}
^13.0.0runtime
crypto-js
Environment
{
  "local_name": "crypto-js",
  "alias": false,
  "peer_metadata": null
}
^4.2.0runtime
cli-table3
Environment
{
  "local_name": "cli-table3",
  "alias": false,
  "peer_metadata": null
}
^0.6.5runtime
node-fetch
Environment
{
  "local_name": "node-fetch",
  "alias": false,
  "peer_metadata": null
}
^3.3.2runtime
@types/jest
Environment
{
  "local_name": "@types/jest",
  "alias": false,
  "peer_metadata": null
}
^29.5.4runtime
@types/node
Environment
{
  "local_name": "@types/node",
  "alias": false,
  "peer_metadata": null
}
^20.5.9runtime
circomlibjs
Environment
{
  "local_name": "circomlibjs",
  "alias": false,
  "peer_metadata": null
}
^0.1.6runtime
@types/brotli
Environment
{
  "local_name": "@types/brotli",
  "alias": false,
  "peer_metadata": null
}
^1.3.4runtime
@types/adm-zip
Environment
{
  "local_name": "@types/adm-zip",
  "alias": false,
  "peer_metadata": null
}
^0.5.7runtime
@types/express
Environment
{
  "local_name": "@types/express",
  "alias": false,
  "peer_metadata": null
}
^5.0.2runtime
@types/crypto-js
Environment
{
  "local_name": "@types/crypto-js",
  "alias": false,
  "peer_metadata": null
}
^4.2.2runtime
@types/node-fetch
Environment
{
  "local_name": "@types/node-fetch",
  "alias": false,
  "peer_metadata": null
}
^2.6.12runtime
crypto-browserify
Environment
{
  "local_name": "crypto-browserify",
  "alias": false,
  "peer_metadata": null
}
^3.12.1runtime
stream-browserify
Environment
{
  "local_name": "stream-browserify",
  "alias": false,
  "peer_metadata": null
}
^3.0.0runtime
@types/circomlibjs
Environment
{
  "local_name": "@types/circomlibjs",
  "alias": false,
  "peer_metadata": null
}
^0.1.6runtime
@ethersproject/bytes
Environment
{
  "local_name": "@ethersproject/bytes",
  "alias": false,
  "peer_metadata": null
}
^5.7.0runtime
@typechain/ethers-v6
Environment
{
  "local_name": "@typechain/ethers-v6",
  "alias": false,
  "peer_metadata": null
}
^0.5.0runtime
open-jsonrpc-provider
Environment
{
  "local_name": "open-jsonrpc-provider",
  "alias": false,
  "peer_metadata": null
}
^0.2.1runtime
@rollup/plugin-commonjs
Environment
{
  "local_name": "@rollup/plugin-commonjs",
  "alias": false,
  "peer_metadata": null
}
^28.0.1runtime
@ethersproject/keccak256
Environment
{
  "local_name": "@ethersproject/keccak256",
  "alias": false,
  "peer_metadata": null
}
^5.7.0runtime
@rollup/plugin-typescript
Environment
{
  "local_name": "@rollup/plugin-typescript",
  "alias": false,
  "peer_metadata": null
}
^12.1.1runtime
@rollup/plugin-node-resolve
Environment
{
  "local_name": "@rollup/plugin-node-resolve",
  "alias": false,
  "peer_metadata": null
}
^15.3.0runtime
rollup-plugin-polyfill-node
Environment
{
  "local_name": "rollup-plugin-polyfill-node",
  "alias": false,
  "peer_metadata": null
}
^0.13.0runtime
chai
Environment
{
  "local_name": "chai",
  "alias": false,
  "peer_metadata": null
}
^4.3.7development
jest
Environment
{
  "local_name": "jest",
  "alias": false,
  "peer_metadata": null
}
^29.6.4development
mocha
Environment
{
  "local_name": "mocha",
  "alias": false,
  "peer_metadata": null
}
^10.2.0development
sinon
Environment
{
  "local_name": "sinon",
  "alias": false,
  "peer_metadata": null
}
^19.0.2development
tslib
Environment
{
  "local_name": "tslib",
  "alias": false,
  "peer_metadata": null
}
^2.6.2development
eslint
Environment
{
  "local_name": "eslint",
  "alias": false,
  "peer_metadata": null
}
^9.30.1development
rollup
Environment
{
  "local_name": "rollup",
  "alias": false,
  "peer_metadata": null
}
^3.29.5development
globals
Environment
{
  "local_name": "globals",
  "alias": false,
  "peer_metadata": null
}
^16.3.0development
js-sha3
Environment
{
  "local_name": "js-sha3",
  "alias": false,
  "peer_metadata": null
}
^0.9.1development
ts-jest
Environment
{
  "local_name": "ts-jest",
  "alias": false,
  "peer_metadata": null
}
^29.1.1development
ts-node
Environment
{
  "local_name": "ts-node",
  "alias": false,
  "peer_metadata": null
}
^10.9.1development
typedoc
Environment
{
  "local_name": "typedoc",
  "alias": false,
  "peer_metadata": null
}
^0.26.10development
typechain
Environment
{
  "local_name": "typechain",
  "alias": false,
  "peer_metadata": null
}
^8.3.1development
uglify-js
Environment
{
  "local_name": "uglify-js",
  "alias": false,
  "peer_metadata": null
}
^3.17.4development
@eslint/js
Environment
{
  "local_name": "@eslint/js",
  "alias": false,
  "peer_metadata": null
}
^9.30.1development
typescript
Environment
{
  "local_name": "typescript",
  "alias": false,
  "peer_metadata": null
}
^5.6.2development
@types/chai
Environment
{
  "local_name": "@types/chai",
  "alias": false,
  "peer_metadata": null
}
^4.3.7development
@types/mocha
Environment
{
  "local_name": "@types/mocha",
  "alias": false,
  "peer_metadata": null
}
^10.0.1development
@types/sinon
Environment
{
  "local_name": "@types/sinon",
  "alias": false,
  "peer_metadata": null
}
^17.0.4development
rollup-plugin-dts
Environment
{
  "local_name": "rollup-plugin-dts",
  "alias": false,
  "peer_metadata": null
}
^6.1.1development
typescript-eslint
Environment
{
  "local_name": "typescript-eslint",
  "alias": false,
  "peer_metadata": null
}
^8.36.0development
@rollup/plugin-json
Environment
{
  "local_name": "@rollup/plugin-json",
  "alias": false,
  "peer_metadata": null
}
^6.1.0development
ethers
Environment
{
  "local_name": "ethers",
  "alias": false,
  "peer_metadata": null
}
6.13.1peer
crypto-js
Environment
{
  "local_name": "crypto-js",
  "alias": false,
  "peer_metadata": null
}
^4.2.0peer
circomlibjs
Environment
{
  "local_name": "circomlibjs",
  "alias": false,
  "peer_metadata": null
}
^0.1.6peer
@types/crypto-js
Environment
{
  "local_name": "@types/crypto-js",
  "alias": false,
  "peer_metadata": null
}
^4.2.2peer
@types/circomlibjs
Environment
{
  "local_name": "@types/circomlibjs",
  "alias": false,
  "peer_metadata": null
}
^0.1.6peer

Distribution files

1 collected
Distribution 1

Source distribution

Source file
Checksums from source
{
  "shasum": "f8ddd06b01c0718d895ea03e9bb08b7f8ec6b1da",
  "tarball": "https://registry.npmjs.org/0g-serving-broker/-/0g-serving-broker-0.2.15.tgz",
  "fileCount": 908,
  "integrity": "sha512-sjQC7mbEewtGRG1ezSyRsda6zhnmseP4pwogyi99hfGsgNv/XGRZASQBs4IzeahMR/IRQ9NVZ/jjcHWIx/xZBw==",
  "signatures": [
    {
      "sig": "MEQCIC5EwbBcEvUB6QWlAgGiI9KEFYM4uTZX9HwVq6Y2TpJbAiAE+9c2N+InE+MIK0gOdJrSw4StOFaeEJOhgBRAtVjr9g==",
      "keyid": "SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"
    }
  ],
  "unpackedSize": 46717469
}

Repository

PENDING
0glabs/0g-serving-user-broker

Shared repository data · GitHub

License detected in repository
Not collected

Repository

PENDING
0glabs/0g-serving-broker

Shared repository data · GitHub

License detected in repository
Not collected

Metadata history

Meaningful changes
Current collected state Current

Observed since 20 Oct, 17:40 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package_version:1ef8b71eff6733f48ae91655e030df0a2ea64cff068905b372175974fe81b0b7

Other collected versions

0.7.213 Feb0.7.113 Feb0.7.013 Feb1.0.0-beta.311 Nov1.0.0-beta.211 Nov1.0.0-beta10 NovView all collected versions →