Python SDK for Eion - Shared memory storage for AI agent systems
Project description
Eion Python SDK
Python SDK for Eion - Shared memory storage and collaborative intelligence for AI agent systems.
Table of Contents
- Prerequisites
- Installation
- Quick Start
- Authentication
- Core Concepts
- API Reference
- Troubleshooting
- Configuration
- Features
- License
Prerequisites
Before using this SDK, you need to have an Eion server running. This SDK is a client that connects to your Eion server instance.
Docker
# 1. Create a docker-compose.yml file
cat > docker-compose.yml << 'EOF'
version: '3.8'
services:
eion-server:
image: eiondb/eion:latest
ports:
- "8080:8080"
environment:
- DATABASE_URL=postgres://eion:password@postgres:5432/eion
- CLUSTER_API_KEY=my-secret-api-key-123 # You choose this!
depends_on:
- postgres
postgres:
image: postgres:15
environment:
- POSTGRES_DB=eion
- POSTGRES_USER=eion
- POSTGRES_PASSWORD=password
volumes:
- postgres_data:/var/lib/postgresql/data
volumes:
postgres_data:
EOF
# 2. Start the Eion server
docker-compose up -d
# 3. Verify it's running
curl http://localhost:8080/health
Installation
pip install eiondb
Or install from source:
git clone https://github.com/eiondb/eion-sdk-python.git
cd eion-sdk-python
pip install -e .
Quick Start
Important: Make sure your Eion server is running first (see Prerequisites above).
from eion_sdk import EionClient
# Initialize client - use the same API key you set in your server config
client = EionClient(
base_url="http://localhost:8080",
cluster_api_key="my-secret-api-key-123"
)
# Check server health (this will fail if the API key doesn't match)
health = client.health_check()
print(f"Server status: {health['status']}")
# Create a user
user = client.create_user(
user_id="demo_user",
name="Demo User"
)
# Register an agent
agent = client.register_agent(
agent_id="demo_agent",
name="Demo Agent",
permission="crud",
description="A demo agent for testing"
)
# Create a session
session = client.create_session(
session_id="demo_session",
user_id="demo_user",
session_name="Demo Session"
)
Authentication
Understanding the Cluster API Key
The cluster_api_key is a secret key that you define when setting up your Eion server. It's not provided by a service - you choose it yourself for security.
- In your server: Set
CLUSTER_API_KEY=my-secret-api-key-123 - In your SDK: Use the same
cluster_api_key="my-secret-api-key-123"
Authentication Methods
The SDK supports multiple ways to provide your credentials:
1. Direct Parameters
client = EionClient(
base_url="http://localhost:8080",
cluster_api_key="my-secret-api-key-123"
)
2. Environment Variables
export EION_BASE_URL="http://localhost:8080"
export EION_CLUSTER_API_KEY="my-secret-api-key-123"
client = EionClient() # Auto-loads from environment
3. Configuration File
Create eion.yaml:
server:
base_url: "http://localhost:8080"
auth:
cluster_api_key: "my-secret-api-key-123"
client = EionClient(config_file="eion.yaml")
Core Concepts
Users
Users represent end-users of your application who will interact with agents.
Agents
Agents are AI entities that can participate in sessions and perform operations based on their permissions.
Sessions
Sessions are conversation contexts where users and agents interact.
Agent Groups
Groups of agents that can be managed together and assigned to session types.
Session Types
Templates that define which agent groups can participate in sessions.
API Reference
Health Check
# Check server health
health = client.health_check()
# Returns: {"status": "healthy", "timestamp": "..."}
User Management
# Create user
user = client.create_user(
user_id="user123",
name="John Doe" # Optional
)
# Delete user
client.delete_user("user123")
Agent Management
# Register agent
agent = client.register_agent(
agent_id="agent123",
name="My Agent",
permission="crud", # "r", "cr", "crud"
description="Agent description", # Optional
guest=False # Optional, default False
)
# Get agent details
agent = client.get_agent("agent123")
# Update agent
updated_agent = client.update_agent(
"agent123",
name="Updated Name",
description="New description"
)
# List agents
agents = client.list_agents()
# With filters:
agents = client.list_agents(permission="crud", guest=False)
# Delete agent
client.delete_agent("agent123")
Session Management
# Create session
session = client.create_session(
session_id="session123",
user_id="user123",
session_type_id="default", # Optional
session_name="My Session" # Optional
)
# Delete session
client.delete_session("session123")
Agent Group Management
# Register agent group
group = client.register_agent_group(
agent_group_id="group123",
name="Customer Support Team",
agent_ids=["agent1", "agent2"], # Optional
description="Support agents" # Optional
)
# List agent groups
groups = client.list_agent_groups()
# Get group details
group = client.get_agent_group("group123")
# Update agent group
updated_group = client.update_agent_group(
"group123",
name="Updated Team Name",
agent_ids=["agent1", "agent2", "agent3"]
)
# Delete agent group
client.delete_agent_group("group123")
Session Type Management
# Register session type
session_type = client.register_session_type(
session_type_id="support_session",
name="Customer Support",
agent_group_ids=["support_team"], # Optional
description="Customer support sessions", # Optional
encryption="SHA256" # Optional, default SHA256
)
# List session types
types = client.list_session_types()
# Get session type details
session_type = client.get_session_type("support_session")
# Update session type
updated_type = client.update_session_type(
"support_session",
name="Updated Support Type",
description="Updated description"
)
# Delete session type
client.delete_session_type("support_session")
Monitoring & Analytics
# Monitor agent activity
agent_stats = client.monitor_agent(
"agent123",
time_range={
"start_time": "2024-01-01T00:00:00Z",
"end_time": "2024-01-31T23:59:59Z"
}
)
# Monitor session activity
session_stats = client.monitor_session("session123")
Troubleshooting
Common Issues
"Authentication failed" or 403 errors
- Problem: Your
cluster_api_keyin the SDK doesn't match theCLUSTER_API_KEYin your server - Solution: Make sure both use the exact same value
"Connection refused" or "Server not reachable"
- Problem: Your Eion server isn't running
- Solution: Run
docker-compose up -dor check your server logs
"Health check failed"
- Problem: Server is running but not responding properly
- Solution: Check server logs with
docker-compose logs eion-server
Verifying Your Setup
# 1. Check if server is running
curl http://localhost:8080/health
# 2. Test with your API key
curl -H "Authorization: Bearer my-secret-api-key-123" http://localhost:8080/health
Configuration
Environment Variables
export EION_BASE_URL="http://localhost:8080"
export EION_CLUSTER_API_KEY="my-secret-api-key-123"
Configuration File
client = EionClient(config_file="eion.yaml")
Features
- Cluster Management: User, agent, and session management
- Agent Registration: Register and manage AI agents with permissions
- Session Management: Create and manage conversation sessions
- Agent Groups: Organize agents into teams
- Session Types: Define session templates with agent group assignments
- Monitoring & Analytics: Track agent performance and collaboration
- Health Checks: Monitor system health and connectivity
- Structured Error Handling: Comprehensive exception types
- Authentication: Multiple authentication methods
- Type Hints: Full type annotation support
Documentation
- Full API Documentation: docs/openapi.yaml
- Agent API Guide: docs/agent-api-guide.json
- Examples: example/
Support
- Issues: GitHub Issues
License
This project is licensed under the GNU Affero General Public License v3.0 - see the LICENSE.md file for details.
Happy building with Eion! 🚀
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file eiondb-0.1.1.tar.gz.
File metadata
- Download URL: eiondb-0.1.1.tar.gz
- Upload date:
- Size: 33.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
12412be92259fe805810c6634116d11ccc635394814ed8c5e9a55b2a7c52a0fc
|
|
| MD5 |
d1180b106f40f917c44dbd095262dfe5
|
|
| BLAKE2b-256 |
0bac310fd59f3eae9725804faeead3d568afce2476b68663e847fb81400e011d
|
File details
Details for the file eiondb-0.1.1-py3-none-any.whl.
File metadata
- Download URL: eiondb-0.1.1-py3-none-any.whl
- Upload date:
- Size: 31.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ae47b478b599d2302cd78c0860da51fcf7f067d79dfe47f6ac5c29bd99b1e4c4
|
|
| MD5 |
80ed2c02d587e44d73a7f620a16cd2a6
|
|
| BLAKE2b-256 |
d4b1325a6faa01f57fe77b3c5b52c0c39a4802b60afafe8d83f8de3b06a956d0
|