Build AI agents with MCP, any provider, zero lock-in.
Batteries-included, framework-agnostic, fully open source.
Connect any Model Context Protocol server instantly. Thousands of community MCP servers ready to use.
Bring your own client — OpenAI, Anthropic, Gemini, Groq, Ollama, anything. No hard dependency.
HTTP fetch, JSON parse, text transform, date/time utilities — ready out of the box, zero config.
Each agent is a single .agent.json file. Share it, clone it, run it anywhere.
EventEmitter-based streaming — watch every tool call and LLM response the moment it fires.
Write custom tools as JavaScript functions. Sandboxed via VM, fully typed, infinitely flexible.
From personal assistants to production automations. Build whatever you want.
Connects to the Google Calendar MCP server. Schedules meetings, checks conflicts, and drafts emails — all via natural language.
Uses CustomProvider to hook into a WhatsApp Web bridge. Replies to customers, queries your DB, and escalates to humans automatically.
Local agent with the Filesystem & Terminal MCP servers. Debugs logs, writes scripts, and deploys code — right from your machine.
Uses the built-in HTTP fetch and JSON parse tools to pull live API data, analyze trends, and generate structured CSV reports.
From install to your first running agent.
npm install -g openforge
openforge create my-agent "A helpful assistant"
Creates a .agent.json in ~/.openforge/agents/
OPENAI_API_KEY=sk-… openforge run my-agent "hello"
Works with any AI provider — swap for Anthropic, Groq, or local Ollama.
// Or use it programmatically const { AgentBuilder } = require('openforge'); const builder = new AgentBuilder({ aiProvider: async (messages, model, tools) => { return await openai.chat.completions .create({ model, messages, tools }); }, }); await builder.initialize(); // Connect an MCP server await builder.addMcpServer('calendar', { transport: 'stdio', command: 'npx', args: ['-y', '@anthropic/mcp-google-calendar'], }); // Streaming execution const { runtime, resultPromise } = await builder.runAgentStreaming('my-agent', 'Check my calendar'); runtime.on('tool_call', ({ tool }) => console.log(`🔧 ${tool}`) );