Caller Memory
Caller Memory
SIPHON's caller memory remembers conversations across calls, enabling personalized voice AI interactions.
What It Does
- Remembers callers: Agent recognizes returning callers by name
- Maintains context: Previous conversations inform the current call
- Summarizes calls: Automatically generates brief summaries after each call
Quick Start
Enable memory by setting remember_call=True:
from siphon import Agent
agent = Agent(
agent_name="Agent-System",
remember_call=True
)
agent.start()
Memory is disabled by default. When enabled:
- Memory loads before the call starts
- Agent can reference previous discussions
- A summary is saved after the call ends
Configuration
| Parameter | Type | Default | Description |
|---|---|---|---|
remember_call | bool | False | Enable/disable caller memory |
Storage Backends
Configure where memory is stored via CALL_MEMORY_LOCATION:
| Backend | URL Format |
|---|---|
| PostgreSQL (recommended) | postgresql://user:pass@host:5432/dbname |
| MySQL | mysql://user:pass@host:3306/dbname |
| MongoDB | mongodb://user:pass@host:27017/dbname |
| Redis | redis://host:6379/0 |
| S3 / MinIO | s3 |
| Local Files (dev only) | history or any folder path |
For S3 storage, also set:
AWS_S3_BUCKET(orMINIO_BUCKET)AWS_S3_ACCESS_KEY_ID(orMINIO_ACCESS_KEY)AWS_S3_SECRET_ACCESS_KEY(orMINIO_SECRET_KEY)
Optional: AWS_S3_ENDPOINT for MinIO
How It Works
- Before call: System loads existing memory for the caller's phone number
- During call: Agent receives memory context (name, previous summaries, call count)
- After call: LLM generates a summary, which is saved to storage
Example Interaction
First call:
User: "I'm John, I need to schedule an appointment."
Agent: "Nice to meet you, John! Let me help..."
Second call:
Agent: "Hi John! Welcome back. How did your appointment go?"
User: "It went well. I need to reschedule the follow-up."
Production Notes
- All database operations are asynchronous — they won't block or freeze calls
- Fault-tolerant: If the database is unreachable, calls continue normally (errors are logged)
- Fast timeouts: 2-second connection timeouts ensure quick recovery from failures
Troubleshooting
Memory not loading:
- Check
remember_call=Trueis set on the agent - Verify
CALL_MEMORY_LOCATIONis configured correctly - Check logs for connection errors
No summaries being saved:
- Ensure an LLM is configured on the agent
- Check that STT is working and capturing user speech