Dynavera/README.md

200 lines
6.7 KiB
Markdown
Raw Normal View History

# Dynavera: An Agentic Approach to Role-Specific Trainers
[![Vue 3](https://img.shields.io/badge/Vue-35495E?style=for-the-badge&logo=vue.js&logoColor=4FC08D)](https://vuejs.org/)
[![Vite](https://img.shields.io/badge/Vite-646CFF?style=for-the-badge&logo=vite&logoColor=white)](https://vite.dev/)
[![Django](https://img.shields.io/badge/Django-092E20?style=for-the-badge&logo=django&logoColor=white)](https://www.djangoproject.com/)
[![DRF](https://img.shields.io/badge/DRF-092E20?style=for-the-badge&logo=django&logoColor=white)](https://www.django-rest-framework.org/)
[![Channels](https://img.shields.io/badge/Django_Channels-092E20?style=for-the-badge&logo=django&logoColor=white)](https://channels.readthedocs.io/)
[![PostgreSQL](https://img.shields.io/badge/PostgreSQL-4169E1?style=for-the-badge&logo=postgresql&logoColor=white)](https://www.postgresql.org/)
[![pgvector](https://img.shields.io/badge/pgvector-00599C?style=for-the-badge&logo=postgresql&logoColor=white)](https://github.com/pgvector/pgvector)
[![Redis](https://img.shields.io/badge/Redis-DC382D?style=for-the-badge&logo=redis&logoColor=white)](https://redis.io/)
[![Celery](https://img.shields.io/badge/Celery-37814A?style=for-the-badge&logo=celery&logoColor=white)](https://docs.celeryq.dev/en/stable/)
[![FastAPI](https://img.shields.io/badge/FastAPI-009688?style=for-the-badge&logo=fastapi&logoColor=white)](https://fastapi.tiangolo.com/)
[![Docker](https://img.shields.io/badge/Docker-2496ED?style=for-the-badge&logo=docker&logoColor=white)](https://www.docker.com/)
Dynavera is a distributed agentic onboarding platform designed to solve the productivity gap in organizational training. The motivation was to create a system that delivers tailored, retrieval-grounded guidance for new roles, leveraging modern AI and orchestration techniques. This project was built to address the challenge of scalable, role-specific onboarding—where generic training fails to meet the needs of specialized positions. By combining curriculum generation, document-grounded retrieval, and live progress tracking, Dynavera enables organizations to onboard users efficiently and transparently. Through this project, I learned how to architect distributed systems, integrate retrieval-augmented generation, and design agent workflows for real-world impact.
2026-02-27 02:09:54 +00:00
## Table of Contents
- [Overview](#overview)
- [Core Features](#core-features)
- [Architecture](#architecture)
- [Quick Start](#quick-start)
- [Usage & Smoke Test](#usage--smoke-test)
- [Project Structure](#project-structure)
- [Demo Access](#demo-access)
- [Operational Commands](#operational-commands)
2026-02-27 02:09:54 +00:00
- [Screenshots](#screenshots)
- [Documentation](#documentation)
2026-02-27 02:09:54 +00:00
## Overview & Core Features
Dynavera addresses the onboarding productivity gap by combining:
2026-02-27 02:09:54 +00:00
- Role-aware curriculum generation
- Retrieval-augmented responses grounded in uploaded organizational documents
- Tool-aware orchestration over WebSockets
- Local-first inference support for privacy-sensitive deployments
2026-02-27 02:09:54 +00:00
The runtime is intentionally distributed: Django manages state and governance, while a dedicated inference service handles model-intensive workloads.
2026-02-27 02:09:54 +00:00
Key features:
2026-02-27 02:09:54 +00:00
- Distributed architecture separating application control plane and inference plane
- Multi-agent style orchestration for curriculum, knowledge, assessment, and monitoring behaviors
- RAG pipeline with semantic chunking, embeddings, and pgvector retrieval
- Live onboarding session updates via Django Channels WebSockets
- Persistent session/progress storage for auditability and recovery
2026-02-27 02:09:54 +00:00
## Architecture
High-level architecture diagram:
2026-02-27 02:09:54 +00:00
![High Level System Architecture](docs/high-level-system-architecture.png)
2026-02-27 02:09:54 +00:00
Key backend runtime entry points:
2026-02-27 02:09:54 +00:00
- `apps/onboarding/consumers.py` for orchestration loop and WebSocket flow
- `apps/onboarding/mcp.py` for tool routing and backend tool execution
- `apps/knowledge/tasks.py` for ingestion/chunking/embedding workflow
- `gpu_server.py` for inference and embedding endpoints
2026-02-27 02:09:54 +00:00
## Quick Start
Prerequisites:
- Docker Engine or Docker Desktop
- NVIDIA drivers and NVIDIA Container Toolkit (for GPU inference)
2026-02-27 02:09:54 +00:00
1. Clone repository
2026-02-27 02:09:54 +00:00
```bash
git clone https://git.cs.bham.ac.uk/projects-2025-26/vxn217
cd vxn217
```
2026-02-27 02:09:54 +00:00
2. Create environment file
PowerShell:
```powershell
Copy-Item .env.template .env
```
CMD:
```cmd
copy .env.template .env
```
macOS/Linux:
```bash
cp .env.template .env
```
2026-02-27 02:09:54 +00:00
3. Start development stack
2026-02-27 02:09:54 +00:00
```bash
docker compose -f compose/dev/docker-compose.yml --env-file .env up -d --build
```
2026-02-27 02:09:54 +00:00
4. Open application
2026-02-27 02:09:54 +00:00
- http://localhost:8000
2026-02-27 02:09:54 +00:00
## Usage/Smoke Test
2026-02-27 02:09:54 +00:00
Follow this end-to-end workflow to use the project and to run the smoke test:
1. Create or select an organization and role
2. Upload role-specific training files
3. Wait for ingestion and embedding to complete (monitor the ingestion UI or logs)
4. Invite a user to the configured role
5. Log in as that user and start onboarding
6. Complete at least one guided interaction and one assessment action
Expected behaviour:
2026-02-27 02:09:54 +00:00
- Workflow completes without manual page refresh
- UI state transitions update live
- No dropped WebSocket session during onboarding
## Project Structure
- `apps/accounts` user, organization, and role membership logic
- `apps/knowledge` training file ingestion and vector document persistence
- `apps/onboarding` sessions, orchestration runtime, and tool integration
- `config` Django settings, routing, ASGI/WSGI wiring
- `compose` development and production container configuration
- `site` frontend application
- `docs` architecture and deployment documentation
## Demo Access
Hosted URL:
- https://fyp.viswamedha.com
Evaluation credentials:
| Role | Email | Password |
| :--- | :--- | :--- |
| Admin | admin@example.com | admin |
| Manager | haleisaac@example.com | password |
| User | j.thompson@example.com | password |
2026-02-27 02:09:54 +00:00
Manager registration code: `MANAGER2026`
## Operational Commands
Stop services:
2026-02-27 02:09:54 +00:00
```bash
docker compose -f compose/dev/docker-compose.yml --env-file .env down
2026-02-27 02:09:54 +00:00
```
Tail logs:
2026-02-27 02:09:54 +00:00
```bash
docker compose -f compose/dev/docker-compose.yml --env-file .env logs -f
2026-02-27 02:09:54 +00:00
```
Run migrations:
2026-02-27 02:09:54 +00:00
```bash
docker exec -it fyp-django-dev python manage.py migrate
2026-02-27 02:09:54 +00:00
```
Reset seeded passwords:
```bash
docker exec -it fyp-django-dev python manage.py reset_passwords
```
## Screenshots
2026-02-27 02:09:54 +00:00
Home:
2026-02-27 02:09:54 +00:00
![Home Page](docs/images/home-page.png)
2026-02-27 02:09:54 +00:00
Organization:
2026-02-27 02:09:54 +00:00
![Organization Page](docs/images/organization-page.png)
2026-02-27 02:09:54 +00:00
Onboarding generation state:
2026-02-27 02:09:54 +00:00
![Onboarding Loading](docs/images/onboarding-loading-page.png)
2026-02-27 02:09:54 +00:00
Onboarding content flow:
2026-02-27 02:09:54 +00:00
![Onboarding Flow](docs/images/onboarding-content-page.png)
2026-02-27 02:09:54 +00:00
## Documentation
2026-02-27 02:09:54 +00:00
- [Distributed Runtime Flow](docs/distributed-runtime-flow.md)
- [Application Structure](docs/application-structure.md)
2026-02-27 02:09:54 +00:00
- [Deployment Topologies](docs/deployment-topologies.md)