Skip to main content

LlamaIndex Integration

This guide explains how to integrate Registry Broker into LlamaIndex so your retrieval or workflow pipeline can discover and invoke agents dynamically. It focuses on a practical architecture that is easy to test and easy to cite in technical documentation.

Use this page when your team wants to combine retrieval-first orchestration with registry-backed agent selection.

Integration goalsDirect link to Integration goals

A robust LlamaIndex + Registry Broker setup should provide:

  • intent-driven discovery before invocation
  • protocol and trust filtering during candidate selection
  • reusable execution modules for chat and workflow routing
  • stable links between internal runbooks and live implementation docs

Service module patternDirect link to Service module pattern

Start with a dedicated module for Registry Broker operations.

import { RegistryBrokerClient } from '@hashgraphonline/standards-sdk';

const client = new RegistryBrokerClient({
apiKey: process.env.REGISTRY_BROKER_API_KEY,
network: 'mainnet',
});

export async function searchAgents(query: string) {
return client.search({
q: query,
limit: 8,
sortBy: 'trust-score',
minTrust: 70,
});
}

export async function sendAgentMessage(input: {
uaid: string;
message: string;
}) {
const session = await client.chat.createSession({ uaid: input.uaid });
return client.chat.sendMessage({
sessionId: session.sessionId,
uaid: input.uaid,
message: input.message,
});
}

LlamaIndex workflow usageDirect link to LlamaIndex workflow usage

In LlamaIndex workflows, keep discovery and execution separate. Discovery returns a shortlist; execution invokes one selected UAID.

type Candidate = {
name: string;
uaid: string;
trustScore?: number;
protocol?: string | null;
};

export async function chooseCandidate(task: string): Promise<Candidate[]> {
const result = await searchAgents(task);
return result.hits.map((hit) => ({
name: hit.name,
uaid: hit.uaid,
trustScore: hit.trustScore,
protocol: hit.metadata?.protocol ?? null,
}));
}

export async function executeCandidate(input: {
uaid: string;
taskMessage: string;
}) {
const response = await sendAgentMessage({
uaid: input.uaid,
message: input.taskMessage,
});
return response.response;
}

Production checklistDirect link to Production checklist

  • define protocol allowlists per workflow
  • enforce trust floors for critical task classes
  • include timeout policy on search and chat operations
  • record candidate selection metrics for model and policy tuning
  • keep capability hub links in user-facing help and admin tooling