Agentic Research Workspace — the stack

single-node langgraph researcher · hybrid pgvector ⊕ tsvector in neon · cohere embed + rerank · litellm gateway · backblaze b2 · one render service
authoritative store implemented planned / gap speculative sync call async / enqueue
Clients chat + rest API Gateway rest + websocket Agentic Orchestration langgraph · live loop + planned nodes Retrieval pgvector ⊕ tsvector in postgres · one store Model Gateway litellm · single interface Data Stores neon · upstash · b2 Ingestion Pipeline arq worker · off the request path Observability & Eval logfire live · eval + cost planned Deployment one render web service: alembic + arq + uvicorn · sleeps on idle (free tier) upload → enqueue sub-questions draft review gap → retry retrieve_evidence every llm call dense keyword candidates reranked evidence query embed fallback answer citations persisted chunks + vectors embed-english-v3.0 raw files backfill via cohere spans deploy on push serves ui 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 Next.js Chat UI WebSocket · stage updates deployed on Vercel REST / CLI Client Bearer token upload + ask endpoints FastAPI Gateway REST + WebSocket auth · routers · /health LangGraph Runtime state graph · researcher loop entry planned · needs spec Query Decomposer complex q → sub-questions fan-out retrieve → synth Researcher Agent ReAct loop · ≤5 iterations retrieve_evidence tool iteration + token budget Budgets & Caps 5 iters · 60k tokens · 60s planned · needs spec Confidence Scorer per-claim citation strength planned · needs spec Self-Correction weak claim → re-retrieve planned · needs spec Critic groundedness vs evidence Hybrid Search + RRF dense ⊕ keyword · postgres pgvector chunks.vector (1024) tsvector + GIN index keyword/FTS Cohere Rerank v3 cross-encoder relevance LiteLLM Gateway one uniform interface Groq primary · llama-3 OpenRouter fallback models Cohere API embed-english-v3.0 · rerank v3 authoritative Neon Postgres pgvector + tsvector + GIN docs · chunks · runs · citations · threads Upstash Redis arq job queue only TLS · rediss:// · no sessions yet authoritative Backblaze B2 raw file objects env vars named R2_* · same thing arq Worker same container as app runs ingest jobs Chunker split + tsvector metadata per chunk Cohere Embedder embed-english-v3.0 hash fallback (dev) implemented utility script scripts/backfill_embeddings.py guarded: only real cohere key embeds chunks where vector IS NULL planned · gap Idempotency + Dedup idempotency key · sha-256 hash planned · gap Retries + DLQ arq max_tries · failed-job surface planned · gap Run Checkpoints langgraph PostgresSaver · resume implemented · Redis Rate Limit + Caches 5 up / 20 chat per min Logfire live traces + spans research_agent.run planned Eval Suite nightly RAGAS replay golden question set planned Cost Metering tokens · model per run Render Web Service one container · free tier CMD: alembic upgrade head → arq worker + uvicorn GitHub repo push → auto-deploy Vercel Next.js frontend (port 3000)

Click a node

node detail

Each box is clickable. Solid = implemented and deployed; gold-dashed = planned gap or unshipped agent; grey-dashed = speculative. Chips up top light up real request paths — a live research run, the AG-UI stream, ingestion, backfill, and the reliability gaps.

    latest-architecture.html · calibrated to the code: single-node LangGraph researcher · hybrid pgvector⊕tsvector in Neon · Cohere embed+rerank · LiteLLM Groq→OpenRouter · Backblaze B2 · one Render container · solid=implemented / gold=planned-gap / grey=speculative