Autonomous Agent Framework for NodeJS
Agent-H, the little sister of EizaOS, is a lightweight and modular framework that enables the management of multiple AI assistants. While inspired by the EizaOS project, This framework is designed to be more modular, extensible, and easier to use and scale. As a younger sibling in the AI agent family, Agent-H builds upon the foundation laid by ElizaOS, offering a fresh approach to autonomous agent frameworks with a focus on simplicity and blockchain integration.
Agent-H represents a sophisticated autonomous agent framework designed for NodeJS, offering an innovative approach to AI assistant management with seamless blockchain integration. Emerging as the younger sibling of ElizaOS, this framework distinguishes itself through its modular architecture and advanced capabilities. The core of Agent-H is built around a robust service that leverages OpenAI's powerful language models to create intelligent and responsive assistants.
At its heart, the framework enables dynamic creation and management of multiple AI agents, each capable of executing complex tasks through sophisticated tool handling and inter-agent communication. The system supports creating threads, sending messages, and managing conversations with remarkable flexibility. What sets Agent-H apart is its intelligent agent delegation mechanism, where different assistants can collaborate and execute tools across the ecosystem, creating a more interconnected and powerful AI environment.
The framework's design emphasizes extensibility and ease of use, allowing developers to quickly configure new assistants by defining their specific instructions, tools, and behaviors through simple configuration files. Its advanced run management system ensures robust error handling, tool execution, and seamless interaction between agents. By integrating logging, dynamic tool management, and a flexible architecture, Agent-H provides developers with a powerful toolkit for building sophisticated, context-aware AI applications that can adapt and scale according to project requirements.
Unleash the power of intelligent, autonomous agents in the decentralized world with Agent H!
- π€ IA Assistant manager: Orchestrate and manage multiple AI agent
- π¦ Minimal Design: Streamlined architecture for efficient operation
- π οΈ Highly extensible: Create your own tools and agents assistant
- π Direct blockchain interactions: Provide default tools for EVM Blockchain interactions
- π Secure and private API server Endpoint: Include a NestJS server that expost Agent to HTTP Request
- π₯ Desktop and Mobile PWA UI: Include UI for desktop Electron App & Angular Progressive Web Application
- π Easily configure & run: Only one programming language & configuration based on yml file or with UI
- π Ready to use and deploy Download, install, setup & deploy in less than 5 minutes
- OpenIA API Key (required)
- Node.js 20+ (non-required using Desktop App packaged with Electron)
git clone https://github.com/hexaonelabs/ia-agent-h
cd ia-agent-h
cp .env.example .env
npm install
- open
.env
file and add your OpenAI API Key, Twitter credentials and other configuration that you want to use. - Provide the seed phrase or privateKey of the wallet that you want to use to interact with the blockchain. This wallet will be used to sign transactions and interact with the blockchain.
- open
characters/agent-h.yml
file and edit the character name, description and other details. This file provide configurations for the main orchestrator agent. Do not remove this file. - add, edit or remove assistant with character file. Each character file will be loaded to generate an assistant based on the configuration provided in the file.
Some agent are designed to execute a specific task or to handle a specific type of request. To define an agent with controller, just provide Ctrl: agents/{AGENT_CTRL}.agent
to the file configuration yml. You can create your own agent controller by creating a new file inside src/agents
directory and export a Object with a start()
function that will be called to run dedicated logic.
Add, edit or remove tools with file inside tools/{TOOL_FILE}.yml
directory. Each tool file will be loaded to generate a tool based on the configuration provided in the file. The tool have an Handler
property that should be the name of the file inside src/tools
directory that will be used to handle the tool logic.
You can create your own tools by creating a new file inside src/tools
directory and export a function that will be called when the tool is used. The function should return data that will be send to the main agent to generate a response to the user.
npm run serve:server
npm run start:server
or you can use pm2
to run the server in background. Ensure that you have pm2
installed globally on your machine before running the command below.
npm run start:pm2
Note: The server will be running on localhost:3000
by default. You can change the port by editing the .env
file. You have multiples auther build in srcipts that you can use to manage the server, lint the code, run test and more. Check the package.json
file for more information.
npm run serve:pwa
Note: The browser ui will be running on localhost:4200
by default. You can change the port by editing the angular.json
file.
npm run build:pwa
npm run start:desktop
Note: The desktop ui application will be running on your machine. You can change the config by editing the electron-builder.json
file.
npm run make:desktop
Note: The desktop ui application will be build in the dist/packages
directory. You can change the config by editing the electron-builder.json
file.
Contributions are welcome and appreciated. To contribute to this project, please fork the repository, create a new branch and submit a pull request. For major changes, please open an issue first to discuss what you would like to change.
You can find more information about contributing to this project in the CONTRIBUTING.md file.
This project is open-source and distributed under the MIT License. See LICENSE for more information.
This project is developed by HexaOne Labs, a team that trust in the power of blockchain technology and decentralized finance (DeFi) to build a better world.
If you like this project, please consider supporting it by giving a βοΈ on Github and sharing it with your friends!