Run the Navin Platform for local development with make
This page runs the platform on a development machine without Docker: make install prepares the venv of the Control
Plane, the portal dependencies and Keycloak; make start starts PostgreSQL, Redis and Keycloak when they do not
answer yet, applies the migrations, then starts the API (python -m eai.main, port 8080), the worker
(python -m eai.worker) and the portal (port 3300). It is meant for developers of the platform.
Before you begin
- Python 3.11 or newer, Node.js 20 or newer,
redis-serveron thePATH, the PostgreSQL binaries (or a PostgreSQL that already answers onEAI_DATABASE_URL), and Java 21 for Keycloak. - The repository cloned, commands run from its root.
make helplists the targets, in French withEAI_LOCALE=fr.
Steps
-
Create the settings.
make docker-envwritesservices/control-plane/local.env(anddeploy/compose/.env) with random local secrets and free ports. An existing file is kept.make docker-envExpected result:
services/control-plane/local.envexists. -
Install the components.
make installIt creates
services/control-plane/.venvwith the extras ofEXTRAS(defaultdev), runsnpm installinportal/(INSTALL_PORTAL=0skips it) and puts Keycloak 26.8.1 in~/.local/toolchains(INSTALL_KEYCLOAK=0skips it).Expected result:
services/control-plane/.venv/bin/python -c "import eai"succeeds.If it fails: the Python or Node.js version is too old; check
python3 --versionandnode --version. -
Start the platform.
make startmake statusExpected result:
make statuslistspostgres,redis,keycloak,api,workerandportalas running.If it fails:
make logs(ormake logs COMPONENTS=api) shows the logs;MIGRATE=0starts without the migrations,DB_WAIT(default 30 seconds) is the wait for a database that refuses connections. -
Sign in. Open http://localhost:3300/login, tab Login:
navin/navin(EAI_BOOTSTRAP_ADMIN_USERNAMEandEAI_BOOTSTRAP_ADMIN_PASSWORDoflocal.env). The account has the rolesplatform_adminandtenant_adminon the tenantdefault; the portal asks for a new password at the first sign in. The Sign in with SSO button uses the Keycloak started bymake start(console http://localhost:8081/admin, useradmin, passwordKEYCLOAK_ADMIN_PASSWORDofdeploy/compose/.env).
Variables of the make targets
| Variable | Effect |
|---|---|
COMPONENTS | Components to act on: postgres redis keycloak api worker media-worker portal |
ENV_FILE | Settings file (default services/control-plane/local.env) |
PORT, EAI_HOST | API port (default EAI_PORT, else 8080) and bind address (default 127.0.0.1) |
PORTAL_PORT, PORTAL_HOST | Portal port (default 3300) and bind address (default 127.0.0.1) |
PORTAL_BUILD | 1 builds the portal again, 0 never builds |
PG_DATA, PG_BIN | Data folder (default .run/postgres) and binaries of the local PostgreSQL |
REDIS_SERVER | redis-server binary |
KEYCLOAK_HOME | Keycloak release (default ~/.local/toolchains/keycloak-26.8.1) |
VENV, PYTHON | Virtual environment and interpreter |
EXTRAS | Extras of make install (dev; empty for the runtime only; litellm, otel, workers) |
MIGRATE, DB_WAIT | Start without migrations; wait for the database |
LOG_LINES, FOLLOW | Lines shown by make logs, without following them with FOLLOW=0 |
START_TIMEOUT, STOP_TIMEOUT, WORKER_ARGS, MEDIA_WORKER_ARGS, RUN_DIR | Timeouts, arguments, pid and log folder (default .run) |
The portal can also run in development mode: cd portal && npm run dev (http://localhost:3300, folder
.next-dev); stop the portal of make start first.
Stop
make stop
It stops what make start started; a PostgreSQL or Redis that was already running is left as it was.
Next steps
- Docker Compose for the other services (OpenFGA, OPA, Qdrant, NATS, Temporal, observability)
- Local start guide: sign in with Keycloak and LDAP, install a service from the portal with the Navin Manager sandbox
Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
make start waits then fails on the database | PostgreSQL refuses the connection | Check EAI_DATABASE_URL of local.env; raise DB_WAIT |
| Portal pages return 404 for scripts after a build | Old file names cached by the browser | Reload with Ctrl-F5 |
| Keycloak does not start | No Java 21, or KEYCLOAK_HOME wrong | Install Java 21; run make install again |