Ask natural-language questions about any codebase and get precise, cited answers with file and line references.
Multi-turn, agentic, and evaluated.
Citer is an agentic codebase Q&A tool. Point it at any GitHub repository, and it clones, parses, and embeds the source so you can ask questions like "Where is authentication handled?" — and get answers backed by exact file + line citations, not hallucinations.
The pipeline is a LangGraph agent: planner → retriever tools → synthesizer, grounded in a hybrid retrieval layer that fuses vector search, full-text search, and symbol-level matching (RRF).
| Layer | Technology |
|---|---|
| Frontend | Next.js (React, TypeScript) |
| Backend | Python FastAPI |
| Agent | LangGraph (planner → tools → synthesis loop) |
| LLM | OpenAI GPT-4o |
| Embeddings | OpenAI text-embedding-3-large |
| Vector DB | PostgreSQL + pgvector |
| Search | Hybrid: vector + PostgreSQL FTS + symbol match (RRF fusion) |
| Cache | Redis (semantic cache) |
| Observability | LangSmith |
| Deploy | Docker Compose |
cp .env.example .env # fill in keys
docker compose up -d # postgres + redis
# backend
cd backend && pip install -r requirements.txt && uvicorn app.main:app --reload
# frontend
cd frontend && npm install && npm run devOpen the chat UI at http://localhost:3000, index a repository, and start asking questions.
├── backend/ FastAPI service
│ ├── app/
│ │ ├── api/routes/ /index /ask /sessions /eval
│ │ ├── core/ config, logging
│ │ ├── db/ models, queries, session mgmt
│ │ ├── ingestion/ clone → parse → chunk → embed → store
│ │ ├── retrieval/ hybrid: vector + keyword + symbol
│ │ ├── agent/ LangGraph state, nodes, tools, prompts
│ │ ├── cache/ Redis semantic cache
│ │ ├── eval/ golden dataset, runner, metrics, report
│ │ └── schemas/ Pydantic request/response models
│ ├── migrations/ SQL schema + pgvector index
│ ├── scripts/ CLI: index a repo, run eval
│ └── tests/ ingestion, retrieval, agent
├── frontend/ Next.js app
│ ├── app/chat/ streaming chat UI + citations
│ ├── app/eval/ eval dashboard
│ ├── components/ markdown, SSE reader
│ └── lib/ API client
├── data/ local repo clones / cache
└── docker-compose.yml postgres + redis
- Backbone: DB + Docker, ingestion pipeline, hybrid retrieval, LangGraph agent,
/askstreaming. - Product: Next.js chat UI + citations, sessions & multi-turn, semantic cache, eval harness + dashboard, deploy.