Skip to main content

Advanced Features

This guide dives deep into OpenHuman's advanced features to help you fully leverage your agent's capabilities.

Multi-modal Interaction

Image Processing

const response = await client.agents.run(agent.id, {
message: 'Describe this image',
attachments: [
{
type: 'image',
url: 'https://example.com/image.jpg',
},
],
});

File Processing

const response = await client.agents.run(agent.id, {
message: 'Summarize this PDF',
attachments: [
{
type: 'file',
name: 'report.pdf',
url: 'https://example.com/report.pdf',
},
],
});

Local AI

Run AI models on your machine, keeping data private:

[local_ai]
enabled = true
provider = "ollama" # or "lm_studio"
ollama_url = "http://localhost:11434"
embedding_model = "all-minilm:latest"
memory_model = "gemma3:1b-it-qat"

Three presets available:

  • Embeddings Only - Local vector computation
  • Memory + Reflection - Local processing of memory and reflection
  • Fully Local - All workloads run locally

Custom Tools

Register an HTTP Request Tool

const httpTool = await client.tools.register({
name: 'http-request',
description: 'Send an HTTP request',
parameters: {
type: 'object',
properties: {
url: { type: 'string' },
method: { type: 'string', enum: ['GET', 'POST'] },
},
},
execute: async ({ url, method }) => {
const response = await fetch(url, { method });
return await response.json();
},
});

Register a Database Tool

const dbTool = await client.tools.register({
name: 'query-db',
description: 'Query a database',
parameters: {
type: 'object',
properties: {
sql: { type: 'string' },
},
},
execute: async ({ sql }) => {
const result = await db.query(sql);
return result;
},
});

Agent Chain Invocation

const chain = await client.chains.create({
name: 'Research Writing Chain',
steps: [
{
type: 'agent',
agentId: researchAgent.id,
prompt: 'Research topics related to {{input}}',
},
{
type: 'agent',
agentId: writerAgent.id,
prompt: 'Write an article based on the following research: {{previous}}',
},
],
});

const result = await client.chains.run(chain.id, {
input: 'Trends in AI Agent Development',
});

Remote Core

Deploy the Rust core on a remote server and connect via RPC:

[core]
mode = "remote"
rpc_url = "https://your-core.example/rpc"
token = "your-core-token"

Ideal for teams sharing the same core instance, or accessing from different network environments.

Webhook Callbacks

await client.agents.update(agent.id, {
webhook: {
url: 'https://your-server.com/webhook',
events: ['onComplete', 'onError'],
},
});

Next Steps