Griptape has excellent in-session memory (ConversationMemory, TaskMemory) but no cross-run persistence. This proposes DakeraMemoryDriver as a persistent backend for Griptape agents using the self-hosted Dakera (https://dakera.ai) memory server.
Problem: Griptape agents lose all memory between process restarts. For agents running recurring tasks (daily report summaries, ongoing research assistants), context must be re-established on every run.
Proposed: DakeraMemoryDriver implementing BaseConversationMemoryDriver:
from griptape.drivers.memory.conversation import BaseConversationMemoryDriver
from griptape.artifacts import BaseArtifact
from dakera import DakeraClient
class DakeraConversationMemoryDriver(BaseConversationMemoryDriver):
base_url: str = 'http://localhost:3300'
api_key: str = ''
agent_id: str = 'griptape-agent'
def __post_init__(self):
self._client = DakeraClient(base_url=self.base_url, api_key=self.api_key)
def store(self, memory: ConversationMemory) -> None:
for run in memory.runs[-3:]: # Store recent runs
self._client.store_memory(
agent_id=self.agent_id,
content=f'Input: {run.input}\nOutput: {run.output}',
)
def load(self) -> list:
response = self._client.recall(agent_id=self.agent_id, query='recent conversations', top_k=10)
return response.memories if response else []
Usage:
from griptape.structures import Agent
from griptape.memory.structure import ConversationMemory
agent = Agent(
conversation_memory=ConversationMemory(
driver=DakeraConversationMemoryDriver(
base_url='http://localhost:3300',
api_key='demo',
agent_id='my-agent',
)
)
)
Setup: docker run -d -p 3300:3300 -e DAKERA_API_KEY=demo ghcr.io/dakera-ai/dakera:latest / pip install dakera
Relevant: griptape/drivers/memory/conversation/
Happy to open a PR.
Griptape has excellent in-session memory (ConversationMemory, TaskMemory) but no cross-run persistence. This proposes DakeraMemoryDriver as a persistent backend for Griptape agents using the self-hosted Dakera (https://dakera.ai) memory server.
Problem: Griptape agents lose all memory between process restarts. For agents running recurring tasks (daily report summaries, ongoing research assistants), context must be re-established on every run.
Proposed: DakeraMemoryDriver implementing BaseConversationMemoryDriver:
from griptape.drivers.memory.conversation import BaseConversationMemoryDriver
from griptape.artifacts import BaseArtifact
from dakera import DakeraClient
class DakeraConversationMemoryDriver(BaseConversationMemoryDriver):
base_url: str = 'http://localhost:3300'
api_key: str = ''
agent_id: str = 'griptape-agent'
Usage:
from griptape.structures import Agent
from griptape.memory.structure import ConversationMemory
Setup: docker run -d -p 3300:3300 -e DAKERA_API_KEY=demo ghcr.io/dakera-ai/dakera:latest / pip install dakera
Relevant: griptape/drivers/memory/conversation/
Happy to open a PR.