{"id":29267651,"url":"https://github.com/eiondb/eion","last_synced_at":"2025-08-18T16:06:39.454Z","repository":{"id":300898357,"uuid":"1005801649","full_name":"eiondb/eion","owner":"eiondb","description":"Shared Memory Storage for Multi-Agent Systems","archived":false,"fork":false,"pushed_at":"2025-07-02T15:26:47.000Z","size":23981,"stargazers_count":88,"open_issues_count":0,"forks_count":6,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-07-02T16:37:04.785Z","etag":null,"topics":["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"],"latest_commit_sha":null,"homepage":"https://www.eiondb.com/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/eiondb.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-20T21:05:00.000Z","updated_at":"2025-07-02T15:26:50.000Z","dependencies_parsed_at":null,"dependency_job_id":"e0e27973-9984-40df-a32a-b457253e3a32","html_url":"https://github.com/eiondb/eion","commit_stats":null,"previous_names":["eiondb/eion"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/eiondb/eion","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eiondb%2Feion","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eiondb%2Feion/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eiondb%2Feion/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eiondb%2Feion/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eiondb","download_url":"https://codeload.github.com/eiondb/eion/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eiondb%2Feion/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271019493,"owners_count":24685694,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-18T02:00:08.743Z","response_time":89,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["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"],"created_at":"2025-07-04T18:11:15.813Z","updated_at":"2025-08-18T16:06:39.431Z","avatar_url":"https://github.com/eiondb.png","language":"Go","funding_links":[],"categories":["📚 Projects (1974 total)","Go","カテゴリ"],"sub_categories":["MCP Servers","💬 \u003ca name=\"communication\"\u003e\u003c/a\u003eコミュニケーション"],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"assets/eion-navy.png#gh-light-mode-only\" alt=\"Eion Logo\" width=\"200\" height=\"200\"\u003e\n  \u003cimg src=\"assets/eion-cream.png#gh-dark-mode-only\" alt=\"Eion Logo\" width=\"200\" height=\"200\"\u003e\n  \n  \u003ch1 style=\"border-bottom: none; margin-bottom: 0;\"\u003eEion\u003c/h1\u003e\n  \n  *Connecting AI agents through shared memory and collaborative intelligence.*\n\n  ![Version](https://img.shields.io/badge/Version-v0.1.4-green)\n  [![License: AGPL v3](https://img.shields.io/badge/License-AGPL_v3-blue.svg)](https://www.gnu.org/licenses/agpl-3.0)\n  \n  [![Discord](https://img.shields.io/badge/Discord-7289DA?style=flat-square\u0026logo=discord\u0026logoColor=white)](https://discord.gg/mMNckGYVbq)\n\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n\u003cimg src=\"assets/eion-demo.gif\" alt=\"Eion Demo\" width=\"90%\" /\u003e\n\n\u003c/div\u003e\n\n\u0026nbsp;\n\n**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.\n\n### 1. LLM Application\n```\nUser ↔ LLM Application → Eion (context storage)\n```\n\n### 2. AI Agent Application  \n```\nBusiness Logic ↔ AI Agent → Eion (memory + knowledge graph)\n```\n\n### 3. Agency (Multi-Agent) Systems\n#### 3a. Sequential Agency\n```\nAgent A → context → Agent B → context → Agent C\n                ↓              ↓              ↓\n              Eion ← shared memory \u0026 knowledge → Eion\n```\n#### 3b. Concurrent Live Agency (WIP)\n```\nAgent A ──┐\n          ├── shared live context ← Eion (live sync + notifications)\nAgent B ──┤\n          │\nAgent C ──┘\n```\n\n### 4. External Guest Agent Access\n```\nInternal Agency: Agent A ↔ Agent B → Eion ← External Agent C (guest)\n                                            ↑\n                                    (controlled access)\n```\n\n## Quick Start\n\n### Prerequisites\n\n- **Docker \u0026 Docker Compose**: For PostgreSQL and Neo4j\n- **Go 1.21+**: For the Eion server\n- **Python 3.13+**: For knowledge extraction services\n\n### 1. Clone and Setup\n\n```bash\ngit clone \u003crepo\u003e\ncd eion\n```\n\n### 2. Start Database Services\n\n```bash\n# Start all required databases (PostgreSQL + Neo4j)\ndocker-compose up -d\n\n# Verify databases are ready\ndocker-compose ps\n```\n\n### 3. Setup Database Extensions and Tables\n\n```bash\n# Enable the pgvector extension (required for embeddings)\ndocker exec eion_postgres psql -U eion -d eion -c \"CREATE EXTENSION IF NOT EXISTS vector;\"\n\n# Run main orchestrator migrations (includes sessions table)\ndocker exec -i eion_postgres psql -U eion -d eion \u003c database_setup.sql\n```\n\n### 4. Install Python Dependencies\n\n```bash\n# Create virtual environment\npython3 -m venv .venv\nsource .venv/bin/activate  # On Windows: .venv\\Scripts\\activate\n\n# Install dependencies\npip install -r requirements.txt\n```\n\n### 5. Build and Run Eion Server\n\n```bash\n# Build the server\ngo build -o eion-server ./cmd/eion-server\n\n# Run the server\n./eion-server\n```\n\n### 6. Verify Setup\n\n```bash\n# Check server health\ncurl http://localhost:8080/health\n\n# Expected response:\n# {\"status\":\"healthy\",\"timestamp\":\"2024-12-19T10:30:00Z\",\"services\":{\"database\":\"healthy\",\"embedding\":\"healthy\"}}\n```\n\n### 7. Access the Register Console\n\nNavigate to the Register Console for easy cluster management:\n\n```\nhttp://localhost:8080/console/\n```\n\n**⚠️ Important**: Include the trailing slash `/` in the URL.\n\n#### Console Features\n\n**Agent Registration Tab:**\n- Simple form-based agent registration with automatic ID generation\n- Support for different permission levels (read, read-write, full CRUD)\n- Real-time registration status feedback\n- View all registered agents in a table\n\n**Monitoring Tab:**\n- Real-time agent status and system monitoring\n- View active sessions and users (coming soon)\n- Refresh functionality for live updates\n\n**Resources Tab:**\n- Copy-paste ready HTTP API examples with your current configuration\n- MCP integration snippets (when MCP is enabled)\n- Quick start guide for developers\n- Copy-to-clipboard functionality for easy integration\n\n#### Using the Console\n\n1. **Register an Agent:**\n   - Go to \"Register Agents\" tab\n   - Fill in name, description, and permissions\n   - Click \"Register Agent\"\n   - Agent appears in the table below\n\n2. **Monitor Activity:**\n   - Switch to \"Monitoring\" tab\n   - View agent status and system health\n   - Use refresh button for updates\n\n3. **Get Integration Examples:**\n   - Visit \"Resources\" tab\n   - Copy HTTP API examples with your server details\n   - Use MCP configuration if MCP is enabled\n\n#### Configuration Display\n\nThe console automatically shows:\n- Cluster API key for authentication\n- Server host and port\n- MCP and Numa integration status\n- Neo4j connection details (when enabled)\n\n#### Styling\n\nThe console uses Eion's brand colors:\n- **Navy Blue** background with **Cream** text\n- Responsive design for desktop and mobile\n- Consistent with the main Eion website styling\n\n## Architecture\n\nEion provides a unified API that combines:\n\n- **Memory Storage**: PostgreSQL with pgvector for conversation history and semantic search\n- **Knowledge Graph**: Neo4j with in-house extraction for temporal knowledge storage\n- **Real Embeddings**: `all-MiniLM-L6-v2` model (384 dimensions) using sentence-transformers - production-ready embeddings\n- **Knowledge Extraction**: In-house extraction service for entity/relationship extraction\n\n## MCP Server Integration\n\nEion includes a built-in **Model Context Protocol (MCP) Server** that enables seamless agent integration through standardized tool interfaces.\n\n### What MCP Provides\n\nThe MCP server exposes Eion's Session-level API as MCP tools, allowing AI agents to:\n- Store and retrieve conversation memories\n- Perform semantic search across stored conversations  \n- Create and manage knowledge entries\n- Search through extracted knowledge graphs\n\n### Available MCP Tools\n\n**Memory Tools (4):**\n- `get_memory` - Retrieve conversation history with filters\n- `add_memory` - Store new conversation messages\n- `search_memory` - Semantic search in conversation history\n- `delete_memory` - Remove conversation data\n\n**Knowledge Tools (4):**\n- `search_knowledge` - Find relevant extracted knowledge\n- `create_knowledge` - Add new knowledge entries\n- `update_knowledge` - Modify existing knowledge\n- `delete_knowledge` - Remove knowledge entries\n\n### Agent Integration\n\n**Direct MCP Client (Recommended):**\n```python\nfrom mcp import ClientSession, StdioServerParameters\nfrom mcp.client.stdio import stdio_client\n\n# Connect to Eion MCP server\nserver_params = StdioServerParameters(\n    command=\"python\",\n    args=[\"-m\", \"internal.mcp.server\"],\n    env={\"EION_BASE_URL\": \"http://localhost:8080\"}\n)\n\nasync with stdio_client(server_params) as (read, write):\n    async with ClientSession(read, write) as session:\n        await session.initialize()\n        \n        # Use tools with agent credentials\n        result = await session.call_tool(\"add_memory\", {\n            \"session_id\": \"agent_session_123\",\n            \"agent_id\": \"my_registered_agent\",\n            \"user_id\": \"end_user_456\",\n            \"messages\": [{\"role\": \"user\", \"content\": \"Hello!\"}]\n        })\n```\n\n**LangChain Integration:**\n```python\nfrom langchain_mcp_tools import convert_mcp_to_langchain_tools\n\nmcp_servers = {\n    \"eion\": {\n        \"command\": \"python\", \n        \"args\": [\"-m\", \"internal.mcp.server\"],\n        \"env\": {\"EION_BASE_URL\": \"http://localhost:8080\"}\n    }\n}\n\ntools, cleanup = await convert_mcp_to_langchain_tools(mcp_servers)\n# Use tools with LangChain agents\n```\n\n**Claude Desktop Integration:**\nAdd to `claude_desktop_config.json`:\n```json\n{\n  \"mcpServers\": {\n    \"eion\": {\n      \"command\": \"python\",\n      \"args\": [\"-m\", \"internal.mcp.server\"],\n      \"env\": {\"EION_BASE_URL\": \"http://localhost:8080\"},\n      \"cwd\": \"/path/to/eion\"\n    }\n  }\n}\n```\n\n### Authentication\n\nAll MCP tools require agent authentication:\n- `session_id` - Unique session identifier for the conversation\n- `agent_id` - Registered agent ID (obtain via Developer API)\n- `user_id` - End user ID that the agent serves\n\nAgents must be registered via the Developer API before using MCP tools:\n```bash\ncurl -X POST http://localhost:8080/cluster/v1/agents \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"name\": \"My Agent\", \"capabilities\": [\"memory\", \"knowledge\"]}'\n```\n\n### MCP Configuration\n\nMCP server settings in `eion.yaml`:\n```yaml\nmcp:\n  enabled: true                     # Enable MCP server\n  port: 8081                        # MCP server port  \n  python_path: \".venv/bin/python\"   # Python executable path\n  log_level: \"INFO\"                 # Logging level\n  timeout: 30                       # Request timeout (seconds)\n```\n\nThe MCP server is embedded within the Eion server process and requires no separate deployment.\n\n## Configuration\n\nCreate `eion.yaml` (optional - defaults work out of the box):\n\n```yaml\ncommon:\n  http:\n    host: \"0.0.0.0\"\n    port: 8080\n  \n  postgres:\n    user: \"eion\"\n    password: \"eion_pass\" \n    host: \"localhost\"\n    port: 5432\n    database: \"eion\"\n  \n  # Neo4j Configuration (Required)\n  numa:\n    neo4j:\n      uri: \"bolt://localhost:7687\"\n      username: \"neo4j\"\n      password: \"password\"\n      database: \"neo4j\"\n\n# MCP Server Configuration (Optional)\nmcp:\n  enabled: true                     # Enable MCP server\n  port: 8081                        # MCP server port\n  python_path: \".venv/bin/python\"   # Path to Python executable\n  log_level: \"INFO\"                 # MCP server log level\n  timeout: 30                       # Request timeout in seconds\n\n# Register Console Configuration (Optional)\nconsole:\n  enabled: true                     # Enable Register Console (default: true)\n```\n\n## Additional Configuration\n\nFor production deployments, you may want to customize the database settings in `docker-compose.yml` or create your own configuration.\n\nOr use the automated setup script:\n\n```bash\n# One-command setup (includes database startup, Python env, and server build)\n./setup.sh\n\n# Then start the server\n./eion-server\n```\n---\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"assets/eion-navy.png#gh-light-mode-only\" alt=\"Eion Logo\" width=\"50\" height=\"50\"\u003e\n  \u003cimg src=\"assets/eion-cream.png#gh-dark-mode-only\" alt=\"Eion Logo\" width=\"50\" height=\"50\"\u003e\n\u003c/div\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feiondb%2Feion","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feiondb%2Feion","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feiondb%2Feion/lists"}