diff --git a/README-CN.md b/README-CN.md
index be9d94a75..c47b56a6b 100644
--- a/README-CN.md
+++ b/README-CN.md
@@ -64,38 +64,50 @@
-📖 Table of Contents
-
-- [为什么选择 Julep 而不是 LangChain?](#%E4%B8%BA%E4%BB%80%E4%B9%88%E9%80%89%E6%8B%A9-julep-%E8%80%8C%E4%B8%8D%E6%98%AF-langchain)
- - [不同的用例](#%E4%B8%8D%E5%90%8C%E7%9A%84%E7%94%A8%E4%BE%8B)
- - [不同的外形尺寸](#%E4%B8%8D%E5%90%8C%E7%9A%84%E5%A4%96%E5%BD%A2%E5%B0%BA%E5%AF%B8)
-- [Python 快速入门🐍](#python-%E5%BF%AB%E9%80%9F%E5%85%A5%E9%97%A8)
- - [步骤 1:创建代理](#%E6%AD%A5%E9%AA%A4-1%E5%88%9B%E5%BB%BA%E4%BB%A3%E7%90%86)
- - [步骤 2:创建一个生成故事和漫画的任务](#%E6%AD%A5%E9%AA%A4-2%E5%88%9B%E5%BB%BA%E4%B8%80%E4%B8%AA%E7%94%9F%E6%88%90%E6%95%85%E4%BA%8B%E5%92%8C%E6%BC%AB%E7%94%BB%E7%9A%84%E4%BB%BB%E5%8A%A1)
- - [步骤 3:执行任务](#%E6%AD%A5%E9%AA%A4-3%E6%89%A7%E8%A1%8C%E4%BB%BB%E5%8A%A1)
- - [步骤 4:与代理聊天](#%E6%AD%A5%E9%AA%A4-4%E4%B8%8E%E4%BB%A3%E7%90%86%E8%81%8A%E5%A4%A9)
-- [Node.js 快速入门 🟩](#nodejs-%E5%BF%AB%E9%80%9F%E5%85%A5%E9%97%A8-)
- - [步骤 1:创建代理](#%E6%AD%A5%E9%AA%A4-1%E5%88%9B%E5%BB%BA%E4%BB%A3%E7%90%86-1)
- - [步骤 2:创建一个生成故事和漫画的任务](#%E6%AD%A5%E9%AA%A4-2%E5%88%9B%E5%BB%BA%E4%B8%80%E4%B8%AA%E7%94%9F%E6%88%90%E6%95%85%E4%BA%8B%E5%92%8C%E6%BC%AB%E7%94%BB%E7%9A%84%E4%BB%BB%E5%8A%A1-1)
- - [步骤 3:执行任务](#%E6%AD%A5%E9%AA%A4-3%E6%89%A7%E8%A1%8C%E4%BB%BB%E5%8A%A1-1)
- - [步骤 4:与代理聊天](#%E6%AD%A5%E9%AA%A4-4%E4%B8%8E%E4%BB%A3%E7%90%86%E8%81%8A%E5%A4%A9-1)
- - [心智模型](#%E5%BF%83%E6%99%BA%E6%A8%A1%E5%9E%8B)
-- [概念](#%E6%A6%82%E5%BF%B5)
-- [理解任务](#%E7%90%86%E8%A7%A3%E4%BB%BB%E5%8A%A1)
- - [工作流步骤的类型](#%E5%B7%A5%E4%BD%9C%E6%B5%81%E6%AD%A5%E9%AA%A4%E7%9A%84%E7%B1%BB%E5%9E%8B)
-- [工具类型](#%E5%B7%A5%E5%85%B7%E7%B1%BB%E5%9E%8B)
- - [用户定义的函数](#%E7%94%A8%E6%88%B7%E5%AE%9A%E4%B9%89%E7%9A%84%E5%87%BD%E6%95%B0)
- - [`系统` 工具](#%E7%B3%BB%E7%BB%9F-%E5%B7%A5%E5%85%B7)
- - [内置“集成”](#%E5%86%85%E7%BD%AE%E9%9B%86%E6%88%90)
- - [直接 `api_call`](#%E7%9B%B4%E6%8E%A5-api_call)
-- [集成](#%E9%9B%86%E6%88%90)
- - [勇敢搜索](#%E5%8B%87%E6%95%A2%E6%90%9C%E7%B4%A2)
- - [浏览器基础](#%E6%B5%8F%E8%A7%88%E5%99%A8%E5%9F%BA%E7%A1%80)
- - [向代理添加工具](#%E5%90%91%E4%BB%A3%E7%90%86%E6%B7%BB%E5%8A%A0%E5%B7%A5%E5%85%B7)
- - [管理会话和用户](#%E7%AE%A1%E7%90%86%E4%BC%9A%E8%AF%9D%E5%92%8C%E7%94%A8%E6%88%B7)
- - [文档集成与搜索](#%E6%96%87%E6%A1%A3%E9%9B%86%E6%88%90%E4%B8%8E%E6%90%9C%E7%B4%A2)
-- [本地快速启动](#%E6%9C%AC%E5%9C%B0%E5%BF%AB%E9%80%9F%E5%90%AF%E5%8A%A8)
-- [SDK 参考](#sdk-%E5%8F%82%E8%80%83)
+📖 目录
+
+- [简介](#introduction)
+- [快速示例](#quick-example)
+- [主要特点](#key-features)
+- [为什么选择 Julep 而不是 LangChain?](#why-julep-vs-langchain)
+- [不同用例](#different-use-cases)
+- [不同的外形尺寸](#different-form-factor)
+- [总结](#in-summary)
+- [安装](#安装)
+- [Python 快速入门 🐍](#python-quick-start-)
+- [步骤 1:创建代理](#step-1-create-an-agent)
+- [步骤 2:创建一个生成故事和漫画的任务](#step-2-create-a-task-that-generates-a-story-and-comic-strip)
+- [步骤 3:执行任务](#step-3-execute-the-task)
+- [步骤 4:与代理聊天](#step-4-chat-with-the-agent)
+- [Node.js 快速入门🟩](#nodejs-quick-start-)
+- [步骤 1:创建代理](#step-1-create-an-agent-1)
+- [步骤 2:创建一个生成故事和漫画的任务](#step-2-create-a-task-that-generates-a-story-and-comic-strip-1)
+- [步骤 3:执行任务](#step-3-execute-the-task-1)
+- [步骤 4:与代理聊天](#step-4-chat-with-the-agent-1)
+- [组件](#components)
+- [心智模型](#mental-model)
+- [概念](#concepts)
+- [理解任务](#understanding-tasks)
+- [工作流步骤的类型](#types-of-workflow-steps)
+- [工具类型](#tool-types)
+- [用户定义的函数](#user-defined-functions)
+- [`系统` 工具](#system-tools)
+- [内置集成](#built-in-integrations)
+- [直接 `api_call`](#direct-api_calls)
+- [集成](#integrations)
+- [勇敢搜索](#brave-search)
+- [BrowserBase](#browserbase)
+- [电子邮件](#email)
+- [蜘蛛](#蜘蛛)
+- [天气](#天气)
+- [维基百科](#wikipedia)
+- [其他功能](#other-features)
+- [向代理添加工具](#adding-tools-to-agents)
+- [管理会话和用户](#managing-sessions-and-users)
+- [文档集成与搜索](#document-integration-and-search)
+- [本地快速启动](#local-quickstart)
+- [SDK 参考](#sdk-reference)
+- [API 参考](#api-reference)
diff --git a/README-FR.md b/README-FR.md
index 1114ec877..334db2ed7 100644
--- a/README-FR.md
+++ b/README-FR.md
@@ -64,50 +64,50 @@ Des nouvelles passionnantes ! Nous participons au DevFest.AI tout au long du moi
-📖 Table of Contents
-
-- [Introduction](#introduction)
-- [Exemple rapide](#exemple-rapide)
-- [Principales caractéristiques](#principales-caract%C3%A9ristiques)
-- [Pourquoi Julep vs. LangChain ?](#pourquoi-julep-vs-langchain%C2%A0)
- - [Différents cas d'utilisation](#diff%C3%A9rents-cas-dutilisation)
- - [Facteur de forme différent](#facteur-de-forme-diff%C3%A9rent)
- - [En résumé](#en-r%C3%A9sum%C3%A9)
+📖 Table des matières
+
+- [Présentation](#introduction)
+- [Exemple rapide](#quick-example)
+- [Caractéristiques principales](#key-features)
+- [Pourquoi Julep vs. LangChain ?](#pourquoi-julep-vs-langchain)
+- [Différents cas d'utilisation](#different-use-cases)
+- [Facteur de forme différent](#different-form-factor)
+- [En résumé](#en-resumé)
- [Installation](#installation)
-- [Démarrage rapide de Python 🐍](#d%C3%A9marrage-rapide-de-python-)
- - [Étape 1 : Créer un agent](#%C3%89tape-1%C2%A0-cr%C3%A9er-un-agent)
- - [Étape 2 : Créer une tâche qui génère une histoire et une bande dessinée](#%C3%89tape-2%C2%A0-cr%C3%A9er-une-t%C3%A2che-qui-g%C3%A9n%C3%A8re-une-histoire-et-une-bande-dessin%C3%A9e)
- - [Étape 3 : Exécuter la tâche](#%C3%89tape-3%C2%A0-ex%C3%A9cuter-la-t%C3%A2che)
- - [Étape 4 : Discuter avec l'agent](#%C3%89tape-4%C2%A0-discuter-avec-lagent)
-- [Démarrage rapide de Node.js 🟩](#d%C3%A9marrage-rapide-de-nodejs-)
- - [Étape 1 : Créer un agent](#%C3%89tape-1%C2%A0-cr%C3%A9er-un-agent-1)
- - [Étape 2 : Créer une tâche qui génère une histoire et une bande dessinée](#%C3%89tape-2%C2%A0-cr%C3%A9er-une-t%C3%A2che-qui-g%C3%A9n%C3%A8re-une-histoire-et-une-bande-dessin%C3%A9e-1)
- - [Étape 3 : Exécuter la tâche](#%C3%89tape-3%C2%A0-ex%C3%A9cuter-la-t%C3%A2che-1)
- - [Étape 4 : Discuter avec l'agent](#%C3%89tape-4%C2%A0-discuter-avec-lagent-1)
+- [Démarrage rapide de Python 🐍](#python-quick-start-)
+- [Étape 1 : Créer un agent](#step-1-create-an-agent)
+- [Étape 2 : Créer une tâche qui génère une histoire et une bande dessinée](#step-2-create-a-task-that-generates-a-story-and-comic-strip)
+- [Étape 3 : Exécuter la tâche](#step-3-execute-the-task)
+- [Étape 4 : discuter avec l'agent](#step-4-chat-with-the-agent)
+- [Démarrage rapide de Node.js 🟩](#nodejs-quick-start-)
+- [Étape 1 : Créer un agent](#step-1-create-an-agent-1)
+- [Étape 2 : Créer une tâche qui génère une histoire et une bande dessinée](#step-2-create-a-task-that-generates-a-story-and-comic-strip-1)
+- [Étape 3 : Exécuter la tâche](#step-3-execute-the-task-1)
+- [Étape 4 : discuter avec l'agent](#step-4-chat-with-the-agent-1)
- [Composants](#composants)
- - [Modèle mental](#mod%C3%A8le-mental)
+- [Modèle mental](#mental-model)
- [Concepts](#concepts)
-- [Comprendre les tâches](#comprendre-les-t%C3%A2ches)
- - [Types d'étapes de flux de travail](#types-d%C3%A9tapes-de-flux-de-travail)
-- [Types d'outils](#types-doutils)
- - [Fonctions définies par l'utilisateur](#fonctions-d%C3%A9finies-par-lutilisateur)
- - [outils `système`](#outils-syst%C3%A8me)
- - [Intégrations intégrées](#int%C3%A9grations-int%C3%A9gr%C3%A9es)
- - [Appels directs `api_call`](#appels-directs-api_call)
-- [Intégrations](#int%C3%A9grations)
- - [Recherche courageuse](#recherche-courageuse)
- - [Base de navigateur](#base-de-navigateur)
- - [E-mail](#e-mail)
- - [Araignée](#araign%C3%A9e)
- - [Météo](#m%C3%A9t%C3%A9o)
- - [Wikipédia](#wikip%C3%A9dia)
-- [Autres fonctionnalités](#autres-fonctionnalit%C3%A9s)
- - [Ajout d'outils aux agents](#ajout-doutils-aux-agents)
- - [Gestion des sessions et des utilisateurs](#gestion-des-sessions-et-des-utilisateurs)
- - [Intégration et recherche de documents](#int%C3%A9gration-et-recherche-de-documents)
-- [Démarrage rapide local](#d%C3%A9marrage-rapide-local)
-- [Référence du SDK](#r%C3%A9f%C3%A9rence-du-sdk)
-- [Référence API](#r%C3%A9f%C3%A9rence-api)
+- [Comprendre les tâches](#understanding-tasks)
+- [Types d'étapes de flux de travail](#types-of-workflow-steps)
+- [Types d'outils](#types-d'outils)
+- [Fonctions définies par l'utilisateur](#user-defined-functions)
+- [outils système](#outils-système)
+- [Intégrations intégrées](#integrations-integrées)
+- [Appels directs d'API](#appels directs d'API)
+- [Intégrations](#intégrations)
+- [Recherche courageuse](#brave-search)
+- [Base du navigateur](#basedunavigateur)
+- [Courriel](#courriel)
+- [Araignée](#araignée)
+- [Météo](#météo)
+- [Wikipédia](#wikipédia)
+- [Autres fonctionnalités](#other-features)
+- [Ajout d'outils aux agents](#adding-tools-to-agents)
+- [Gestion des sessions et des utilisateurs](#managing-sessions-and-users)
+- [Intégration et recherche de documents](#document-integration-and-search)
+- [Démarrage rapide local](#local-quickstart)
+- [Référence SDK](#sdk-reference)
+- [Référence API](#api-reference)
diff --git a/README-JA.md b/README-JA.md
index dc856698a..e31e512a7 100644
--- a/README-JA.md
+++ b/README-JA.md
@@ -64,47 +64,50 @@ Julep プロジェクトに新しい貢献者を迎えられることを嬉し
-📖 Table of Contents
-
-- [簡単な例](#%E7%B0%A1%E5%8D%98%E3%81%AA%E4%BE%8B)
-- [主な特徴](#%E4%B8%BB%E3%81%AA%E7%89%B9%E5%BE%B4)
-- [Julep と LangChain を比較する理由](#julep-%E3%81%A8-langchain-%E3%82%92%E6%AF%94%E8%BC%83%E3%81%99%E3%82%8B%E7%90%86%E7%94%B1)
- - [さまざまなユースケース](#%E3%81%95%E3%81%BE%E3%81%96%E3%81%BE%E3%81%AA%E3%83%A6%E3%83%BC%E3%82%B9%E3%82%B1%E3%83%BC%E3%82%B9)
- - [異なるフォームファクタ](#%E7%95%B0%E3%81%AA%E3%82%8B%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0%E3%83%95%E3%82%A1%E3%82%AF%E3%82%BF)
-- [インストール](#%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB)
-- [Python クイックスタート 🐍](#python-%E3%82%AF%E3%82%A4%E3%83%83%E3%82%AF%E3%82%B9%E3%82%BF%E3%83%BC%E3%83%88-)
- - [ステップ 1: エージェントを作成する](#%E3%82%B9%E3%83%86%E3%83%83%E3%83%97-1-%E3%82%A8%E3%83%BC%E3%82%B8%E3%82%A7%E3%83%B3%E3%83%88%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B)
- - [ステップ2: ストーリーと漫画を生成するタスクを作成する](#%E3%82%B9%E3%83%86%E3%83%83%E3%83%972-%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AA%E3%83%BC%E3%81%A8%E6%BC%AB%E7%94%BB%E3%82%92%E7%94%9F%E6%88%90%E3%81%99%E3%82%8B%E3%82%BF%E3%82%B9%E3%82%AF%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B)
- - [ステップ3: タスクを実行する](#%E3%82%B9%E3%83%86%E3%83%83%E3%83%973-%E3%82%BF%E3%82%B9%E3%82%AF%E3%82%92%E5%AE%9F%E8%A1%8C%E3%81%99%E3%82%8B)
- - [ステップ4: エージェントとチャットする](#%E3%82%B9%E3%83%86%E3%83%83%E3%83%974-%E3%82%A8%E3%83%BC%E3%82%B8%E3%82%A7%E3%83%B3%E3%83%88%E3%81%A8%E3%83%81%E3%83%A3%E3%83%83%E3%83%88%E3%81%99%E3%82%8B)
-- [Node.js クイックスタート 🟩](#nodejs-%E3%82%AF%E3%82%A4%E3%83%83%E3%82%AF%E3%82%B9%E3%82%BF%E3%83%BC%E3%83%88-)
- - [ステップ 1: エージェントを作成する](#%E3%82%B9%E3%83%86%E3%83%83%E3%83%97-1-%E3%82%A8%E3%83%BC%E3%82%B8%E3%82%A7%E3%83%B3%E3%83%88%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B-1)
- - [ステップ2: ストーリーと漫画を生成するタスクを作成する](#%E3%82%B9%E3%83%86%E3%83%83%E3%83%972-%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AA%E3%83%BC%E3%81%A8%E6%BC%AB%E7%94%BB%E3%82%92%E7%94%9F%E6%88%90%E3%81%99%E3%82%8B%E3%82%BF%E3%82%B9%E3%82%AF%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B-1)
- - [ステップ3: タスクを実行する](#%E3%82%B9%E3%83%86%E3%83%83%E3%83%973-%E3%82%BF%E3%82%B9%E3%82%AF%E3%82%92%E5%AE%9F%E8%A1%8C%E3%81%99%E3%82%8B-1)
- - [ステップ4: エージェントとチャットする](#%E3%82%B9%E3%83%86%E3%83%83%E3%83%974-%E3%82%A8%E3%83%BC%E3%82%B8%E3%82%A7%E3%83%B3%E3%83%88%E3%81%A8%E3%83%81%E3%83%A3%E3%83%83%E3%83%88%E3%81%99%E3%82%8B-1)
-- [コンポーネント](#%E3%82%B3%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%8D%E3%83%B3%E3%83%88)
- - [メンタルモデル](#%E3%83%A1%E3%83%B3%E3%82%BF%E3%83%AB%E3%83%A2%E3%83%87%E3%83%AB)
-- [コンセプト](#%E3%82%B3%E3%83%B3%E3%82%BB%E3%83%97%E3%83%88)
-- [タスクを理解する](#%E3%82%BF%E3%82%B9%E3%82%AF%E3%82%92%E7%90%86%E8%A7%A3%E3%81%99%E3%82%8B)
- - [ワークフローステップの種類](#%E3%83%AF%E3%83%BC%E3%82%AF%E3%83%95%E3%83%AD%E3%83%BC%E3%82%B9%E3%83%86%E3%83%83%E3%83%97%E3%81%AE%E7%A8%AE%E9%A1%9E)
-- [ツールの種類](#%E3%83%84%E3%83%BC%E3%83%AB%E3%81%AE%E7%A8%AE%E9%A1%9E)
- - [ユーザー定義の `function`](#%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E5%AE%9A%E7%BE%A9%E3%81%AE-function)
- - [`システム` ツール](#%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0-%E3%83%84%E3%83%BC%E3%83%AB)
- - [組み込みの `integration`](#%E7%B5%84%E3%81%BF%E8%BE%BC%E3%81%BF%E3%81%AE-integration)
- - [直接の `api_call`](#%E7%9B%B4%E6%8E%A5%E3%81%AE-api_call)
-- [統合](#%E7%B5%B1%E5%90%88)
- - [ブレイブサーチ](#%E3%83%96%E3%83%AC%E3%82%A4%E3%83%96%E3%82%B5%E3%83%BC%E3%83%81)
- - [ブラウザベース](#%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6%E3%83%99%E3%83%BC%E3%82%B9)
- - [メール](#%E3%83%A1%E3%83%BC%E3%83%AB)
- - [スパイダー](#%E3%82%B9%E3%83%91%E3%82%A4%E3%83%80%E3%83%BC)
- - [ウィキペディア](#%E3%82%A6%E3%82%A3%E3%82%AD%E3%83%9A%E3%83%87%E3%82%A3%E3%82%A2)
-- [その他の機能](#%E3%81%9D%E3%81%AE%E4%BB%96%E3%81%AE%E6%A9%9F%E8%83%BD)
- - [エージェントへのツールの追加](#%E3%82%A8%E3%83%BC%E3%82%B8%E3%82%A7%E3%83%B3%E3%83%88%E3%81%B8%E3%81%AE%E3%83%84%E3%83%BC%E3%83%AB%E3%81%AE%E8%BF%BD%E5%8A%A0)
- - [セッションとユーザーの管理](#%E3%82%BB%E3%83%83%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%A8%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%81%AE%E7%AE%A1%E7%90%86)
- - [ドキュメントの統合と検索](#%E3%83%89%E3%82%AD%E3%83%A5%E3%83%A1%E3%83%B3%E3%83%88%E3%81%AE%E7%B5%B1%E5%90%88%E3%81%A8%E6%A4%9C%E7%B4%A2)
-- [ローカルクイックスタート](#%E3%83%AD%E3%83%BC%E3%82%AB%E3%83%AB%E3%82%AF%E3%82%A4%E3%83%83%E3%82%AF%E3%82%B9%E3%82%BF%E3%83%BC%E3%83%88)
-- [SDK リファレンス](#sdk-%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9)
-- [APIリファレンス](#api%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9)
+📖 目次
+
+- [はじめに](#introduction)
+- [簡単な例](#quick-example)
+- [主な機能](#key-features)
+- [なぜ Julep と LangChain を比較するのか?](#why-julep-vs-langchain)
+- [さまざまなユースケース](#different-use-cases)
+- [異なるフォームファクター](#different-form-factor)
+- [要約](#in-summary)
+- [インストール](#installation)
+- [Python クイックスタート 🐍](#python-quick-start-)
+- [ステップ 1: エージェントを作成する](#step-1-create-an-agent)
+- [ステップ 2: ストーリーとコミック ストリップを生成するタスクを作成する](#step-2-create-a-task-that-generates-a-story-and-comic-strip)
+- [ステップ 3: タスクを実行する](#step-3-execute-the-task)
+- [ステップ 4: エージェントとチャットする](#step-4-chat-with-the-agent)
+- [Node.js クイック スタート 🟩](#nodejs-quick-start-)
+- [ステップ 1: エージェントを作成する](#step-1-create-an-agent-1)
+- [ステップ 2: ストーリーとコミック ストリップを生成するタスクを作成する](#step-2-create-a-task-that-generates-a-story-and-comic-strip-1)
+- [ステップ 3: タスクを実行する](#step-3-execute-the-task-1)
+- [ステップ 4: エージェントとチャットする](#step-4-chat-with-the-agent-1)
+- [コンポーネント](#components)
+- [メンタルモデル](#mental-model)
+- [コンセプト](#concepts)
+- [タスクの理解](#understanding-tasks)
+- [ワークフロー ステップの種類](#types-of-workflow-steps)
+- [ツールの種類](#tool-types)
+- [ユーザー定義の `function`](#user-defined-functions)
+- [`システム` ツール](#system-tools)
+- [組み込みの `integration`s](#built-in-integrations)
+- [直接の `api_call`](#direct-api_calls)
+- [統合](#integrations)
+- [勇敢な検索](#brave-search)
+- [ブラウザベース](#browserbase)
+- [メールアドレス](#email)
+- [スパイダー](#spider)
+- [天気](#weather)
+- [ウィキペディア](#wikipedia)
+- [その他の機能](#other-features)
+- [エージェントへのツールの追加](#adding-tools-to-agents)
+- [セッションとユーザーの管理](#managing-sessions-and-users)
+- [ドキュメントの統合と検索](#document-integration-and-search)
+- [ローカルクイックスタート](#local-quickstart)
+- [SDKリファレンス](#sdk-reference)
+- [API リファレンス](#api-reference)
diff --git a/deploy/README.md b/deploy/README.md
new file mode 100644
index 000000000..48c004efc
--- /dev/null
+++ b/deploy/README.md
@@ -0,0 +1,69 @@
+# Julep Deployment Configurations
+
+This directory contains various Docker Compose configurations for deploying Julep in different scenarios. Each configuration is tailored to specific use cases and deployment requirements.
+
+## Available Configurations
+
+### 1. Single-Tenant Mode with CPU Embeddings & Managed DB
+- **File:** `docker-compose.single-tenant-cpu-managed.yml`
+- **Description:** Deploys Julep in single-tenant mode using CPU-based embedding services with managed Temporal and LiteLLM databases.
+- **Suitable for:** Development, testing, or small-scale deployments prioritizing simplicity and cost-effectiveness.
+
+### 2. Multi-Tenant Mode with CPU Embeddings & Managed DB
+- **File:** `docker-compose.multi-tenant-cpu-managed.yml`
+- **Description:** Deploys Julep in multi-tenant mode using CPU-based embedding services with managed Temporal and LiteLLM databases.
+- **Suitable for:** Multi-tenant environments requiring manageable complexity with efficient resource usage.
+
+### 3. Single-Tenant Mode with GPU Embeddings & Managed DB
+- **File:** `docker-compose.single-tenant-gpu-managed.yml`
+- **Description:** Deploys Julep in single-tenant mode using GPU-based embedding services with managed Temporal and LiteLLM databases.
+- **Suitable for:** Single-tenant deployments needing enhanced performance through GPU-powered embeddings.
+
+### 4. Multi-Tenant Mode with GPU Embeddings & Managed DB
+- **File:** `docker-compose.multi-tenant-gpu-managed.yml`
+- **Description:** Deploys Julep in multi-tenant mode using GPU-based embedding services with managed Temporal and LiteLLM databases.
+- **Suitable for:** Large-scale multi-tenant deployments demanding high-performance embeddings.
+
+### 5. Single-Tenant Mode with CPU Embeddings & Self-Hosted DB
+- **File:** `docker-compose.single-tenant-cpu-selfhosted.yml`
+- **Description:** Deploys Julep in single-tenant mode using CPU-based embedding services with self-hosted Temporal and LiteLLM databases.
+- **Suitable for:** Deployments where controlling the database infrastructure is preferred over managed services.
+
+### 6. Multi-Tenant Mode with CPU Embeddings & Self-Hosted DB
+- **File:** `docker-compose.multi-tenant-cpu-selfhosted.yml`
+- **Description:** Deploys Julep in multi-tenant mode using CPU-based embedding services with self-hosted Temporal and LiteLLM databases.
+- **Suitable for:** Multi-tenant deployments with greater control over database services, ideal for organizations with specific compliance or customization needs.
+
+### 7. Single-Tenant Mode with GPU Embeddings & Self-Hosted DB
+- **File:** `docker-compose.single-tenant-gpu-selfhosted.yml`
+- **Description:** Deploys Julep in single-tenant mode using GPU-based embedding services with self-hosted Temporal and LiteLLM databases.
+- **Suitable for:** High-performance single-tenant deployments that require self-managed databases for specialized configurations.
+
+### 8. Multi-Tenant Mode with GPU Embeddings & Self-Hosted DB
+- **File:** `docker-compose.multi-tenant-gpu-selfhosted.yml`
+- **Description:** Deploys Julep in multi-tenant mode using GPU-based embedding services with self-hosted Temporal and LiteLLM databases.
+- **Suitable for:** High-performance, multi-tenant deployments that require full control over both embedding services and database infrastructure.
+
+## Configuration Components
+
+Each configuration file combines the following components:
+
+- **Tenancy Mode:** Single-tenant or Multi-tenant
+- **Embedding Service:** CPU-based or GPU-based
+- **Database Management:** Managed or Self-hosted
+
+## Additional Services
+
+- **Temporal UI:** Available as an optional add-on for all configurations to provide a web-based interface for monitoring Temporal workflows.
+
+## Choosing a Configuration
+
+Select the configuration that best matches your deployment requirements, considering factors such as:
+
+- Number of tenants
+- Performance needs
+- Infrastructure control preferences
+- Scalability requirements
+- Development vs. Production environment
+
+Refer to the individual Docker Compose files for detailed service configurations and environment variable requirements.
\ No newline at end of file
diff --git a/deploy/docker-compose.multi-tenant-cpu-managed.yml b/deploy/docker-compose.multi-tenant-cpu-managed.yml
new file mode 100644
index 000000000..777b5fa07
--- /dev/null
+++ b/deploy/docker-compose.multi-tenant-cpu-managed.yml
@@ -0,0 +1,175 @@
+version: '3.8'
+
+services:
+ memory-store:
+ image: julepai/memory-store:${TAG}
+ environment:
+ COZO_AUTH_TOKEN: ${COZO_AUTH_TOKEN}
+ COZO_PORT: 9070
+ COZO_MNT_DIR: /data
+ COZO_BACKUP_DIR: /backup
+ volumes:
+ - cozo_data:/data
+ - cozo_backup:/backup
+ ports:
+ - "9070:9070"
+
+ gateway:
+ image: julepai/gateway:${TAG}
+ environment:
+ GATEWAY_PORT: 80
+ JWT_SHARED_KEY: ${JWT_SHARED_KEY}
+ AGENTS_API_URL: http://agents-api-multi-tenant:8080
+ AGENTS_API_KEY: ${AGENTS_API_KEY}
+ AGENTS_API_KEY_HEADER_NAME: Authorization
+ TRAEFIK_LOG_LEVEL: INFO
+ ports:
+ - "80:80"
+
+ embedding-service:
+ image: ghcr.io/huggingface/text-embeddings-inference:cpu-1.5
+ environment:
+ MODEL_ID: Alibaba-NLP/gte-large-en-v1.5
+ OPENAI_API_KEY: ${OPENAI_API_KEY}
+ ANTHROPIC_API_KEY: ${ANTHROPIC_API_KEY}
+ GROQ_API_KEY: ${GROQ_API_KEY}
+ CLOUDFLARE_API_KEY: ${CLOUDFLARE_API_KEY}
+ CLOUDFLARE_ACCOUNT_ID: ${CLOUDFLARE_ACCOUNT_ID}
+ NVIDIA_NIM_API_KEY: ${NVIDIA_NIM_API_KEY}
+ GITHUB_API_KEY: ${GITHUB_API_KEY}
+ VOYAGE_API_KEY: ${VOYAGE_API_KEY}
+ GOOGLE_APPLICATION_CREDENTIALS: ${GOOGLE_APPLICATION_CREDENTIALS}
+ TRUNCATE_EMBED_TEXT: True
+ volumes:
+ - ~/.cache/huggingface/hub:/data
+
+ agents-api-multi-tenant:
+ image: julepai/agents-api:${TAG}
+ environment:
+ AGENTS_API_KEY: ${AGENTS_API_KEY}
+ AGENTS_API_KEY_HEADER_NAME: Authorization
+ AGENTS_API_HOSTNAME: gateway
+ AGENTS_API_PUBLIC_PORT: 80
+ AGENTS_API_PROTOCOL: http
+ COZO_AUTH_TOKEN: ${COZO_AUTH_TOKEN}
+ COZO_HOST: http://memory-store:9070
+ DEBUG: False
+ EMBEDDING_MODEL_ID: Alibaba-NLP/gte-large-en-v1.5
+ INTEGRATION_SERVICE_URL: http://integrations:8000
+ LITELLM_MASTER_KEY: ${LITELLM_MASTER_KEY}
+ LITELLM_URL: http://litellm:4000
+ SUMMARIZATION_MODEL_NAME: gpt-4-turbo
+ TEMPORAL_ENDPOINT: temporal:7233
+ TEMPORAL_NAMESPACE: default
+ TEMPORAL_TASK_QUEUE: julep-task-queue
+ TEMPORAL_WORKER_URL: temporal:7233
+ WORKER_URL: temporal:7233
+ AGENTS_API_MULTI_TENANT_MODE: true
+ AGENTS_API_PREFIX: "/api"
+ ports:
+ - "8080:8080"
+ depends_on:
+ memory-store:
+ condition: service_started
+ gateway:
+ condition: service_started
+
+ litellm:
+ image: ghcr.io/berriai/litellm-database:main-v1.46.6
+ environment:
+ LITELLM_MASTER_KEY: ${LITELLM_MASTER_KEY}
+ DATABASE_URL: ${LITELLM_DATABASE_URL:-postgresql://${LITELLM_POSTGRES_USER:-llmproxy}:${LITELLM_POSTGRES_PASSWORD}@litellm-db:5432/${LITELLM_POSTGRES_DB:-litellm}?sslmode=prefer_ssl}
+ REDIS_URL: ${LITELLM_REDIS_URL:-redis://default:${LITELLM_REDIS_PASSWORD}@litellm-redis:6379}
+ OPENAI_API_KEY: ${OPENAI_API_KEY}
+ ANTHROPIC_API_KEY: ${ANTHROPIC_API_KEY}
+ GROQ_API_KEY: ${GROQ_API_KEY}
+ CLOUDFLARE_API_KEY: ${CLOUDFLARE_API_KEY}
+ CLOUDFLARE_ACCOUNT_ID: ${CLOUDFLARE_ACCOUNT_ID}
+ NVIDIA_NIM_API_KEY: ${NVIDIA_NIM_API_KEY}
+ GITHUB_API_KEY: ${GITHUB_API_KEY}
+ VOYAGE_API_KEY: ${VOYAGE_API_KEY}
+ GOOGLE_APPLICATION_CREDENTIALS: ${GOOGLE_APPLICATION_CREDENTIALS}
+ volumes:
+ - ./litellm-config.yaml:/app/config.yaml
+ - .keys:/app/.keys:ro
+ ports:
+ - "4000:4000"
+ depends_on:
+ litellm-db:
+ condition: service_started
+ litellm-redis:
+ condition: service_started
+
+ litellm-db:
+ image: postgres:16
+ restart: unless-stopped
+ volumes:
+ - litellm-db-data:/var/lib/postgresql/data
+ environment:
+ POSTGRES_DB: ${LITELLM_POSTGRES_DB:-litellm}
+ POSTGRES_USER: ${LITELLM_POSTGRES_USER:-llmproxy}
+ POSTGRES_PASSWORD: ${LITELLM_POSTGRES_PASSWORD}
+ healthcheck:
+ test: ["CMD-SHELL", "pg_isready -d ${LITELLM_POSTGRES_DB:-litellm} -U ${LITELLM_POSTGRES_USER:-llmproxy}"]
+ interval: 1s
+ timeout: 5s
+ retries: 10
+
+ litellm-redis:
+ image: redis/redis-stack-server
+ restart: unless-stopped
+ environment:
+ REDIS_ARGS: --requirepass ${LITELLM_REDIS_PASSWORD}
+ volumes:
+ - litellm-redis-data:/data
+
+ temporal:
+ image: temporalio/auto-setup:1.25
+ hostname: temporal
+ environment:
+ POSTGRES_PWD: ${TEMPORAL_POSTGRES_PASSWORD}
+ POSTGRES_DB: ${TEMPORAL_POSTGRES_DB:-temporal}
+ POSTGRES_SEEDS: temporal-db
+ DB_HOST: temporal-db
+ DB_PORT: 5432
+ POSTGRES_USER: temporal
+ TEMPORAL_ADDRESS: temporal:7233
+ POSTGRES_TLS_ENABLED: false
+ POSTGRES_TLS_CA_FILE: /cert/ca.crt
+ SQL_TLS_ENABLED: false
+ SQL_CA: /cert/ca.crt
+ POSTGRES_TLS_DISABLE_HOST_VERIFICATION: false
+ VISIBILITY_DBNAME: temporal_visibility
+ SKIP_SCHEMA_SETUP: false
+ SKIP_DB_CREATE: false
+ DYNAMIC_CONFIG_FILE_PATH: config/dynamicconfig/temporal-postgres.yaml
+ DB: postgres12
+ LOG_LEVEL: info
+ volumes:
+ - ./scheduler/dynamicconfig:/etc/temporal/config/dynamicconfig
+ - ./scheduler/cert:/cert
+ depends_on:
+ temporal-db:
+ condition: service_started
+
+ temporal-db:
+ image: postgres:16
+ restart: unless-stopped
+ volumes:
+ - temporal-db-data:/var/lib/postgresql/data
+ environment:
+ POSTGRES_DB: ${TEMPORAL_POSTGRES_DB:-temporal}
+ POSTGRES_USER: temporal
+ POSTGRES_PASSWORD: ${TEMPORAL_POSTGRES_PASSWORD}
+ healthcheck:
+ test: ["CMD-SHELL", "pg_isready -d ${TEMPORAL_POSTGRES_DB:-temporal} -U temporal"]
+ interval: 1s
+ timeout: 5s
+ retries: 10
+
+volumes:
+ cozo_data:
+ cozo_backup:
+ litellm-db-data:
+ litellm-redis-data:
+ temporal-db-data:
\ No newline at end of file
diff --git a/deploy/docker-compose.multi-tenant-cpu-selfhosted.yml b/deploy/docker-compose.multi-tenant-cpu-selfhosted.yml
new file mode 100644
index 000000000..caf68e46c
--- /dev/null
+++ b/deploy/docker-compose.multi-tenant-cpu-selfhosted.yml
@@ -0,0 +1,144 @@
+version: '3.8'
+
+services:
+ memory-store:
+ image: julepai/memory-store:${TAG}
+ environment:
+ COZO_AUTH_TOKEN: ${COZO_AUTH_TOKEN}
+ COZO_PORT: 9070
+ COZO_MNT_DIR: /data
+ COZO_BACKUP_DIR: /backup
+ volumes:
+ - cozo_data:/data
+ - cozo_backup:/backup
+ ports:
+ - "9070:9070"
+
+ gateway:
+ image: julepai/gateway:${TAG}
+ environment:
+ GATEWAY_PORT: 80
+ JWT_SHARED_KEY: ${JWT_SHARED_KEY}
+ AGENTS_API_URL: http://agents-api-multi-tenant:8080
+ AGENTS_API_KEY: ${AGENTS_API_KEY}
+ AGENTS_API_KEY_HEADER_NAME: Authorization
+ TRAEFIK_LOG_LEVEL: INFO
+ ports:
+ - "80:80"
+
+ embedding-service:
+ image: ghcr.io/huggingface/text-embeddings-inference:cpu-1.5
+ environment:
+ MODEL_ID: Alibaba-NLP/gte-large-en-v1.5
+ OPENAI_API_KEY: ${OPENAI_API_KEY}
+ ANTHROPIC_API_KEY: ${ANTHROPIC_API_KEY}
+ GROQ_API_KEY: ${GROQ_API_KEY}
+ CLOUDFLARE_API_KEY: ${CLOUDFLARE_API_KEY}
+ CLOUDFLARE_ACCOUNT_ID: ${CLOUDFLARE_ACCOUNT_ID}
+ NVIDIA_NIM_API_KEY: ${NVIDIA_NIM_API_KEY}
+ GITHUB_API_KEY: ${GITHUB_API_KEY}
+ VOYAGE_API_KEY: ${VOYAGE_API_KEY}
+ GOOGLE_APPLICATION_CREDENTIALS: ${GOOGLE_APPLICATION_CREDENTIALS}
+ TRUNCATE_EMBED_TEXT: True
+ volumes:
+ - ~/.cache/huggingface/hub:/data
+
+ agents-api-multi-tenant:
+ image: julepai/agents-api:${TAG}
+ environment:
+ AGENTS_API_KEY: ${AGENTS_API_KEY}
+ AGENTS_API_KEY_HEADER_NAME: Authorization
+ AGENTS_API_HOSTNAME: gateway
+ AGENTS_API_PUBLIC_PORT: 80
+ AGENTS_API_PROTOCOL: http
+ COZO_AUTH_TOKEN: ${COZO_AUTH_TOKEN}
+ COZO_HOST: http://memory-store:9070
+ DEBUG: False
+ EMBEDDING_MODEL_ID: Alibaba-NLP/gte-large-en-v1.5
+ INTEGRATION_SERVICE_URL: http://integrations:8000
+ LITELLM_MASTER_KEY: ${LITELLM_MASTER_KEY}
+ LITELLM_URL: http://litellm:4000
+ SUMMARIZATION_MODEL_NAME: gpt-4-turbo
+ TEMPORAL_ENDPOINT: temporal:7233
+ TEMPORAL_NAMESPACE: default
+ TEMPORAL_TASK_QUEUE: julep-task-queue
+ TEMPORAL_WORKER_URL: temporal:7233
+ WORKER_URL: temporal:7233
+ AGENTS_API_MULTI_TENANT_MODE: true
+ AGENTS_API_PREFIX: "/api"
+ ports:
+ - "8080:8080"
+ depends_on:
+ memory-store:
+ condition: service_started
+ gateway:
+ condition: service_started
+
+ litellm:
+ image: ghcr.io/berriai/litellm-database:main-v1.46.6
+ environment:
+ LITELLM_MASTER_KEY: ${LITELLM_MASTER_KEY}
+ DATABASE_URL: postgresql://${LITELLM_POSTGRES_USER:-llmproxy}:${LITELLM_POSTGRES_PASSWORD}@litellm-db:5432/${LITELLM_POSTGRES_DB:-litellm}?sslmode=prefer
+ REDIS_URL: redis://default:${LITELLM_REDIS_PASSWORD}@litellm-redis:6379
+ volumes:
+ - ./litellm-config.yaml:/app/config.yaml
+ - .keys:/app/.keys:ro
+ ports:
+ - "4000:4000"
+ depends_on:
+ litellm-db:
+ condition: service_healthy
+ litellm-redis:
+ condition: service_started
+
+ litellm-db:
+ image: postgres:16
+ environment:
+ POSTGRES_DB: ${LITELLM_POSTGRES_DB:-litellm}
+ POSTGRES_USER: ${LITELLM_POSTGRES_USER:-llmproxy}
+ POSTGRES_PASSWORD: ${LITELLM_POSTGRES_PASSWORD}
+ volumes:
+ - litellm-db-data:/var/lib/postgresql/data
+ healthcheck:
+ test: ["CMD-SHELL", "pg_isready -U ${LITELLM_POSTGRES_USER:-llmproxy}"]
+ interval: 5s
+ timeout: 5s
+ retries: 5
+
+ litellm-redis:
+ image: redis:6
+ command: redis-server --requirepass ${LITELLM_REDIS_PASSWORD}
+ volumes:
+ - litellm-redis-data:/data
+
+ temporal:
+ image: temporalio/auto-setup:1.25
+ environment:
+ - DB=postgresql
+ - DB_PORT=5432
+ - POSTGRES_USER=${TEMPORAL_POSTGRES_USER:-temporal}
+ - POSTGRES_PWD=${TEMPORAL_POSTGRES_PASSWORD}
+ - POSTGRES_SEEDS=temporal-db
+ depends_on:
+ temporal-db:
+ condition: service_healthy
+
+ temporal-db:
+ image: postgres:16
+ environment:
+ POSTGRES_PASSWORD: ${TEMPORAL_POSTGRES_PASSWORD}
+ POSTGRES_USER: ${TEMPORAL_POSTGRES_USER:-temporal}
+ volumes:
+ - temporal-db-data:/var/lib/postgresql/data
+ healthcheck:
+ test: ["CMD-SHELL", "pg_isready -U ${TEMPORAL_POSTGRES_USER:-temporal}"]
+ interval: 5s
+ timeout: 5s
+ retries: 5
+
+volumes:
+ cozo_data:
+ cozo_backup:
+ litellm-db-data:
+ litellm-redis-data:
+ temporal-db-data:
\ No newline at end of file
diff --git a/deploy/docker-compose.multi-tenant-gpu-managed.yml b/deploy/docker-compose.multi-tenant-gpu-managed.yml
new file mode 100644
index 000000000..e9e1e9bd7
--- /dev/null
+++ b/deploy/docker-compose.multi-tenant-gpu-managed.yml
@@ -0,0 +1,84 @@
+version: '3.8'
+
+services:
+ memory-store:
+ image: julepai/memory-store:${TAG}
+ environment:
+ COZO_AUTH_TOKEN: ${COZO_AUTH_TOKEN}
+ COZO_PORT: 9070
+ COZO_MNT_DIR: /data
+ COZO_BACKUP_DIR: /backup
+ volumes:
+ - cozo_data:/data
+ - cozo_backup:/backup
+ ports:
+ - "9070:9070"
+
+ gateway:
+ image: julepai/gateway:${TAG}
+ environment:
+ GATEWAY_PORT: 80
+ JWT_SHARED_KEY: ${JWT_SHARED_KEY}
+ AGENTS_API_URL: http://agents-api-multi-tenant:8080
+ AGENTS_API_KEY: ${AGENTS_API_KEY}
+ AGENTS_API_KEY_HEADER_NAME: Authorization
+ TRAEFIK_LOG_LEVEL: INFO
+ ports:
+ - "80:80"
+
+ embedding-service:
+ image: ghcr.io/huggingface/text-embeddings-inference:gpu-1.5
+ environment:
+ MODEL_ID: Alibaba-NLP/gte-large-en-v1.5
+ OPENAI_API_KEY: ${OPENAI_API_KEY}
+ ANTHROPIC_API_KEY: ${ANTHROPIC_API_KEY}
+ GROQ_API_KEY: ${GROQ_API_KEY}
+ CLOUDFLARE_API_KEY: ${CLOUDFLARE_API_KEY}
+ CLOUDFLARE_ACCOUNT_ID: ${CLOUDFLARE_ACCOUNT_ID}
+ NVIDIA_NIM_API_KEY: ${NVIDIA_NIM_API_KEY}
+ GITHUB_API_KEY: ${GITHUB_API_KEY}
+ VOYAGE_API_KEY: ${VOYAGE_API_KEY}
+ GOOGLE_APPLICATION_CREDENTIALS: ${GOOGLE_APPLICATION_CREDENTIALS}
+ TRUNCATE_EMBED_TEXT: True
+ volumes:
+ - ~/.cache/huggingface/hub:/data
+ deploy:
+ resources:
+ reservations:
+ devices:
+ - capabilities: [gpu]
+
+ agents-api-multi-tenant:
+ image: julepai/agents-api:${TAG}
+ environment:
+ AGENTS_API_KEY: ${AGENTS_API_KEY}
+ AGENTS_API_KEY_HEADER_NAME: Authorization
+ AGENTS_API_HOSTNAME: gateway
+ AGENTS_API_PUBLIC_PORT: 80
+ AGENTS_API_PROTOCOL: http
+ COZO_AUTH_TOKEN: ${COZO_AUTH_TOKEN}
+ COZO_HOST: http://memory-store:9070
+ DEBUG: False
+ EMBEDDING_MODEL_ID: Alibaba-NLP/gte-large-en-v1.5
+ INTEGRATION_SERVICE_URL: http://integrations:8000
+ LITELLM_MASTER_KEY: ${LITELLM_MASTER_KEY}
+ LITELLM_URL: http://litellm:4000
+ SUMMARIZATION_MODEL_NAME: gpt-4-turbo
+ TEMPORAL_ENDPOINT: temporal:7233
+ TEMPORAL_NAMESPACE: default
+ TEMPORAL_TASK_QUEUE: julep-task-queue
+ TEMPORAL_WORKER_URL: temporal:7233
+ WORKER_URL: temporal:7233
+ AGENTS_API_MULTI_TENANT_MODE: true
+ AGENTS_API_PREFIX: "/api"
+ ports:
+ - "8080:8080"
+ depends_on:
+ memory-store:
+ condition: service_started
+ gateway:
+ condition: service_started
+
+volumes:
+ cozo_data:
+ cozo_backup:
\ No newline at end of file
diff --git a/deploy/docker-compose.multi-tenant-gpu-selfhosted.yml b/deploy/docker-compose.multi-tenant-gpu-selfhosted.yml
new file mode 100644
index 000000000..737a21e2d
--- /dev/null
+++ b/deploy/docker-compose.multi-tenant-gpu-selfhosted.yml
@@ -0,0 +1,149 @@
+version: '3.8'
+
+services:
+ memory-store:
+ image: julepai/memory-store:${TAG}
+ environment:
+ COZO_AUTH_TOKEN: ${COZO_AUTH_TOKEN}
+ COZO_PORT: 9070
+ COZO_MNT_DIR: /data
+ COZO_BACKUP_DIR: /backup
+ volumes:
+ - cozo_data:/data
+ - cozo_backup:/backup
+ ports:
+ - "9070:9070"
+
+ gateway:
+ image: julepai/gateway:${TAG}
+ environment:
+ GATEWAY_PORT: 80
+ JWT_SHARED_KEY: ${JWT_SHARED_KEY}
+ AGENTS_API_URL: http://agents-api-multi-tenant:8080
+ AGENTS_API_KEY: ${AGENTS_API_KEY}
+ AGENTS_API_KEY_HEADER_NAME: Authorization
+ TRAEFIK_LOG_LEVEL: INFO
+ ports:
+ - "80:80"
+
+ embedding-service:
+ image: ghcr.io/huggingface/text-embeddings-inference:gpu-1.5
+ environment:
+ MODEL_ID: Alibaba-NLP/gte-large-en-v1.5
+ OPENAI_API_KEY: ${OPENAI_API_KEY}
+ ANTHROPIC_API_KEY: ${ANTHROPIC_API_KEY}
+ GROQ_API_KEY: ${GROQ_API_KEY}
+ CLOUDFLARE_API_KEY: ${CLOUDFLARE_API_KEY}
+ CLOUDFLARE_ACCOUNT_ID: ${CLOUDFLARE_ACCOUNT_ID}
+ NVIDIA_NIM_API_KEY: ${NVIDIA_NIM_API_KEY}
+ GITHUB_API_KEY: ${GITHUB_API_KEY}
+ VOYAGE_API_KEY: ${VOYAGE_API_KEY}
+ GOOGLE_APPLICATION_CREDENTIALS: ${GOOGLE_APPLICATION_CREDENTIALS}
+ TRUNCATE_EMBED_TEXT: True
+ volumes:
+ - ~/.cache/huggingface/hub:/data
+ deploy:
+ resources:
+ reservations:
+ devices:
+ - capabilities: [gpu]
+
+ agents-api-multi-tenant:
+ image: julepai/agents-api:${TAG}
+ environment:
+ AGENTS_API_KEY: ${AGENTS_API_KEY}
+ AGENTS_API_KEY_HEADER_NAME: Authorization
+ AGENTS_API_HOSTNAME: gateway
+ AGENTS_API_PUBLIC_PORT: 80
+ AGENTS_API_PROTOCOL: http
+ COZO_AUTH_TOKEN: ${COZO_AUTH_TOKEN}
+ COZO_HOST: http://memory-store:9070
+ DEBUG: False
+ EMBEDDING_MODEL_ID: Alibaba-NLP/gte-large-en-v1.5
+ INTEGRATION_SERVICE_URL: http://integrations:8000
+ LITELLM_MASTER_KEY: ${LITELLM_MASTER_KEY}
+ LITELLM_URL: http://litellm:4000
+ SUMMARIZATION_MODEL_NAME: gpt-4-turbo
+ TEMPORAL_ENDPOINT: temporal:7233
+ TEMPORAL_NAMESPACE: default
+ TEMPORAL_TASK_QUEUE: julep-task-queue
+ TEMPORAL_WORKER_URL: temporal:7233
+ WORKER_URL: temporal:7233
+ AGENTS_API_MULTI_TENANT_MODE: true
+ AGENTS_API_PREFIX: "/api"
+ ports:
+ - "8080:8080"
+ depends_on:
+ memory-store:
+ condition: service_started
+ gateway:
+ condition: service_started
+
+ litellm:
+ image: ghcr.io/berriai/litellm-database:main-v1.46.6
+ environment:
+ LITELLM_MASTER_KEY: ${LITELLM_MASTER_KEY}
+ DATABASE_URL: postgresql://${LITELLM_POSTGRES_USER:-llmproxy}:${LITELLM_POSTGRES_PASSWORD}@litellm-db:5432/${LITELLM_POSTGRES_DB:-litellm}?sslmode=prefer
+ REDIS_URL: redis://default:${LITELLM_REDIS_PASSWORD}@litellm-redis:6379
+ volumes:
+ - ./litellm-config.yaml:/app/config.yaml
+ - .keys:/app/.keys:ro
+ ports:
+ - "4000:4000"
+ depends_on:
+ litellm-db:
+ condition: service_healthy
+ litellm-redis:
+ condition: service_started
+
+ litellm-db:
+ image: postgres:16
+ environment:
+ POSTGRES_DB: ${LITELLM_POSTGRES_DB:-litellm}
+ POSTGRES_USER: ${LITELLM_POSTGRES_USER:-llmproxy}
+ POSTGRES_PASSWORD: ${LITELLM_POSTGRES_PASSWORD}
+ volumes:
+ - litellm-db-data:/var/lib/postgresql/data
+ healthcheck:
+ test: ["CMD-SHELL", "pg_isready -U ${LITELLM_POSTGRES_USER:-llmproxy}"]
+ interval: 5s
+ timeout: 5s
+ retries: 5
+
+ litellm-redis:
+ image: redis:6
+ command: redis-server --requirepass ${LITELLM_REDIS_PASSWORD}
+ volumes:
+ - litellm-redis-data:/data
+
+ temporal:
+ image: temporalio/auto-setup:1.25
+ environment:
+ - DB=postgresql
+ - DB_PORT=5432
+ - POSTGRES_USER=${TEMPORAL_POSTGRES_USER:-temporal}
+ - POSTGRES_PWD=${TEMPORAL_POSTGRES_PASSWORD}
+ - POSTGRES_SEEDS=temporal-db
+ depends_on:
+ temporal-db:
+ condition: service_healthy
+
+ temporal-db:
+ image: postgres:16
+ environment:
+ POSTGRES_PASSWORD: ${TEMPORAL_POSTGRES_PASSWORD}
+ POSTGRES_USER: ${TEMPORAL_POSTGRES_USER:-temporal}
+ volumes:
+ - temporal-db-data:/var/lib/postgresql/data
+ healthcheck:
+ test: ["CMD-SHELL", "pg_isready -U ${TEMPORAL_POSTGRES_USER:-temporal}"]
+ interval: 5s
+ timeout: 5s
+ retries: 5
+
+volumes:
+ cozo_data:
+ cozo_backup:
+ litellm-db-data:
+ litellm-redis-data:
+ temporal-db-data:
\ No newline at end of file
diff --git a/deploy/docker-compose.single-tenant-cpu-managed.yml b/deploy/docker-compose.single-tenant-cpu-managed.yml
new file mode 100644
index 000000000..cdcf2bc59
--- /dev/null
+++ b/deploy/docker-compose.single-tenant-cpu-managed.yml
@@ -0,0 +1,75 @@
+version: '3.8'
+
+services:
+ memory-store:
+ image: julepai/memory-store:${TAG}
+ environment:
+ COZO_AUTH_TOKEN: ${COZO_AUTH_TOKEN}
+ COZO_PORT: 9070
+ COZO_MNT_DIR: /data
+ COZO_BACKUP_DIR: /backup
+ volumes:
+ - cozo_data:/data
+ - cozo_backup:/backup
+ ports:
+ - "9070:9070"
+
+ gateway:
+ image: julepai/gateway:${TAG}
+ environment:
+ GATEWAY_PORT: 80
+ JWT_SHARED_KEY: ${JWT_SHARED_KEY}
+ AGENTS_API_URL: http://agents-api:8080
+ AGENTS_API_KEY: ${AGENTS_API_KEY}
+ AGENTS_API_KEY_HEADER_NAME: Authorization
+ TRAEFIK_LOG_LEVEL: INFO
+ ports:
+ - "80:80"
+
+ embedding-service:
+ image: ghcr.io/huggingface/text-embeddings-inference:cpu-1.5
+ environment:
+ MODEL_ID: Alibaba-NLP/gte-large-en-v1.5
+ OPENAI_API_KEY: ${OPENAI_API_KEY}
+ ANTHROPIC_API_KEY: ${ANTHROPIC_API_KEY}
+ GROQ_API_KEY: ${GROQ_API_KEY}
+ CLOUDFLARE_API_KEY: ${CLOUDFLARE_API_KEY}
+ CLOUDFLARE_ACCOUNT_ID: ${CLOUDFLARE_ACCOUNT_ID}
+ NVIDIA_NIM_API_KEY: ${NVIDIA_NIM_API_KEY}
+ GITHUB_API_KEY: ${GITHUB_API_KEY}
+ VOYAGE_API_KEY: ${VOYAGE_API_KEY}
+ GOOGLE_APPLICATION_CREDENTIALS: ${GOOGLE_APPLICATION_CREDENTIALS}
+ TRUNCATE_EMBED_TEXT: True
+ volumes:
+ - ~/.cache/huggingface/hub:/data
+
+ agents-api:
+ image: julepai/agents-api:${TAG}
+ environment:
+ AGENTS_API_KEY: ${AGENTS_API_KEY}
+ AGENTS_API_KEY_HEADER_NAME: Authorization
+ AGENTS_API_HOSTNAME: localhost
+ AGENTS_API_PUBLIC_PORT: 80
+ AGENTS_API_PROTOCOL: http
+ COZO_AUTH_TOKEN: ${COZO_AUTH_TOKEN}
+ COZO_HOST: http://memory-store:9070
+ DEBUG: False
+ EMBEDDING_MODEL_ID: Alibaba-NLP/gte-large-en-v1.5
+ INTEGRATION_SERVICE_URL: http://integrations:8000
+ LITELLM_MASTER_KEY: ${LITELLM_MASTER_KEY}
+ LITELLM_URL: http://litellm:4000
+ SUMMARIZATION_MODEL_NAME: gpt-4-turbo
+ TEMPORAL_ENDPOINT: temporal:7233
+ TEMPORAL_NAMESPACE: default
+ TEMPORAL_TASK_QUEUE: julep-task-queue
+ TEMPORAL_WORKER_URL: temporal:7233
+ WORKER_URL: temporal:7233
+ ports:
+ - "8080:8080"
+ depends_on:
+ memory-store:
+ condition: service_started
+
+volumes:
+ cozo_data:
+ cozo_backup:
\ No newline at end of file
diff --git a/deploy/docker-compose.single-tenant-cpu-selfhosted.yml b/deploy/docker-compose.single-tenant-cpu-selfhosted.yml
new file mode 100644
index 000000000..9cd63e64e
--- /dev/null
+++ b/deploy/docker-compose.single-tenant-cpu-selfhosted.yml
@@ -0,0 +1,140 @@
+version: '3.8'
+
+services:
+ memory-store:
+ image: julepai/memory-store:${TAG}
+ environment:
+ COZO_AUTH_TOKEN: ${COZO_AUTH_TOKEN}
+ COZO_PORT: 9070
+ COZO_MNT_DIR: /data
+ COZO_BACKUP_DIR: /backup
+ volumes:
+ - cozo_data:/data
+ - cozo_backup:/backup
+ ports:
+ - "9070:9070"
+
+ gateway:
+ image: julepai/gateway:${TAG}
+ environment:
+ GATEWAY_PORT: 80
+ JWT_SHARED_KEY: ${JWT_SHARED_KEY}
+ AGENTS_API_URL: http://agents-api:8080
+ AGENTS_API_KEY: ${AGENTS_API_KEY}
+ AGENTS_API_KEY_HEADER_NAME: Authorization
+ TRAEFIK_LOG_LEVEL: INFO
+ ports:
+ - "80:80"
+
+ embedding-service:
+ image: ghcr.io/huggingface/text-embeddings-inference:cpu-1.5
+ environment:
+ MODEL_ID: Alibaba-NLP/gte-large-en-v1.5
+ OPENAI_API_KEY: ${OPENAI_API_KEY}
+ ANTHROPIC_API_KEY: ${ANTHROPIC_API_KEY}
+ GROQ_API_KEY: ${GROQ_API_KEY}
+ CLOUDFLARE_API_KEY: ${CLOUDFLARE_API_KEY}
+ CLOUDFLARE_ACCOUNT_ID: ${CLOUDFLARE_ACCOUNT_ID}
+ NVIDIA_NIM_API_KEY: ${NVIDIA_NIM_API_KEY}
+ GITHUB_API_KEY: ${GITHUB_API_KEY}
+ VOYAGE_API_KEY: ${VOYAGE_API_KEY}
+ GOOGLE_APPLICATION_CREDENTIALS: ${GOOGLE_APPLICATION_CREDENTIALS}
+ TRUNCATE_EMBED_TEXT: True
+ volumes:
+ - ~/.cache/huggingface/hub:/data
+
+ agents-api:
+ image: julepai/agents-api:${TAG}
+ environment:
+ AGENTS_API_KEY: ${AGENTS_API_KEY}
+ AGENTS_API_KEY_HEADER_NAME: Authorization
+ AGENTS_API_HOSTNAME: localhost
+ AGENTS_API_PUBLIC_PORT: 80
+ AGENTS_API_PROTOCOL: http
+ COZO_AUTH_TOKEN: ${COZO_AUTH_TOKEN}
+ COZO_HOST: http://memory-store:9070
+ DEBUG: False
+ EMBEDDING_MODEL_ID: Alibaba-NLP/gte-large-en-v1.5
+ INTEGRATION_SERVICE_URL: http://integrations:8000
+ LITELLM_MASTER_KEY: ${LITELLM_MASTER_KEY}
+ LITELLM_URL: http://litellm:4000
+ SUMMARIZATION_MODEL_NAME: gpt-4-turbo
+ TEMPORAL_ENDPOINT: temporal:7233
+ TEMPORAL_NAMESPACE: default
+ TEMPORAL_TASK_QUEUE: julep-task-queue
+ TEMPORAL_WORKER_URL: temporal:7233
+ WORKER_URL: temporal:7233
+ ports:
+ - "8080:8080"
+ depends_on:
+ memory-store:
+ condition: service_started
+
+ litellm:
+ image: ghcr.io/berriai/litellm-database:main-v1.46.6
+ environment:
+ LITELLM_MASTER_KEY: ${LITELLM_MASTER_KEY}
+ DATABASE_URL: postgresql://${LITELLM_POSTGRES_USER:-llmproxy}:${LITELLM_POSTGRES_PASSWORD}@litellm-db:5432/${LITELLM_POSTGRES_DB:-litellm}?sslmode=prefer
+ REDIS_URL: redis://default:${LITELLM_REDIS_PASSWORD}@litellm-redis:6379
+ volumes:
+ - ./litellm-config.yaml:/app/config.yaml
+ - .keys:/app/.keys:ro
+ ports:
+ - "4000:4000"
+ depends_on:
+ litellm-db:
+ condition: service_healthy
+ litellm-redis:
+ condition: service_started
+
+ litellm-db:
+ image: postgres:16
+ environment:
+ POSTGRES_DB: ${LITELLM_POSTGRES_DB:-litellm}
+ POSTGRES_USER: ${LITELLM_POSTGRES_USER:-llmproxy}
+ POSTGRES_PASSWORD: ${LITELLM_POSTGRES_PASSWORD}
+ volumes:
+ - litellm-db-data:/var/lib/postgresql/data
+ healthcheck:
+ test: ["CMD-SHELL", "pg_isready -U ${LITELLM_POSTGRES_USER:-llmproxy}"]
+ interval: 5s
+ timeout: 5s
+ retries: 5
+
+ litellm-redis:
+ image: redis:6
+ command: redis-server --requirepass ${LITELLM_REDIS_PASSWORD}
+ volumes:
+ - litellm-redis-data:/data
+
+ temporal:
+ image: temporalio/auto-setup:1.25
+ environment:
+ - DB=postgresql
+ - DB_PORT=5432
+ - POSTGRES_USER=${TEMPORAL_POSTGRES_USER:-temporal}
+ - POSTGRES_PWD=${TEMPORAL_POSTGRES_PASSWORD}
+ - POSTGRES_SEEDS=temporal-db
+ depends_on:
+ temporal-db:
+ condition: service_healthy
+
+ temporal-db:
+ image: postgres:16
+ environment:
+ POSTGRES_PASSWORD: ${TEMPORAL_POSTGRES_PASSWORD}
+ POSTGRES_USER: ${TEMPORAL_POSTGRES_USER:-temporal}
+ volumes:
+ - temporal-db-data:/var/lib/postgresql/data
+ healthcheck:
+ test: ["CMD-SHELL", "pg_isready -U ${TEMPORAL_POSTGRES_USER:-temporal}"]
+ interval: 5s
+ timeout: 5s
+ retries: 5
+
+volumes:
+ cozo_data:
+ cozo_backup:
+ litellm-db-data:
+ litellm-redis-data:
+ temporal-db-data:
\ No newline at end of file
diff --git a/deploy/docker-compose.single-tenant-gpu-managed.yml b/deploy/docker-compose.single-tenant-gpu-managed.yml
new file mode 100644
index 000000000..eda0f371d
--- /dev/null
+++ b/deploy/docker-compose.single-tenant-gpu-managed.yml
@@ -0,0 +1,80 @@
+version: '3.8'
+
+services:
+ memory-store:
+ image: julepai/memory-store:${TAG}
+ environment:
+ COZO_AUTH_TOKEN: ${COZO_AUTH_TOKEN}
+ COZO_PORT: 9070
+ COZO_MNT_DIR: /data
+ COZO_BACKUP_DIR: /backup
+ volumes:
+ - cozo_data:/data
+ - cozo_backup:/backup
+ ports:
+ - "9070:9070"
+
+ gateway:
+ image: julepai/gateway:${TAG}
+ environment:
+ GATEWAY_PORT: 80
+ JWT_SHARED_KEY: ${JWT_SHARED_KEY}
+ AGENTS_API_URL: http://agents-api:8080
+ AGENTS_API_KEY: ${AGENTS_API_KEY}
+ AGENTS_API_KEY_HEADER_NAME: Authorization
+ TRAEFIK_LOG_LEVEL: INFO
+ ports:
+ - "80:80"
+
+ embedding-service:
+ image: ghcr.io/huggingface/text-embeddings-inference:gpu-1.5
+ environment:
+ MODEL_ID: Alibaba-NLP/gte-large-en-v1.5
+ OPENAI_API_KEY: ${OPENAI_API_KEY}
+ ANTHROPIC_API_KEY: ${ANTHROPIC_API_KEY}
+ GROQ_API_KEY: ${GROQ_API_KEY}
+ CLOUDFLARE_API_KEY: ${CLOUDFLARE_API_KEY}
+ CLOUDFLARE_ACCOUNT_ID: ${CLOUDFLARE_ACCOUNT_ID}
+ NVIDIA_NIM_API_KEY: ${NVIDIA_NIM_API_KEY}
+ GITHUB_API_KEY: ${GITHUB_API_KEY}
+ VOYAGE_API_KEY: ${VOYAGE_API_KEY}
+ GOOGLE_APPLICATION_CREDENTIALS: ${GOOGLE_APPLICATION_CREDENTIALS}
+ TRUNCATE_EMBED_TEXT: True
+ volumes:
+ - ~/.cache/huggingface/hub:/data
+ deploy:
+ resources:
+ reservations:
+ devices:
+ - capabilities: [gpu]
+
+ agents-api:
+ image: julepai/agents-api:${TAG}
+ environment:
+ AGENTS_API_KEY: ${AGENTS_API_KEY}
+ AGENTS_API_KEY_HEADER_NAME: Authorization
+ AGENTS_API_HOSTNAME: localhost
+ AGENTS_API_PUBLIC_PORT: 80
+ AGENTS_API_PROTOCOL: http
+ COZO_AUTH_TOKEN: ${COZO_AUTH_TOKEN}
+ COZO_HOST: http://memory-store:9070
+ DEBUG: False
+ EMBEDDING_MODEL_ID: Alibaba-NLP/gte-large-en-v1.5
+ INTEGRATION_SERVICE_URL: http://integrations:8000
+ LITELLM_MASTER_KEY: ${LITELLM_MASTER_KEY}
+ LITELLM_URL: http://litellm:4000
+ SUMMARIZATION_MODEL_NAME: gpt-4-turbo
+ TEMPORAL_ENDPOINT: temporal:7233
+ TEMPORAL_NAMESPACE: default
+ TEMPORAL_TASK_QUEUE: julep-task-queue
+ TEMPORAL_WORKER_URL: temporal:7233
+ WORKER_URL: temporal:7233
+ ports:
+ - "8080:8080"
+ depends_on:
+ memory-store:
+ condition: service_started
+
+volumes:
+ cozo_data:
+ cozo_backup:
\ No newline at end of file
diff --git a/deploy/docker-compose.single-tenant-gpu-selfhosted.yml b/deploy/docker-compose.single-tenant-gpu-selfhosted.yml
new file mode 100644
index 000000000..c6f42fa98
--- /dev/null
+++ b/deploy/docker-compose.single-tenant-gpu-selfhosted.yml
@@ -0,0 +1,145 @@
+version: '3.8'
+
+services:
+ memory-store:
+ image: julepai/memory-store:${TAG}
+ environment:
+ COZO_AUTH_TOKEN: ${COZO_AUTH_TOKEN}
+ COZO_PORT: 9070
+ COZO_MNT_DIR: /data
+ COZO_BACKUP_DIR: /backup
+ volumes:
+ - cozo_data:/data
+ - cozo_backup:/backup
+ ports:
+ - "9070:9070"
+
+ gateway:
+ image: julepai/gateway:${TAG}
+ environment:
+ GATEWAY_PORT: 80
+ JWT_SHARED_KEY: ${JWT_SHARED_KEY}
+ AGENTS_API_URL: http://agents-api:8080
+ AGENTS_API_KEY: ${AGENTS_API_KEY}
+ AGENTS_API_KEY_HEADER_NAME: Authorization
+ TRAEFIK_LOG_LEVEL: INFO
+ ports:
+ - "80:80"
+
+ embedding-service:
+ image: ghcr.io/huggingface/text-embeddings-inference:gpu-1.5
+ environment:
+ MODEL_ID: Alibaba-NLP/gte-large-en-v1.5
+ OPENAI_API_KEY: ${OPENAI_API_KEY}
+ ANTHROPIC_API_KEY: ${ANTHROPIC_API_KEY}
+ GROQ_API_KEY: ${GROQ_API_KEY}
+ CLOUDFLARE_API_KEY: ${CLOUDFLARE_API_KEY}
+ CLOUDFLARE_ACCOUNT_ID: ${CLOUDFLARE_ACCOUNT_ID}
+ NVIDIA_NIM_API_KEY: ${NVIDIA_NIM_API_KEY}
+ GITHUB_API_KEY: ${GITHUB_API_KEY}
+ VOYAGE_API_KEY: ${VOYAGE_API_KEY}
+ GOOGLE_APPLICATION_CREDENTIALS: ${GOOGLE_APPLICATION_CREDENTIALS}
+ TRUNCATE_EMBED_TEXT: True
+ volumes:
+ - ~/.cache/huggingface/hub:/data
+ deploy:
+ resources:
+ reservations:
+ devices:
+ - capabilities: [gpu]
+
+ agents-api:
+ image: julepai/agents-api:${TAG}
+ environment:
+ AGENTS_API_KEY: ${AGENTS_API_KEY}
+ AGENTS_API_KEY_HEADER_NAME: Authorization
+ AGENTS_API_HOSTNAME: localhost
+ AGENTS_API_PUBLIC_PORT: 80
+ AGENTS_API_PROTOCOL: http
+ COZO_AUTH_TOKEN: ${COZO_AUTH_TOKEN}
+ COZO_HOST: http://memory-store:9070
+ DEBUG: False
+ EMBEDDING_MODEL_ID: Alibaba-NLP/gte-large-en-v1.5
+ INTEGRATION_SERVICE_URL: http://integrations:8000
+ LITELLM_MASTER_KEY: ${LITELLM_MASTER_KEY}
+ LITELLM_URL: http://litellm:4000
+ SUMMARIZATION_MODEL_NAME: gpt-4-turbo
+ TEMPORAL_ENDPOINT: temporal:7233
+ TEMPORAL_NAMESPACE: default
+ TEMPORAL_TASK_QUEUE: julep-task-queue
+ TEMPORAL_WORKER_URL: temporal:7233
+ WORKER_URL: temporal:7233
+ ports:
+ - "8080:8080"
+ depends_on:
+ memory-store:
+ condition: service_started
+
+ litellm:
+ image: ghcr.io/berriai/litellm-database:main-v1.46.6
+ environment:
+ LITELLM_MASTER_KEY: ${LITELLM_MASTER_KEY}
+ DATABASE_URL: postgresql://${LITELLM_POSTGRES_USER:-llmproxy}:${LITELLM_POSTGRES_PASSWORD}@litellm-db:5432/${LITELLM_POSTGRES_DB:-litellm}?sslmode=prefer
+ REDIS_URL: redis://default:${LITELLM_REDIS_PASSWORD}@litellm-redis:6379
+ volumes:
+ - ./litellm-config.yaml:/app/config.yaml
+ - .keys:/app/.keys:ro
+ ports:
+ - "4000:4000"
+ depends_on:
+ litellm-db:
+ condition: service_healthy
+ litellm-redis:
+ condition: service_started
+
+ litellm-db:
+ image: postgres:16
+ environment:
+ POSTGRES_DB: ${LITELLM_POSTGRES_DB:-litellm}
+ POSTGRES_USER: ${LITELLM_POSTGRES_USER:-llmproxy}
+ POSTGRES_PASSWORD: ${LITELLM_POSTGRES_PASSWORD}
+ volumes:
+ - litellm-db-data:/var/lib/postgresql/data
+ healthcheck:
+ test: ["CMD-SHELL", "pg_isready -U ${LITELLM_POSTGRES_USER:-llmproxy}"]
+ interval: 5s
+ timeout: 5s
+ retries: 5
+
+ litellm-redis:
+ image: redis:6
+ command: redis-server --requirepass ${LITELLM_REDIS_PASSWORD}
+ volumes:
+ - litellm-redis-data:/data
+
+ temporal:
+ image: temporalio/auto-setup:1.25
+ environment:
+ - DB=postgresql
+ - DB_PORT=5432
+ - POSTGRES_USER=${TEMPORAL_POSTGRES_USER:-temporal}
+ - POSTGRES_PWD=${TEMPORAL_POSTGRES_PASSWORD}
+ - POSTGRES_SEEDS=temporal-db
+ depends_on:
+ temporal-db:
+ condition: service_healthy
+
+ temporal-db:
+ image: postgres:16
+ environment:
+ POSTGRES_PASSWORD: ${TEMPORAL_POSTGRES_PASSWORD}
+ POSTGRES_USER: ${TEMPORAL_POSTGRES_USER:-temporal}
+ volumes:
+ - temporal-db-data:/var/lib/postgresql/data
+ healthcheck:
+ test: ["CMD-SHELL", "pg_isready -U ${TEMPORAL_POSTGRES_USER:-temporal}"]
+ interval: 5s
+ timeout: 5s
+ retries: 5
+
+volumes:
+ cozo_data:
+ cozo_backup:
+ litellm-db-data:
+ litellm-redis-data:
+ temporal-db-data:
\ No newline at end of file