Get started with Zep Community Edition

Starting a Zep server locally is simple.

  1. Clone the Zep repo
$git clone https://github.com/getzep/zep.git
  1. Configure your Zep server by editing the zep.yaml file.
1log:
2 # debug, info, warn, error, panic, dpanic, or fatal. Default = info
3 level: info
4 # How should logs be formatted? Setting to "console" will print human readable logs
5 # whie "json" will print structured JSON logs. Default is "json".
6 format: console
7http:
8 # Host to bind to. Default is 0.0.0.0
9 host: 0.0.0.0
10 # Port to bind to. Default is 8000
11 port: 8000
12 max_request_size: 5242880
13postgres:
14 user: postgres
15 password: postgres
16 host: localhost
17 port: 5432
18 database: postgres
19 schema_name: public
20 read_timeout: 30
21 write_timeout: 30
22 max_open_connections: 10
23# Carbon is a package used for dealing with time - github.com/golang-module/carbon
24# It is primarily used for generating humand readable relative time strings like "2 hours ago".
25# See the list of supported languages here https://github.com/golang-module/carbon?tab=readme-ov-file#i18n
26carbon:
27 locale: en
28graphiti:
29 # Base url to the graphiti service
30 service_url: http://0.0.0.0:8003
31# In order to authenicate API requests to the Zep service, a secret must be provided.
32# This secret should be kept secret between the Zep service and the client. It can be any string value.
33# When making requests to the Zep service, include the secret in the Authorization header.
34api_secret: [INSERT API SECRET]
35# In order to better understand how Zep is used, we can collect telemetry data.
36# This is optional and can be disabled by setting disabled to true.
37# We do not collect any PII or any of your data. We only collect anonymized data
38# about how Zep is used.
39telemetry:
40 disabled: false
41 # Please provide an identifying name for your organization so can get a better understanding
42 # about who is using Zep. This is optional.
43 organization_name: [INSERT ORGANIZATION NAME]

If you’d like to use an environment variable as the value for any of the configuration options, you can use a template string to insert the value. For example, if you wanted to use an environment variable to set the Postgres password, you could do the following:

1postgres:
2 password: {{ Env "ZEP_POSTGRES_PASSWORD" }}

You can name your environment variable whatever you want.

Only use this for configuration options that are string values otherwise it will cause a parse error and the server will not start.
  1. Start the Zep server:
$./zep up

Make sure to set the secret value in the zep.yaml configuration file.

Additionally, make sure that you expose an OPENAI_API_KEY environment variable either in a local .env file or by running:

$export OPENAI_API_KEY=your_openai_api_key

This will start a Zep API server on port 8000 and Graphiti service on port 8003.

  1. Get started with the Zep Community Edition SDKs!

The Zep Community Edition SDKs are API compatible with the Zep Cloud SDKs. The Zep Guides and API reference note where functionality may differ.

Next Steps:

Using LLM Providers other than OpenAI

Zep Community Edition can be used with any LLM provider that implements the OpenAI API. There are two approaches to configure this:

Set the following environment variables for the Graphiti service in your docker-compose.ce.yaml file:

1environment:
2 - MODEL_NAME=your_model_name
3 - OPENAI_BASE_URL=your_provider_base_url
4 - OPENAI_API_KEY=your_api_key

This approach works with any OpenAI API-compatible provider and local LLM inference servers, such as Ollama.

2. Using a Proxy (Alternative)

You can also use a proxy service like LiteLLM that provides an OpenAI compatible API for non-OpenAI compatible LLM providers. LiteLLM supports proxying both LLM and Embedding requests.

Set the OPENAI_API_KEY, MODEL_NAME, and OPENAI_BASE_URL environment variables to point to your LLM provider. This may be done in a .env file or directly in the docker-compose.ce.yaml file.