IRIS Stack
observability sees all 8
Target blueprint is the 8-layer local AI stack. IRIS uses our software: Laravel, vLLM iris-v3 (chat GPUs + Unlimited-OCR on GPU 3), the version-3 catalog, Sanctum/UAC, systemd. Not Next.js, not LangGraph, not Chroma, not MCP mesh. Observability is this page.
Filled
5 / 8
Partial
3
Open
0
Probed
2026-10-03T11:53:10+08:00
Eight layers
| # | Layer | Diagram brand | IRIS software | Fit | Live |
|---|---|---|---|---|---|
| 1 |
frontend
Where the request lands
|
Next.js / Streamlit / Vercel | erp-ai-chatbot-web / mobile / desktop + admin blades | filled | 3/3 clients on disk; admin TOTP pages live |
| 2 |
orchestrator
Runs the end-to-end flow
|
LangGraph / CrewAI | EloquentV3AskService: lookup → open_model → optional iris-v3 → fetch_erp | partial | PHP owns the loop. Stages persist on /iris-stack (recent asks). |
| 3 |
rag
Pick one retrieval index — catalog, not a second vector DB
|
Chroma / Qdrant | version-3 llm/nav.json + iris-context snapshot | filled | Catalog 283 models; context 283/283 |
| 4 |
llm
Weights sit on this disk
|
vLLM | vLLM iris-v3 (Qwen2.5-14B-Instruct-AWQ on chat GPUs; GPU 3 is Unlimited-OCR) | filled | resident Qwen/Qwen2.5-14B-Instruct-AWQ · chat replicas 3/3 · OCR up |
| 5 |
tools
Connects the stack to ERP — catalog-gated, not MCP mesh
|
MCP | EloquentV3ToolService: lookup, open_model, fetch_erp | partial | Three PHP tools. Contract on /iris-tools. fetch_erp is approvedRelation() only. |
| 6 |
code_agent
Writes and debugs the stack — this Cursor /loop, not a prod shell
|
Claude Code / Aider | Cursor AGENT_LOOP_WAKE_iris_stack filling IRIS-native gaps | partial | 6 backlog items pending |
| 7 |
data
State, and everything indexed
|
SQLite / DuckDB / Supabase | ERP MySQL + chatbot MySQL + iris_context_* + latest.json | filled | 4/4 iris_context tables present |
| 8 |
deployment
Wherever you point it
|
Docker / Cloudflare / HF Spaces | systemd erp-chatbot-api.service + nginx https://chatbot.inteceng.com.my/ | filled | unit active |
Orchestrator stages
| When | Question | GPU | Stages |
|---|---|---|---|
| 2026-10-03T02:34:58+08:00 | What is the GRN table name? | skip | catalog → lookup → open_model → skip_gpu → done |
| 2026-10-02T02:34:02+08:00 | What is the GRN table name? | skip | catalog → lookup → open_model → skip_gpu → done |
| 2026-10-01T02:32:57+08:00 | What is the GRN table name? | skip | catalog → lookup → open_model → skip_gpu → done |
| 2026-09-30T02:33:00+08:00 | What is the GRN table name? | skip | catalog → lookup → open_model → skip_gpu → done |
| 2026-09-29T02:32:38+08:00 | What is the GRN table name? | skip | catalog → lookup → open_model → skip_gpu → done |
| 2026-09-28T11:09:24+08:00 | salesOrderItem on work order | skip | catalog → lookup → open_model → retrieve_context → skip_gpu → done |
| 2026-09-28T11:09:24+08:00 | What is the GRN table name? | skip | catalog → lookup → open_model → skip_gpu → done |
| 2026-09-28T11:09:21+08:00 | What is the GRN table name? | skip | catalog → lookup → open_model → skip_gpu → done |
| 2026-09-28T02:32:41+08:00 | What is the GRN table name? | skip | catalog → lookup → open_model → skip_gpu → done |
| 2026-09-27T02:32:38+08:00 | What is the GRN table name? | skip | catalog → lookup → open_model → skip_gpu → done |
| 2026-09-26T02:34:04+08:00 | What is the GRN table name? | skip | catalog → lookup → open_model → skip_gpu → done |
| 2026-09-25T02:34:30+08:00 | What is the GRN table name? | skip | catalog → lookup → open_model → skip_gpu → done |
| 2026-09-24T02:34:09+08:00 | What is the GRN table name? | skip | catalog → lookup → open_model → skip_gpu → done |
| 2026-09-23T02:32:24+08:00 | What is the GRN table name? | skip | catalog → lookup → open_model → skip_gpu → done |
| 2026-09-22T02:32:04+08:00 | What is the GRN table name? | skip | catalog → lookup → open_model → skip_gpu → done |
| 2026-09-21T02:32:20+08:00 | What is the GRN table name? | skip | catalog → lookup → open_model → skip_gpu → done |
| 2026-09-20T02:31:58+08:00 | What is the GRN table name? | skip | catalog → lookup → open_model → skip_gpu → done |
| 2026-09-19T02:32:36+08:00 | What is the GRN table name? | skip | catalog → lookup → open_model → skip_gpu → done |
| 2026-09-18T02:31:55+08:00 | What is the GRN table name? | skip | catalog → lookup → open_model → skip_gpu → done |
| 2026-09-17T02:32:05+08:00 | What is the GRN table name? | skip | catalog → lookup → open_model → skip_gpu → done |
Fill backlog
| Id | Layer | Work | Status |
|---|---|---|---|
| obs-8 | observability | Observability sees all 8 — /iris-stack live probe | done |
| orch-stages | orchestrator | Persist ask pipeline stages on each EloquentV3AskService::ask | pending |
| rag-context-retrieve | rag | Ask path may retrieve from iris-context before GPU (still catalog-gated) | pending |
| tools-inspect | tools | Inspect-only tool contract page (lookup / open_model / fetch_erp) | pending |
| p1-intents | orchestrator | P1 proposed intents from catalog patterns — review before registry write | pending |
| llm-idle-guard | llm | Refuse extra generate while /api/ps is not iris-v3 (do not add keep-alive callers) | pending |
| present-p3 | frontend | P3 richer tables/summaries on existing /eloquent-llm and chat formatters | pending |