An LLM-powered "team of experts" sandbox with:
- Agent CRUD: define individual AI agents
- Team Builder: group Agents into Teams
- Chat UI: collaborative question/answer sessions
- PDF Ingestion: upload, chunk & vector‑embed via pgvector + MinIO
- RAG Search: semantic search with citations
-
Clone the repo
git clone https://github.com/your-org/dwarvengeneral.git cd dwarvengeneral -
Prepare environment variables
cp .env.example .env.dev
Edit
.env.dev:OPENAI_API_KEY=<your key> TAVILY_API_KEY=<your key> # MinIO (S3) AWS_S3_ENDPOINT_URL=http://minio:9561 AWS_ACCESS_KEY_ID=dgminio AWS_SECRET_ACCESS_KEY=dgminio123 # Postgres (vector_db service) PG_USER=dg_user PG_PASS=dg_pass PG_HOST=vector_db PG_PORT=5432 PG_DEFAULT_DB=postgres # or default_store if you've initialized it PG_VECTOR_DB=vector_store # Redis / Celery CELERY_BROKER_URL=redis://redis:6379/0 # Misc DEBUG=True DJANGO_ALLOWED_HOSTS=localhost,127.0.0.1
-
Start the development stack
docker compose -f compose.dev.yml up --build
The
webservice auto-runs migrations on startup. When running for the first time, the database will be initialized automatically. -
Create a superuser (optional)
To access the Django admin interface, you'll need a superuser account. Run this command in a separate terminal:
docker compose -f compose.dev.yml exec web python manage.py createsuperuser -
Access the services
- App: http://localhost:8000/
- MinIO: http://localhost:9562/ (console:
dgminio/dgminio123) - Postgres: port 5432
- Redis: port 6379
Unchanged...
-
Push & SSH in
git push origin main ssh your@server cd /path/to/dwarvengeneral -
Pull & env
git pull origin main cp .env_EXAMPLE .env.prod # Edit .env.prod: # DEBUG=False # Set OPENAI_API_KEY, AWS_S3_*, PG_*, REDIS/CELERY, ALLOWED_HOSTS=your.domain
-
Rebuild & start
docker compose -f compose.prod.yml up -d --build
-
Run migrations
# Default models docker compose -f compose.prod.yml exec web python manage.py migrate --database default # Library vectors docker compose -f compose.prod.yml exec web python manage.py migrate --database vector
-
Create admin
docker compose -f compose.prod.yml exec web python manage.py createsuperuser -
Verify
-
Browse to
/,/admin,/library/upload -
Tail logs:
docker compose -f compose.prod.yml logs -f web celery_worker nginx
-
-
Rebuild everything
docker compose -f compose.prod.yml down -v docker compose -f compose.prod.yml up -d --build
-
Tail logs
docker compose logs -f web celery_worker nginx vector_db
-
Stop containers
docker compose -f compose.prod.yml down
