ContinuityX-AI is a developer-assistant workspace that can:
- ingest a GitHub repository,
- build a repo "identity" and developer persona from code + commits,
- power persona-style chat with memory,
- and expose repo intelligence through Search, Wiki, Dependencies, and Timeline views.
- Fast ingestion with early usability
- Background job with live progress
- Two-phase pipeline (
partial_readyfirst,readylater)
- Developer Persona Chat
- Answers in first-person "author voice"
- Session memory via Redis
- Response level dial:
Simple,Normal,Expert
- Semantic Code Search (
/search) - Auto-generated Wiki (
/wiki) - Dependency Graph (
/deps) - Commit Timeline + Retrieved Context visibility (
/chat) - Bookmark + Export Q&A as Markdown
- Decision Log (
/decisions) - Onboarding Path Generator (
/onboarding) - Knowledge Handoff Report (
/handoff) - Codebase Health Snapshot (
/codehealth)
- Backend: FastAPI
- Frontend: React + Vite
- LLM: Groq (
llama-3.3-70b-versatileby default) - Embeddings:
sentence-transformers(local by default, HF endpoint optional) - Vector DB: ChromaDB
- Chat Memory: Redis
- Containerization: Docker Compose
backend/ FastAPI app, ingestion agents, routers, services
frontend/ React app (Dashboard, Chat, Search, Wiki, Deps, Decisions, Onboarding, Handoff, CodeHealth, Settings)
infrastructure/ docker-compose.yml
docs/ architecture + API notes
evaluation/ benchmark helper scripts
idle -> running -> partial_ready -> ready (or error)
running: cloning/walking/embedding in progress.partial_ready: core context is already indexed; chat can start.ready: deep pass finished.
- Clones repo with:
depth=50single_branch=True
- Indexes priority files first:
- README files
- entrypoints (
main.py,app.py,index.js, etc.) - markdown/docs
- key config files (
.env,requirements.txt,package.json,docker-compose*)
- Indexes first commit batch
- Marks ingestion
partial_readyso users can chat immediately
- Processes remaining files in batches of 20
- Updates progress continuously
- Finishes as
ready
- Max eligible files:
500(smallest files prioritized) - Skip dense dirs with more than
100files - Max indexed docs:
2000 - Vector writes are batched (
50docs per add)
- New ingest request supersedes currently running job
- Chroma stale-data protection uses:
- Chroma API delete attempt
- automatic collection rotation fallback
- Prevents "old repo context leaking into new repo"
/Dashboard
Start ingestion, watch live progress/chat
Persona chat + repo intelligence sidebar (identity, graph, context, commits)/search
Semantic code search cards/wiki
Auto-generated markdown wiki with export/deps
Force-directed dependency map/decisions
Save, browse, filter, delete, and export ADR-style decisions/onboarding
AI-generated 4-session learning path for the current repo/handoff
Author-specific transition report for developer offboarding/handover/codehealth
AI-interpreted health snapshot with score, grade, risks, and quick wins/settings
App settings
POST /ingest/
Start ingestion job (non-blocking)GET /ingest/status
Poll current ingestion stateGET /ingest/commits
Commit docs used by timelinePOST /chat/
Persona chat (query,session_id,level)GET /search/?q=...&k=...
Semantic retrievalGET /wiki/andPOST /wiki/generateGET /deps/POST /decisions/,GET /decisions/,DELETE /decisions/{id},GET /decisions/exportGET /onboarding/,POST /onboarding/generateGET /handoff/authors,POST /handoff/generateGET /codehealth/,POST /codehealth/generateGET /health
- Docker Desktop (Linux engine enabled)
- Docker Compose
- Groq API key (recommended for real responses)
Create a root .env file at:
E:\python\ContinuityX-AI\.env
Example:
# Required for real LLM output
GROQ_API_KEY=your_groq_key
# Optional
GROQ_MODEL=llama-3.3-70b-versatile
EMBEDDING_BACKEND=local
HF_API_TOKEN=
CORS_ORIGINS=http://localhost:3000,http://127.0.0.1:3000,http://localhost:8000
REDIS_URL=redis://redis:6379
# Frontend to Backend production URL
VITE_API_URL=http://localhost:8000Set-Location E:\python\ContinuityX-AI
docker compose -f infrastructure/docker-compose.yml up --buildOpen:
- Frontend: http://localhost:3000
- Backend Docs (Swagger): http://localhost:8000/docs
- Health: http://localhost:8000/health
You can deploy the backend to Render and the frontend to Vercel.
- Link your repository to Render.
- The included
render.yamlwill automatically deploy:- A Redis instance (free tier).
- The FastAPI backend.
- Add your
GROQ_API_KEY,CORS_ORIGINS, andREDIS_URLin the Render dashboard environment variables for the backend service.
- Link your repository to Vercel.
- Set the "Root Directory" to
frontend. - The included
vercel.jsonprovides the required SPA rewrites. - Add the
VITE_API_URLenvironment variable pointing to your deployed Render backend URL.
- Open Dashboard.
- Paste a GitHub repo URL (public or private with token).
- Click Start Ingestion.
- Watch progress:
- once it reaches
partial_ready, you can move to Chat.
- once it reaches
- Open Chat:
- ask architecture or implementation questions,
- inspect retrieved file context and commit timeline,
- switch response level (
Simple/Normal/Expert).
- Explore:
- Search tab for semantic snippets
- Wiki tab to generate markdown wiki
- Deps tab for import relationships
- Decisions tab to build a reusable architectural memory
- Onboarding tab to generate a structured learn-the-codebase plan
- Handoff tab to generate transition reports for specific commit authors
- Health tab to generate repo quality snapshot and actionable quick wins
- Ingest another repo anytime:
- old run is superseded,
- new repo state becomes the active one.
Create E:\python\ContinuityX-AI\.env.
Start Docker Desktop and ensure Linux containers are enabled.
Set GROQ_API_KEY in .env, then restart containers.
Check GET /ingest/status; if a new repo was submitted, status should reflect the new repo name.
Ingest a repo first; wait for at least partial_ready, then refresh the relevant page.
- Never commit
.envor API keys. - If secrets were accidentally pushed, rotate them immediately.
- Keep
.gitignorein place and untrack existing secret files withgit rm --cached.
- Ingestion state is in-memory (single backend process scope).
- Dependency map currently focuses on Python import relationships.
- Wiki generation is based on retrieved top documents (not full AST reasoning).
- Handoff and health reports are generated from retrieved vectors + commit context and may miss nuances outside indexed chunks.
See LICENSE.