MongoDB for Team

Kern supports using MongoDB as a storage backend for Teams using the MongoDb class.

Usage

You need to provide either db_url or client. The following example uses db_url.

Run MongoDB

Install docker desktop and run MongoDB on port 27017 using:

1docker run -d \
2 --name local-mongo \
3 -p 27017:27017 \
4 -e MONGO_INITDB_ROOT_USERNAME=mongoadmin \
5 -e MONGO_INITDB_ROOT_PASSWORD=secret \
6 mongo
1"""
2Run: `uv pip install openai newspaper4k lxml_html_clean kern-ai` to install the dependencies
3"""
4from typing import List
5
6from kern.agent import Agent
7from kern.db.mongo import MongoDb
8from kern.models.openai import OpenAIResponses
9from kern.team import Team
10from kern.tools.hackernews import HackerNewsTools
11from kern.tools.hackernews import HackerNewsTools
12from pydantic import BaseModel
13
14# MongoDB connection settings
15db_url = "mongodb://localhost:27017"
16db = MongoDb(db_url=db_url)
17
18class Article(BaseModel):
19 title: str
20 summary: str
21 reference_links: List[str]
22
23hn_researcher = Agent(
24 name="HackerNews Researcher",
25 model=OpenAIResponses(id="gpt-5.2"),
26 role="Gets top stories from hackernews.",
27 tools=[HackerNewsTools()],
28)
29
30web_searcher = Agent(
31 name="Web Searcher",
32 model=OpenAIResponses(id="gpt-5.2"),
33 role="Searches the web for information on a topic",
34 tools=[HackerNewsTools()],
35 add_datetime_to_context=True,
36)
37
38hn_team = Team(
39 name="HackerNews Team",
40 model=OpenAIResponses(id="gpt-5.2"),
41 members=[hn_researcher, web_searcher],
42 db=db,
43 instructions=[
44 "First, search hackernews for what the user is asking about.",
45 "Then, ask the web searcher to search for each story to get more information.",
46 "Finally, provide a thoughtful and engaging summary.",
47 ],
48 output_schema=Article,
49 markdown=True,
50 debug_mode=True,
51 show_members_responses=True,
52)
53
54hn_team.print_response("Write an article about the top 2 stories on hackernews")

Params

ParameterTypeDefaultDescription
idOptional[str]-The ID of the database instance. UUID by default.
db_clientOptional[MongoClient]-The MongoDB client to use.
db_nameOptional[str]-The name of the database to use.
db_urlOptional[str]-The database URL to connect to.
session_collectionOptional[str]-Name of the collection to store sessions.
memory_collectionOptional[str]-Name of the collection to store memories.
metrics_collectionOptional[str]-Name of the collection to store metrics.
eval_collectionOptional[str]-Name of the collection to store evaluation runs.
knowledge_collectionOptional[str]-Name of the collection to store knowledge documents.
traces_collectionOptional[str]-Name of the collection to store traces.
spans_collectionOptional[str]-Name of the collection to store spans.