DevDocxAi is a production-grade multi-agent LangGraph system that automatically generates and updates engineering documentation from your GitHub codebase.
Every engineering team has the same dirty secret — the docs are lying.
Not intentionally. Code moves fast, documentation doesn't.
- New dev joins → 2 weeks reading outdated wikis
- Senior engineers constantly interrupted with "what does this do?"
- PR gets merged → docs never updated
- Generic RAG chatbots don't understand code structure
DevDocAI fixes this.
- 🔍 Connects to your GitHub repo via OAuth
- 🌳 Parses your codebase at the AST level — understands functions, classes, modules
- 📝 Auto-generates structured documentation per module and function
- 🔄 Updates docs on every PR merge via GitHub webhooks
- 👀 Human-in-the-Loop review — you approve before anything goes live
- 💬 Onboarding chatbot — new devs ask questions, get answers from live code
START
↓
codebase_parser ← AST-level parsing of GitHub repo
↓
doc_generator ← LLM generates structured docs per module/function
↓
brave_researcher ← enriches with external context (libraries, best practices)
↓
HITL checkpoint ← dev reviews generated docs before publish
↓
doc_publisher ← saves to DB + updates vector store
↓
pr_watcher ← GitHub webhook re-triggers on every PR merge
↓
END
Parallel → onboarding_chatbot ← RAG over vector store for new devs
| Layer | Technology |
|---|---|
| Agent Framework | LangGraph (multi-agent, HITL, checkpointing) |
| Backend | FastAPI + Python 3.12 |
| Frontend | Next.js + Tailwind CSS |
| LLM | Groq — llama-3.3-70b-versatile |
| Embeddings | Cohere embed-english-v3.0 |
| Vector DB | Qdrant |
| Database | PostgreSQL (Neon prod / Docker dev) |
| Cache | Redis (Upstash) |
| Storage | AWS S3 |
| Web Search | Brave Search API |
| Observability | LangSmith |
| Tool Protocol | MCP (Model Context Protocol) |
| Auth | JWT + GitHub OAuth |
| Package Manager | uv |
| Deployment | AWS ECR + ECS Fargate |
| CI/CD | GitHub Actions |
devdocai/
├── backend/
│ ├── auth/
│ │ ├── jwt.py ← JWT create/verify
│ │ ├── github_oauth.py ← GitHub OAuth flow
│ │ └── routes.py ← HTTP layer only
│ ├── db/
│ │ ├── database.py ← async PostgreSQL engine
│ │ └── models.py ← SQLAlchemy ORM models
│ ├── repositories/
│ │ └── user_repository.py ← all DB queries isolated here
│ ├── schemas/
│ │ └── auth_schemas.py ← Pydantic v2 request/response models
│ ├── services/
│ │ └── auth_service.py ← business logic layer
│ ├── utils/
│ │ ├── helper_auth.py ← bcrypt password helpers
│ │ └── encryption.py ← Fernet encryption for tokens
│ ├── mcp/
│ │ └── github_server.py ← GitHub tools for LangGraph agents
│ ├── agents/
│ │ ├── codebase_parser.py
│ │ ├── doc_generator.py
│ │ ├── brave_researcher.py
│ │ ├── doc_publisher.py
│ │ └── onboarding_chatbot.py
│ ├── graph/
│ │ ├── state.py
│ │ ├── pipeline.py
│ │ └── hitl.py
│ ├── webhooks/
│ │ └── github_pr.py ← PR merge webhook handler
│ ├── cache/
│ │ └── redis_client.py ← Upstash Redis caching
│ ├── vectorstore/
│ │ ├── embeddings.py
│ │ └── qdrant_store.py
│ ├── config.py ← all env vars, pydantic-settings
│ └── main.py ← FastAPI app entry point
├── frontend/ ← Phase 6
│ ├── app/
│ │ ├── dashboard/
│ │ ├── review/ ← HITL review panel
│ │ └── chat/ ← onboarding chatbot UI
└── .github/
└── workflows/
└── deploy.yml ← Phase 7
Clean layered architecture — every layer has one job:
Route → HTTP only (request / response)
↓
Service → Business logic
↓
Repository → DB queries only
↓
Database
- Python 3.12+
- uv — fast Python package manager just like pip
- Docker (for local PostgreSQL)
- A GitHub OAuth App (create one here)
git clone https://github.com/Nevin100/DevDocxAI.git
cd DevDocxAI/backenduv venv
# Windows
.venv\Scripts\activate
# Mac/Linux
source .venv/bin/activate
uv add -r requirements.txtcp .env.example .env
# Fill in your actual values in .env# JWT Secret
python -c "import secrets; print(secrets.token_hex(32))"
# Fernet Encryption Key
python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"docker run -d \
--name devdocai_postgres \
-e POSTGRES_USER=postgres \
-e POSTGRES_PASSWORD=devpassword \
-e POSTGRES_DB=devdocai \
-p 5432:5432 \
-v devdocai_pgdata:/var/lib/postgresql/data \
postgres:16# Windows
.venv\Scripts\python.exe -m uvicorn main:app --reload
# Mac/Linux
uvicorn main:app --reloadhttp://localhost:8000/docs
| Variable | Required Now | Description |
|---|---|---|
DATABASE_URL |
✅ | PostgreSQL connection string with +asyncpg |
JWT_SECRET_KEY |
✅ | Random secret for JWT signing |
ENCRYPTION_KEY |
✅ | Fernet key for token encryption |
GROQ_API_KEY |
✅ | From console.groq.com |
LANGCHAIN_API_KEY |
✅ | From smith.langchain.com |
GITHUB_CLIENT_ID |
✅ | GitHub OAuth App |
GITHUB_CLIENT_SECRET |
✅ | GitHub OAuth App |
COHERE_API_KEY |
✅ | From cohere.com |
BRAVE_SEARCH_API_KEY |
✅ | From brave.com/search/api |
REDIS_URL |
✅ | Upstash Redis URL |
AWS_ACCESS_KEY_ID |
⏳ Phase 7 | S3 storage |
User
└── Repository
├── Document (DocStatus: PENDING → APPROVED → PUBLISHED)
└── PipelineRun (trigger: manual | pr_merge | webhook)
| Phase | What | Status |
|---|---|---|
| Phase 1 | Backend Foundation (FastAPI, DB, Auth, JWT) | ✅ Complete |
| Phase 2 | GitHub OAuth + MCP Server | ✅ Complete |
| Phase 3 | LangGraph Core (State, Pipeline, HITL) | ✅ Complete |
| Phase 4 | Agents (Parser, Generator, Researcher, Chatbot) | ✅ Complete |
| Phase 5 | Webhooks + Redis Cache | ✅ Complete |
| Phase 6 | Next.js Frontend | 🔨 In Progress |
| Phase 7 | Docker + ECR/ECS Fargate + CI/CD | 🔜 Soon |
Following the build in public on dev.to:
- Part 1 — Foundation: Backend, Auth, DB, GitHub OAuth, MCP
- Part 2 — LangGraph Core + Agents + RAG
- Part 3 — Webhooks + Redis Cache
This project is under active development. Feel free to open issues or PRs.
Building in public 🚀