Skip to main content
Get EverOS working in under 5 minutes. By the end of this guide, you’ll store a conversation, wait for indexing, and search for it.

Prerequisites

pip install everos
export EVEROS_API_KEY="your_api_key"

Step 1: Store a Conversation

Store a group conversation message containing a user preference.
import time
from everos import EverOS

client = EverOS()
group_mem = client.v1.memories.group

now_ms = int(time.time() * 1000)

# Store a message
response = group_mem.add(
    group_id="demo_001",
    group_meta={"name": "Cookbook Demo"},
    messages=[
        {
            "role": "user",
            "sender_id": "user_alice",
            "sender_name": "Alice",
            "timestamp": now_ms,
            "content": "I prefer working in the morning, usually from 6am to 10am. That's when I'm most productive.",
        }
    ],
)

print(response)
Expected output:
{
  "status": "queued",
  "message": "Message accepted and queued for processing",
  "request_id": "02177034845390800000000000000000000ffff..."
}

Step 2: Wait for Indexing

EverOS processes messages asynchronously. Memory extraction happens when:
  • A conversation boundary is detected (topic change, time gap)
  • Enough context accumulates for meaningful extraction
For testing, send a follow-up message with a different topic to trigger boundary detection.
import time

# Send a second message to trigger boundary detection
response = group_mem.add(
    group_id="demo_001",
    group_meta={"name": "Cookbook Demo"},
    messages=[
        {
            "role": "user",
            "sender_id": "user_alice",
            "sender_name": "Alice",
            "timestamp": now_ms + 5000,
            "content": "Let's switch topics - what's the weather like today?",
        }
    ],
)

# Wait for indexing
print("Waiting for memory extraction...")
time.sleep(5)

Step 3: Search Your Memory

Now search for the preference you stored.
response = client.v1.memories.search(
    filters={"user_id": "user_alice"},
    query="when does alice prefer to work",
    method="hybrid",
    memory_types=["episodic_memory", "profile"],
    top_k=5,
)

data = response.data
episodes = data.episodes if data else []

print(f"Found {len(episodes)} relevant memories:\n")
for ep in episodes:
    print(f"Type: {getattr(ep, 'memory_type', 'N/A')}")
    print(f"Content: {getattr(ep, 'episode', None) or getattr(ep, 'summary', 'N/A')}")
    print(f"Score: {getattr(ep, 'score', 'N/A')}")
    print("-" * 40)
Expected output:
Found 1 relevant memories:

Type: episodic_memory
Content: Alice prefers working in the morning, from 6am to 10am when she is most productive.
Score: 0.85
----------------------------------------

Complete Working Script

Here’s the full script you can copy and run:
# pip install everos -U
# export EVEROS_API_KEY="your_api_key"

import time
from everos import EverOS

client = EverOS()
group_mem = client.v1.memories.group

now_ms = int(time.time() * 1000)

# 1. Storing conversation...
print("1. Storing conversation...")

group_mem.add(
    group_id="demo_001",
    group_meta={"name": "Cookbook Demo"},
    messages=[
        {
            "role": "user",
            "sender_id": "user_bob",
            "sender_name": "Bob",
            "timestamp": now_ms,
            "content": "I love hiking on weekends, especially in the mountains.",
        }
    ],
)

group_mem.add(
    group_id="demo_001",
    group_meta={"name": "Cookbook Demo"},
    messages=[
        {
            "role": "user",
            "sender_id": "user_bob",
            "sender_name": "Bob",
            "timestamp": now_ms + 5000,
            "content": "Anyway, let's talk about something else now.",
        }
    ],
)

# 2. Waiting for indexing...
print("2. Waiting for indexing...")
time.sleep(5)

# 3. Searching memories...
print("3. Searching memories...")

response = client.v1.memories.search(
    filters={"user_id": "user_bob"},
    query="outdoor activities bob enjoys",
    method="hybrid",
    memory_types=["episodic_memory", "profile"],
    top_k=5,
)

data = response.data
episodes = data.episodes if data else []

print(f"\nFound {len(episodes)} memories:")
for ep in episodes:
    print(f"Type: {getattr(ep, 'memory_type', 'N/A')}")
    print(f"Content: {getattr(ep, 'episode', None) or getattr(ep, 'summary', 'N/A')}")
    print(f"Score: {getattr(ep, 'score', 'N/A')}")
    print("-" * 40)