Prerequisites
Before you begin, ensure you have the following installed:- Docker and Docker Compose >= 28.x
- Node.js >= 18.x (for frontend development)
- Python >= 3.11 (for backend development)
- Make (for using Makefile commands)
- Git for version control
Initial Setup
1. Fork and Clone the Repository
First, fork the Aurora repository to your GitHub account:- Go to https://github.com/Arvo-AI/aurora
- Click the “Fork” button in the top right
- This creates a copy under your GitHub account
2. Add Upstream Remote
Add the upstream repository to keep your fork in sync:3. Initialize Configuration
Run the initialization script to generate secure secrets:- Creates
.envfrom.env.example - Generates secure passwords for PostgreSQL, Redis, and other services
- Sets up initial Vault configuration
4. Configure LLM API Key
Edit the.env file and add your LLM API key. Aurora supports multiple providers:
- OpenRouter: Get a key at https://openrouter.ai/keys
- Anthropic: Get a key at https://console.anthropic.com/settings/keys
- OpenAI: Get a key at https://platform.openai.com/api-keys
5. Start Development Environment
Start all containers in development mode with hot reloading:- aurora-server (Flask API) on port 5080
- celery_worker (background tasks)
- chatbot (WebSocket) on port 5006
- frontend (Next.js) on port 3000
- postgres on port 5432
- weaviate (vector DB) on port 8080
- redis on port 6379
- vault (secrets) on port 8200
- seaweedfs (object storage) on port 8333
6. Configure Vault Token
On first startup, retrieve the Vault root token from the initialization logs:.env file:
7. Restart Aurora
Restart the services to load the Vault token:Access the Application
Once all services are running, you can access:- Frontend: http://localhost:3000
- REST API: http://localhost:5080
- Chatbot WebSocket: ws://localhost:5006
- Vault UI: http://localhost:8200
- SeaweedFS File Browser: http://localhost:8888
- SeaweedFS Cluster Status: http://localhost:9333
Development Workflow
Hot Reloading
Both frontend and backend support hot reloading in development mode:- Backend: Flask auto-reloads when Python files change
- Frontend: Next.js with Turbopack provides instant updates
Viewing Logs
View logs for all containers:Stopping the Environment
Stop all containers:Rebuilding Services
Rebuild only the backend API:Clean Rebuild
For a complete fresh build without cache:- Stops all containers
- Removes volumes
- Removes images
- Rebuilds without cache
- Starts the development environment
Keeping Your Fork Updated
Before starting new work, sync your fork with upstream:Environment Variables
Key environment variables for development:| Variable | Description | Default |
|---|---|---|
POSTGRES_PASSWORD | PostgreSQL password | Generated by init |
REDIS_PASSWORD | Redis password | Generated by init |
VAULT_TOKEN | Vault root token | From vault-init logs |
OPENROUTER_API_KEY | OpenRouter API key | Required |
ANTHROPIC_API_KEY | Anthropic API key | Optional |
OPENAI_API_KEY | OpenAI API key | Optional |
FRONTEND_URL | Frontend URL | http://localhost:3000 |
NEXT_PUBLIC_BACKEND_URL | Backend API URL | http://localhost:5080 |
NEXT_PUBLIC_WEBSOCKET_URL | WebSocket URL | ws://localhost:5006 |
Testing Vault
Test that Vault is working correctly:Troubleshooting
Services Won’t Start
Ensure.env file exists and contains required variables:
Database Connection Issues
Check PostgreSQL is running:Port Conflicts
If ports are already in use, stop conflicting services or modify ports indocker-compose.yaml.
Network Issues
Reset the Docker network:Next Steps
Architecture Deep Dive
Learn about Aurora’s architecture and codebase structure
Contributing Guidelines
Read the contribution guidelines before submitting PRs
Testing Guide
Learn how to test your changes