Valkey for Team
Store team sessions in Valkey with ValkeyDb.
Agno supports using Valkey as a storage backend for Teams using the ValkeyDb class.
Usage
Start in a virtual environment.
Install dependencies:
uv pip install -U agno ddgs openai valkey-glide-syncRun Valkey
Install docker desktop and run Valkey on port 6379 using:
docker run -d \
--name my-valkey \
-p 6379:6379 \
valkey/valkeySet your OpenAI API key:
Set OpenAI Key
Set your OPENAI_API_KEY as an environment variable. You can get one from OpenAI.
export OPENAI_API_KEY=sk-***"""
Run: `uv pip install openai agno ddgs valkey-glide-sync` to install the dependencies
"""
from typing import List
from agno.agent import Agent
from agno.db.valkey import ValkeyDb
from agno.models.openai import OpenAIResponses
from agno.team import Team
from agno.tools.hackernews import HackerNewsTools
from agno.tools.websearch import WebSearchTools
from pydantic import BaseModel
db = ValkeyDb(
host="localhost",
port=6379,
)
class Article(BaseModel):
title: str
summary: str
reference_links: List[str]
hn_researcher = Agent(
name="HackerNews Researcher",
model=OpenAIResponses(id="gpt-5.2"),
role="Gets top stories from hackernews.",
tools=[HackerNewsTools()],
)
web_searcher = Agent(
name="Web Searcher",
model=OpenAIResponses(id="gpt-5.2"),
role="Searches the web for information on a topic",
tools=[WebSearchTools()],
add_datetime_to_context=True,
)
hn_team = Team(
name="HackerNews Team",
model=OpenAIResponses(id="gpt-5.2"),
members=[hn_researcher, web_searcher],
db=db,
instructions=[
"First, search hackernews for what the user is asking about.",
"Then, ask the web searcher to search for each story to get more information.",
"Finally, provide a thoughtful and engaging summary.",
],
output_schema=Article,
markdown=True,
show_members_responses=True,
)
hn_team.print_response("Write an article about the top 2 stories on hackernews")
Run the example
Save the code as valkey_for_team.py, start the database described above, and run:
python valkey_for_team.pyParams
| Parameter | Type | Default | Description |
|---|---|---|---|
id | Optional[str] | - | Database ID. Derived deterministically from the host and port (or client representation) and key prefix when omitted. |
valkey_client | Optional[Union[GlideClient, GlideClusterClient]] | - | Pre-configured Valkey GLIDE client. If not provided a new client will be created. |
host | str | "localhost" | Valkey server host. |
port | int | 6379 | Valkey server port. |
database_id | Optional[int] | - | Logical database index (e.g. 0-15). |
username | Optional[str] | - | Username for authentication. |
password | Optional[str] | - | Password for authentication. |
use_tls | bool | False | Enable TLS encryption. |
request_timeout | Optional[int] | - | Milliseconds to wait for a request to complete. If unset, the GLIDE client default (250 ms) applies. |
db_prefix | str | "agno" | Prefix for all Valkey keys. |
client_name | str | "agno_db_client" | Connection name, visible in CLIENT LIST. |
expire | Optional[int] | - | TTL for Valkey keys in seconds. |
session_table | Optional[str] | - | Name of the table to store sessions. |
runs_table | Optional[str] | None | Storage name for individual runs. Defaults to agno_runs, or <session_table>_runs when a custom session name is supplied. |
memory_table | Optional[str] | - | Name of the table to store memories. |
metrics_table | Optional[str] | - | Name of the table to store metrics. |
eval_table | Optional[str] | - | Name of the table to store evaluation runs. |
knowledge_table | Optional[str] | - | Name of the table to store knowledge documents. |
traces_table | Optional[str] | - | Name of the table to store traces. |
spans_table | Optional[str] | - | Name of the table to store spans. |
learnings_table | Optional[str] | - | Name of the table to store learnings. |