This project requires simultaneous execution of multiple services.
- Linux OS with
vcansupport - Docker installed
Before starting the project, you need to set up your environment variables.
Copy the example file to create your local .env:
cp .env.example .envJWT_SECRET: Generate a secure random string for JWT token signing.OPENAI_API_KEY: Your OpenAI or OpenRouter API key (depending onBASE_URL).HF_TOKEN: Hugging Face access token (required to download the full RAG database; falls back to sample data otherwise).TAVILY_API_KEY: API key for web search capabilities.MAIL_USER,MAIL_PASSWORD,MAIL_FROM: Your SMTP credentials for email notifications.
- Server section (
PROJECT_NAME,API_V1_STR,ENV,BACKEND_PORT,ALLOWED_ORIGINS). - PostgreSQL / MQTT: By default, Docker Compose will provide sufficient defaults, or you can uncomment and adjust if not using Compose.
- AI Engine defaults (
BASE_URL,LLM_MODEL,INTERNAL_API_SECRET). Note: EnsureINTERNAL_API_SECRETis changed for production.
Before running the compose file, you must execute the virtual CAN setup script:
./IoT/setupcan0.shThen, you can start the services using the Compose file:
source .env
docker compose upA production Compose file is provided which uses pre-built DockerHub images. To deploy:
source .env
./IoT/setupcan0.sh
docker compose -f docker-compose.prod.yml up -dIf you wish to develop individual modules locally, you'll need the following package managers:
- uv: Required for
backend,Agentic_Workflow, andIoT/car_simulator - pnpm: Required for
frontend - ESP-IDF: Required for
IoT/Mechanic
To stop the services, use docker compose down (add -f docker-compose.prod.yml if running production) or press Ctrl+C in the terminal if running in the foreground.
- Virtual environment not found: Make sure you've created the virtual environment first using
uv - Module not found errors: Ensure all dependencies are installed with
uv(for Python services) orpnpm install(for frontend) - Port already in use: Check if another instance is already running and stop it first
- All services must be running for the full application to work properly.
- Keep the terminal windows open or run services in detached mode (
-d). - Check your container logs if something isn't working as expected.