GUIDES
Self-hosting EERRAA
EERRAA is open source and built to be owned, not rented. Run the whole thing yourself, on your own box, for free.
The shape of an install
A running EERRAA is three pieces: a Postgres database with the pgvector extension, the backend API, and the web app. That is it. Postgres holds your data and the knowledge-base vectors, the backend runs the agent and serves the widget and the public API, and the web container serves the console and the marketing site.
| Field | Type | Description |
|---|---|---|
Postgres + pgvector | database | Stores projects, sessions, encrypted keys and creds, and the embedding vectors for RAG. |
backend | container | The agent runtime, public /v1 API, and the widget script at /static/widget.js. |
web | container | The admin console and the public site. |
Environment
Configuration is a handful of env vars. Two are load-bearing and must be set before you start:
| Field | Type | Description |
|---|---|---|
DATABASE_URLrequired | string | Postgres connection string, pointing at a database with the pgvector extension enabled. |
ENCRYPTION_KEYrequired | string | The Fernet key used to encrypt model keys and the per-user vault at rest. Generate it once and keep it safe. |
Model keys | per project | Provider keys are added per project in the console, not in server env. See the model keys guide. |
ENCRYPTION_KEY like a root secret. It decrypts every stored model key and vault credential. If you lose it, those secrets cannot be recovered; if it leaks, rotate it and re-enter your keys.Run it with Docker
The commands below are illustrative. Bring up Postgres, point the backend and web containers at it, and set the two env vars. A compose file wires all three together in one up.
# generate a Fernet key once, keep it safe export ENCRYPTION_KEY="$(python -c 'from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())')" export DATABASE_URL="postgresql://eerraa:secret@db:5432/eerraa" # bring up postgres + backend + web docker compose up -d # tail the logs docker compose logs -f backend
Once the containers are healthy, open the console, create your org and first project, add a model key, and embed the widget. From there it is the same product as the hosted one.
<script src="https://your-host/static/widget.js" data-api-key="era_your_project_key" data-title="Assistant" ></script>
Self-hosting is free
There is no license fee to run EERRAA yourself. Point it at your own Postgres, bring your own model key, and the whole platform runs on your infrastructure with unlimited projects. You pay your cloud provider and your model provider, and nobody else.
