Setup your local environment

  1. Clone the repository
git clone git@github.com:omo-ai/omo.git
  1. Configure the environment variables

All environment variables are stored in the envs/ directory. After cloning the repo, copy the environment variables templates:

cp envs/env.development.template envs/.env.development
  1. Generate an encryption key and add it to .env.development

Some columns in the database are encrypted. Generate an encryption key and set the ENCRYPTION_KEY environment variable with this value.

To generate a key, on *nix machines:

echo "ENCRYPTION_KEY=`dd if=/dev/urandom bs=32 count=1 2>/dev/null | openssl base64`" >> envs/.env.development
Don’t lose this key or commit to a repo. Doing so will mean you can no longer decrypt values, and if anyone else gains access to it they can decrypt values.
There are utilities to use AWS secrets manager instead of the database.
  1. Starting the UI, API, and required infrastructure

Use docker compose to start the environment locally:

ENV=dev ENV_NS=example docker compose up

Visit http://localhost:3000 to load the Omo UI.

The ENV_NS is an optional variable. If specified, it should reference a folder name under envs/. For example, ENV_NS=example will include additional environment variabes under envs/example/.env in addition to .env.development in the project root.

It’s helpful if you want to test different values of environment variables without constantly changing the value.

For example, if you want to test different values for 2 teams, you can create envs/team1/.env and envs/team2/.env, then set ENV_NS=team1 or ENV_NS=team2.

You can check the env_file attribute in docker-compose.yaml to see how ENV_NS is used.