An open API service indexing awesome lists of open source software.

https://github.com/eiondb/eion

Shared Memory Storage for Multi-Agent Systems
https://github.com/eiondb/eion

a2a agent-memory agentic-ai ai ai-agents database distributed-intelligenet-agents intelligent-networks knowledge-graph llm mcp mcp-server memory memory-layer multiagent-systems neo4j open-source postgres saas vector-database

Last synced: about 2 months ago
JSON representation

Shared Memory Storage for Multi-Agent Systems

Awesome Lists containing this project

README

          


Eion Logo
Eion Logo

Eion



*Connecting AI agents through shared memory and collaborative intelligence.*

![Version](https://img.shields.io/badge/Version-v0.1.4-green)
[![License: AGPL v3](https://img.shields.io/badge/License-AGPL_v3-blue.svg)](https://www.gnu.org/licenses/agpl-3.0)

[![Discord](https://img.shields.io/badge/Discord-7289DA?style=flat-square&logo=discord&logoColor=white)](https://discord.gg/mMNckGYVbq)

Eion Demo

 

**Eion** is a shared memory storage that provides unified knowledge graph capabilities for multi-agent systems, adapting to different AI deployment scenarios from single LLM applications to complex multi-agency systems.

### 1. LLM Application
```
User ↔ LLM Application → Eion (context storage)
```

### 2. AI Agent Application
```
Business Logic ↔ AI Agent → Eion (memory + knowledge graph)
```

### 3. Agency (Multi-Agent) Systems
#### 3a. Sequential Agency
```
Agent A → context → Agent B → context → Agent C
↓ ↓ ↓
Eion ← shared memory & knowledge → Eion
```
#### 3b. Concurrent Live Agency (WIP)
```
Agent A ──┐
├── shared live context ← Eion (live sync + notifications)
Agent B ──┤

Agent C ──┘
```

### 4. External Guest Agent Access
```
Internal Agency: Agent A ↔ Agent B → Eion ← External Agent C (guest)

(controlled access)
```

## Quick Start

### Prerequisites

- **Docker & Docker Compose**: For PostgreSQL and Neo4j
- **Go 1.21+**: For the Eion server
- **Python 3.13+**: For knowledge extraction services

### 1. Clone and Setup

```bash
git clone
cd eion
```

### 2. Start Database Services

```bash
# Start all required databases (PostgreSQL + Neo4j)
docker-compose up -d

# Verify databases are ready
docker-compose ps
```

### 3. Setup Database Extensions and Tables

```bash
# Enable the pgvector extension (required for embeddings)
docker exec eion_postgres psql -U eion -d eion -c "CREATE EXTENSION IF NOT EXISTS vector;"

# Run main orchestrator migrations (includes sessions table)
docker exec -i eion_postgres psql -U eion -d eion < database_setup.sql
```

### 4. Install Python Dependencies

```bash
# Create virtual environment
python3 -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate

# Install dependencies
pip install -r requirements.txt
```

### 5. Build and Run Eion Server

```bash
# Build the server
go build -o eion-server ./cmd/eion-server

# Run the server
./eion-server
```

### 6. Verify Setup

```bash
# Check server health
curl http://localhost:8080/health

# Expected response:
# {"status":"healthy","timestamp":"2024-12-19T10:30:00Z","services":{"database":"healthy","embedding":"healthy"}}
```

### 7. Access the Register Console

Navigate to the Register Console for easy cluster management:

```
http://localhost:8080/console/
```

**⚠️ Important**: Include the trailing slash `/` in the URL.

#### Console Features

**Agent Registration Tab:**
- Simple form-based agent registration with automatic ID generation
- Support for different permission levels (read, read-write, full CRUD)
- Real-time registration status feedback
- View all registered agents in a table

**Monitoring Tab:**
- Real-time agent status and system monitoring
- View active sessions and users (coming soon)
- Refresh functionality for live updates

**Resources Tab:**
- Copy-paste ready HTTP API examples with your current configuration
- MCP integration snippets (when MCP is enabled)
- Quick start guide for developers
- Copy-to-clipboard functionality for easy integration

#### Using the Console

1. **Register an Agent:**
- Go to "Register Agents" tab
- Fill in name, description, and permissions
- Click "Register Agent"
- Agent appears in the table below

2. **Monitor Activity:**
- Switch to "Monitoring" tab
- View agent status and system health
- Use refresh button for updates

3. **Get Integration Examples:**
- Visit "Resources" tab
- Copy HTTP API examples with your server details
- Use MCP configuration if MCP is enabled

#### Configuration Display

The console automatically shows:
- Cluster API key for authentication
- Server host and port
- MCP and Numa integration status
- Neo4j connection details (when enabled)

#### Styling

The console uses Eion's brand colors:
- **Navy Blue** background with **Cream** text
- Responsive design for desktop and mobile
- Consistent with the main Eion website styling

## Architecture

Eion provides a unified API that combines:

- **Memory Storage**: PostgreSQL with pgvector for conversation history and semantic search
- **Knowledge Graph**: Neo4j with in-house extraction for temporal knowledge storage
- **Real Embeddings**: `all-MiniLM-L6-v2` model (384 dimensions) using sentence-transformers - production-ready embeddings
- **Knowledge Extraction**: In-house extraction service for entity/relationship extraction

## MCP Server Integration

Eion includes a built-in **Model Context Protocol (MCP) Server** that enables seamless agent integration through standardized tool interfaces.

### What MCP Provides

The MCP server exposes Eion's Session-level API as MCP tools, allowing AI agents to:
- Store and retrieve conversation memories
- Perform semantic search across stored conversations
- Create and manage knowledge entries
- Search through extracted knowledge graphs

### Available MCP Tools

**Memory Tools (4):**
- `get_memory` - Retrieve conversation history with filters
- `add_memory` - Store new conversation messages
- `search_memory` - Semantic search in conversation history
- `delete_memory` - Remove conversation data

**Knowledge Tools (4):**
- `search_knowledge` - Find relevant extracted knowledge
- `create_knowledge` - Add new knowledge entries
- `update_knowledge` - Modify existing knowledge
- `delete_knowledge` - Remove knowledge entries

### Agent Integration

**Direct MCP Client (Recommended):**
```python
from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client

# Connect to Eion MCP server
server_params = StdioServerParameters(
command="python",
args=["-m", "internal.mcp.server"],
env={"EION_BASE_URL": "http://localhost:8080"}
)

async with stdio_client(server_params) as (read, write):
async with ClientSession(read, write) as session:
await session.initialize()

# Use tools with agent credentials
result = await session.call_tool("add_memory", {
"session_id": "agent_session_123",
"agent_id": "my_registered_agent",
"user_id": "end_user_456",
"messages": [{"role": "user", "content": "Hello!"}]
})
```

**LangChain Integration:**
```python
from langchain_mcp_tools import convert_mcp_to_langchain_tools

mcp_servers = {
"eion": {
"command": "python",
"args": ["-m", "internal.mcp.server"],
"env": {"EION_BASE_URL": "http://localhost:8080"}
}
}

tools, cleanup = await convert_mcp_to_langchain_tools(mcp_servers)
# Use tools with LangChain agents
```

**Claude Desktop Integration:**
Add to `claude_desktop_config.json`:
```json
{
"mcpServers": {
"eion": {
"command": "python",
"args": ["-m", "internal.mcp.server"],
"env": {"EION_BASE_URL": "http://localhost:8080"},
"cwd": "/path/to/eion"
}
}
}
```

### Authentication

All MCP tools require agent authentication:
- `session_id` - Unique session identifier for the conversation
- `agent_id` - Registered agent ID (obtain via Developer API)
- `user_id` - End user ID that the agent serves

Agents must be registered via the Developer API before using MCP tools:
```bash
curl -X POST http://localhost:8080/cluster/v1/agents \
-H "Content-Type: application/json" \
-d '{"name": "My Agent", "capabilities": ["memory", "knowledge"]}'
```

### MCP Configuration

MCP server settings in `eion.yaml`:
```yaml
mcp:
enabled: true # Enable MCP server
port: 8081 # MCP server port
python_path: ".venv/bin/python" # Python executable path
log_level: "INFO" # Logging level
timeout: 30 # Request timeout (seconds)
```

The MCP server is embedded within the Eion server process and requires no separate deployment.

## Configuration

Create `eion.yaml` (optional - defaults work out of the box):

```yaml
common:
http:
host: "0.0.0.0"
port: 8080

postgres:
user: "eion"
password: "eion_pass"
host: "localhost"
port: 5432
database: "eion"

# Neo4j Configuration (Required)
numa:
neo4j:
uri: "bolt://localhost:7687"
username: "neo4j"
password: "password"
database: "neo4j"

# MCP Server Configuration (Optional)
mcp:
enabled: true # Enable MCP server
port: 8081 # MCP server port
python_path: ".venv/bin/python" # Path to Python executable
log_level: "INFO" # MCP server log level
timeout: 30 # Request timeout in seconds

# Register Console Configuration (Optional)
console:
enabled: true # Enable Register Console (default: true)
```

## Additional Configuration

For production deployments, you may want to customize the database settings in `docker-compose.yml` or create your own configuration.

Or use the automated setup script:

```bash
# One-command setup (includes database startup, Python env, and server build)
./setup.sh

# Then start the server
./eion-server
```
---


Eion Logo
Eion Logo