Run Superagent with Docker Compose
You can run some or all of Superagent with Docker Compose, either locally or as part of your production deployment. Examples are provided to enable you to quickly get started running Superagent and its dependencies, these can be used to quickly spin up and try out Superagent, or be used as the basis for a production deployment.
While we provide examples on how to run the various dependencies and integrations with Docker, you can also choose to run any of them with cloud or hosted versions where available, pick and choose the services you wish to run with docker or swap out the enviroment configuration to point at cloud hosted versions if you prefer.
- Supabase - Database required for the Superagent UI, RAG file storage and UI Authentication.
- Superagent API - The API for Superagent along with its own postgres db for storage.
- Superagent UI - A user interface for interacting with Superagent.
- Motorhead - A redis based memory store for LLM interactions
- Langfuse - Open source Observabillity & Analytics for LLM Apps
- A vector store - Choose from a selection of supported vector stores for performing Retrieval Augmented Generation.
This guide will take you through the steps to run Superagent and all the neccesary dependencies to achive a fully functional, self hosted setup on your local machine using Docker Compose.
Environment Variable Configuration
Example configuration for the core services of Superagent is located in the
The example file is pre-configured with most of the values required to setup everything in docker on a local machine. Where changes need to be made to the env vars they will be mentioned in the relevent guide steps.
Copy the file into a new file named
Dependencies outside of the core services also have their own
.env files colocated with their docker-compose files, either because they are optional/swappable (e.g vector stores) or have a lot of configuration (e.g Supabase).
Docker networking and hosts file
For services that require their URL set in environment variables, and need to be accessible both internally in the docker network and locally from your machine, it is neccessary to set the various docker service names in your operating systems
hosts file. This ensures services can be accessed in the browser with the same url as is used internally inside docker between the services.
Here is an example hosts file with most of the services listed. Add or remove services from the list as needed in your setup.
Deploy dependent services
1. Deploy Supabase
First setup supabase. Refer to our guide Supabase setup. The guide explains how to setup and run Supabase with docker compose using our provided example.
2. Deploy Langfuse
Refer to our guide Langfuse setup. The guide explains how to run a local version of Langfuse with docker compose using our provided example, or how to setup Langfuse cloud if preferred.
3. Deploy a vector store
Refer to our guides on setting up one of the supported vector stores in docker or how to use the cloud versions where available.
- Weaviate - Weaviate Setup Guide
- More guides coming soon
Deploy Superagent and core services
The main docker compose file is located in
libs\.docker\docker-compose.yml and contains only the Superagent API. Other core services are provided as additional compose files and can be appended to the
docker compose up command to deploy them all at once.
In order to deploy all the core services an example script is provided in
libs\.docker\run.sh. You can modify this script to ommit any services you wish to deploy elsewhere see Swapping out core dependencies.
To run all of these services in docker, cd into the
libs/.docker folder, run the script
This will start up the following services in docker
superagent-api- Superagent API
superagent-ui- Superagent user interface
motorhead- Motorhead redis based memory for llm interaction
redis- redis backend for Motorhead
pgdb- Postgres DB for the Superagent API
pgadmin- User interface for the Postgres DB
Ready to go
You are now set up and ready to go. If you need to restart superagent for any reason, such as after changing any of the
.env vars, just re-run the
./run.sh script from the
libs/.docker folder. This will stop and restart the core services
Swapping out core dependencies
libs/.docker/run.sh script runs all the core dependencies. You can omit any part that you may wish to deploy elsewhere. For example, if you wanted to use a cloud hosted database for the superagent api, then you can delete the lines for
-f superagent/db/docker-compose.pgdb.yml \ and
-f superagent/db/docker-compose.pgadmin.yml \ then modify the
libs/.docker/.env file with the configuration for your own POSTGRES db.
View the logs for any of the services using the
container-name provided in each
docker-compose.yml file. Add
-f to the command to follow the logs, and
ctrl+c to exit the logs.
- Superagent API -
docker logs superagent-api -f
- Superagent UI -
docker logs superagent-ui -f
- Motorhead -
docker logs motorhead -f
- Supabase API -
docker logs supabase-kong -f
- Langfuse -
docker logs langfuse-server -f
- Weaviate -
docker logs weaviate -f
Each of the provided docker compose files provided has an example `stop`` command in the same folder to stop all the associated services.
Running the stop command will preserve any data linked to services that have a volume mounted while recovering the resources on your computer.
Run the command to stop the associated services while in the relevant folder.
You can also
uninstall any of the services using the provided scripts next to each docker-compose file.
This will permanently remove the services as well as any volumes associated with the services - this will delete any data stored in volumes for the services.