openbot
v0.4.0
Published
<p align="center"> <picture> <source media="(prefers-color-scheme: dark)" srcset="logo-white.svg"> <img src="logo-black.svg" width="200" alt="OpenBot Logo" /> </picture> </p>
Readme
OpenBot is a local-first harness for running AI agents. It is built around a small event API, local file storage, and a Melony-powered runtime that routes events to agents and plugins.
What It Does
- Runs a local agent server.
- Stores channels, threads, agents, plugins, config, and variables under
~/.openbot. - Ships with a built-in
systemagent named OpenBot (orchestrator, includes the LLM runtime). - Ships with a built-in
stateagent for deterministic, non-LLM handling (e.g./api/statedefaults). - Loads custom agents from
~/.openbot/agents/<agent-id>/AGENT.md. - Loads shared plugins from
~/.openbot/plugins. - Streams events to clients with Server-Sent Events.
Quick Start
Requires Node.js >=20.12.0.
npm i -g openbot
openbot startThe server listens on http://localhost:4132 by default. Set a different port with:
openbot start --port 3000For local development:
npm install
npm run devAPI
OpenBot intentionally keeps the public API small:
GET /api/eventsopens an SSE stream for a channel or thread.POST /api/publishpublishes an event into the harness (defaults to the built-insystemagent with the OpenBot / LLM runtime).GET /api/stateruns an event and returns the resulting events without opening a stream (defaults to the built-instateagent: storage-oriented plugins, no LLM).
You can override the agent with agentId (header, query, or body where applicable).
Example:
curl -X POST http://localhost:4132/api/publish \
-H "content-type: application/json" \
-d '{"type":"agent:invoke","data":{"role":"user","content":"hello"}}'Useful context can be passed as headers, query params, or body fields:
channelIdthreadIdagentIdrunId
Configuration
OpenBot reads config from ~/.openbot/config.json.
{
"port": 4132,
"baseDir": "~/.openbot",
"model": "openai/gpt-4o-mini"
}Variables are read from ~/.openbot/variables.json and applied to the server process environment on startup.
Agents
The built-in system agent is always available. Add a custom agent by creating ~/.openbot/agents/<agent-id>/AGENT.md:
---
name: Researcher
description: Helps collect and summarize information.
plugins:
- id: openbot
config:
model: openai/gpt-4o-mini
- id: storage
---
You are a careful research assistant.
Summarize findings clearly and cite sources when available.Agents are discovered from disk when the server starts.
Plugins
Built-in plugins include:
storage-toolsdelegationopenbot
Shared plugins can be placed in ~/.openbot/plugins and referenced by agents.
Project Layout
src/app: CLI, server, event types, and app config.src/harness: orchestration and process helpers.src/plugins: built-in plugin implementations.src/services: local storage service.src/registry: plugin registry.docs: architecture, agents, and plugin notes.
Learn More
Need help or want to share feedback? Join the community on Discord: https://discord.gg/XYYXvN2ebB
