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
- Integration - Integrate with third-party services
- Memory Tree - Local knowledge base
- Local AI - Privacy-first local processing