graph TB
subgraph External["External Services"]
DGX["DGX Server
Qwen 3.5 + LoRA
BGE-M3 Embeddings"]
SHOP[Shopify
Products + Orders]
FC[Firecrawl :3003
Web Crawler]
OP[1Password
Credentials]
end
subgraph Clients["Consumers"]
OC[OpenClaw
AI Assistant]
CC[Claude Code
Developer]
DASH[Dashboard
brain.e-dani.com]
MCP_C[MCP Clients
SSE Protocol]
end
subgraph Nginx["Reverse Proxy — nginx"]
N_BRAIN[brain.e-dani.com
OAuth2 Protected]
N_RAG[rag.e-dani.com
Legacy Compat]
N_QD[qdrant.e-dani.com]
end
subgraph Docker["Docker Stack — sauvage.e-dani.com"]
subgraph Brain["SkirmBrain :5000"]
direction TB
B_BRAIN["brain.py
Neural Graph • 39 endpoints"]
B_CATALOG["catalog.py
Products • 6 endpoints"]
B_CHAT["chat.py
Agent RAG Chat • 2 endpoints"]
B_VAULT["vault_view.py
Obsidian Vault • 5 endpoints"]
B_TRANS["translate.py
Translation + Glossary • 10 endpoints"]
B_WEBHOOK["webhooks.py
Jira, Confluence, Shopify • 3 endpoints"]
B_MCP["mcp_routes.py
MCP Tools • 5 endpoints"]
end
SCHED[BrainScheduler
Ingestion • Extraction
Synthesis • Structural]
MCP_S[MCP Server :8002
SSE Protocol]
PMCP[Picqer MCP :8003
WMS Bridge]
QD[(Qdrant :6333
13 Collections
82K+ vectors)]
REDIS[(Redis
Cache + State)]
OAUTH[OAuth2 Proxy :4180]
PG[(Postgres
Brain State)]
end
OC -->|MCP SSE| N_RAG
CC -->|HTTP API| N_BRAIN
DASH -->|OAuth2| N_BRAIN
MCP_C -->|SSE| N_RAG
N_BRAIN --> OAUTH --> Brain
N_RAG --> MCP_S
N_RAG --> Brain
N_QD --> QD
MCP_S --> Brain
Brain --> QD
Brain --> REDIS
Brain --> PG
Brain -->|LLM calls| DGX
Brain -->|Crawl| FC
Brain -->|Webhooks| SHOP
Brain -->|op CLI| OP
SCHED --> Brain
SHOP -->|Webhook push| B_WEBHOOK
classDef external fill:#1a1e2e,stroke:#58a6ff,color:#e6edf3
classDef client fill:#1a2e1a,stroke:#3fb950,color:#e6edf3
classDef service fill:#2d1a1a,stroke:#f0883e,color:#e6edf3
classDef storage fill:#1a1a2e,stroke:#bc8cff,color:#e6edf3
classDef proxy fill:#2d2a1a,stroke:#d29922,color:#e6edf3
classDef scheduler fill:#1a2e2e,stroke:#58a6ff,color:#e6edf3
class DGX,SHOP,FC,OP external
class OC,CC,DASH,MCP_C client
class Brain,B_BRAIN,B_CATALOG,B_CHAT,B_VAULT,B_TRANS,B_WEBHOOK,B_MCP,MCP_S,PMCP service
class QD,REDIS,PG storage
class N_BRAIN,N_RAG,N_QD,OAUTH proxy
class SCHED scheduler
| Collection | Points | Status |
|---|---|---|
| skirmshop_documents | 30,704 | active |
| skirmshop_concepts | 29,353 | active |
| competitor_products_v2 | 15,950 | active |
| product_catalog | 3,747 | active |
| knowledge_brain | 963 | active |
| product_collections | 760 | active |
| skirmshop_products_v2 | 750 | active |
| product_pages | 717 | active |
| supplier_registry | 8 | active |
| supplier_products | 0 | empty |
| supplier_pages | 0 | empty |
| competitor_products | 0 | legacy |
| web_pages | 0 | empty |
| Supplier | Type | Status |
|---|---|---|
| Silverback Airsoft | Manufacturer | active |
| 3P-Store | Wholesaler | active |
| AGM | Distributor | active |
| Taiwangun | Wholesaler | potential |
| Gunfire | Wholesaler | potential |
| AirsoftZone | Competitor/Supplier | potential |
| Anareus | Competitor/Supplier | potential |
| VSGUN | Competitor/Supplier | potential |
| Competitor | Products Indexed |
|---|---|
| Airsoft Quimera | — |
| Hobby Expert | — |
| VSGUN | — |
| Zulu Tactical | — |
| Airsoft Estartit | — |
| Airsoft Nation Store | — |
| Airsoft Yecla | — |
| Weapon762 | — |
flowchart LR
subgraph DGX["DGX Server (192.168.50.140)"]
VLLM["vLLM
Qwen 3.5-35B + LoRA
:4000 via LiteLLM"]
BGE["BGE-M3
Embeddings
:8082"]
TTS["Qwen3-TTS
:8880"]
end
subgraph Sauvage["sauvage.e-dani.com"]
direction TB
BRAIN_C["skirmshop-brain
:5000"]
QD_C["pocharlies-qdrant
:6333"]
REDIS_C["pocharlies-redis
:6379"]
PG_C["brain-postgres
:5432"]
MCP_C2["pocharlies-mcp
:8002"]
PMCP_C["pocharlies-picqer-mcp
:8003"]
FC_C["firecrawl-api
:3003"]
OAUTH_C["pocharlies-oauth2-proxy
:4180"]
WEBUI["open-webui
:3000"]
MON["monitoring stack
Grafana, Prometheus, Loki"]
end
BRAIN_C -->|LLM| VLLM
BRAIN_C -->|Embed| BGE
BRAIN_C --> QD_C
BRAIN_C --> REDIS_C
BRAIN_C --> PG_C
BRAIN_C -->|Crawl| FC_C
MCP_C2 --> BRAIN_C
classDef dgx fill:#1a1e2e,stroke:#58a6ff,color:#e6edf3
classDef sauvage fill:#1a2e1a,stroke:#3fb950,color:#e6edf3
class VLLM,BGE,TTS dgx
class BRAIN_C,QD_C,REDIS_C,PG_C,MCP_C2,PMCP_C,FC_C,OAUTH_C,WEBUI,MON sauvage
flowchart LR
subgraph Sources["Data Sources"]
S1[Shopify Webhooks]
S2[Jira / Confluence]
S3[Competitor Sites]
S4[Supplier B2B Portals]
S5[WhatsApp Messages]
end
subgraph Ingestion["Ingestion Layer"]
A1[Adapters
shopify, jira, confluence
whatsapp, telegram]
A2[IngestionPipeline
Document Parser]
end
subgraph Neural["Neural Processing"]
E1[ConceptExtractor
LLM-based extraction]
H1[HebbianEngine
Hebbian learning
connection weights]
SY[SynthesisEngine
Concept summaries]
ST[Structural Builder
Taxonomy neurons]
end
subgraph Storage["Vector Storage (Qdrant)"]
Q1[(documents
30,704)]
Q2[(concepts
29,353)]
Q3[(products
750)]
Q4[(competitors
15,950)]
Q5[(knowledge
963)]
end
subgraph Output["Intelligence Output"]
V1[Vault Renderer
Obsidian notes]
D1[Digest Builder
Daily summaries]
S_1[Hybrid Search
RAG chat]
P1[Pricing Engine
Alerts + position]
DM[Demand Analysis
Trends + gaps]
end
S1 --> A1
S2 --> A1
S3 --> A1
S4 --> A1
S5 --> A1
A1 --> A2
A2 --> Q1
Q1 --> E1
E1 --> Q2
Q2 --> H1
H1 --> SY
H1 --> ST
Q1 & Q2 --> S_1
Q3 & Q4 --> P1
Q3 & Q4 --> DM
Q2 --> V1
Q2 --> D1
classDef source fill:#1a2e1a,stroke:#3fb950,color:#e6edf3
classDef ingest fill:#2d2a1a,stroke:#d29922,color:#e6edf3
classDef neural fill:#2d1a1a,stroke:#f0883e,color:#e6edf3
classDef store fill:#1a1a2e,stroke:#bc8cff,color:#e6edf3
classDef output fill:#1a1e2e,stroke:#58a6ff,color:#e6edf3
class S1,S2,S3,S4,S5 source
class A1,A2 ingest
class E1,H1,SY,ST neural
class Q1,Q2,Q3,Q4,Q5 store
class V1,D1,S_1,P1,DM output
| Job | Description | Frequency |
|---|---|---|
ingestion | Process new documents from all adapters | Continuous |
extraction | Extract concepts from documents via LLM | Continuous |
synthesis | Generate concept summaries | After extraction batch |
structural | Rebuild taxonomy and structural neurons | After synthesis |
product-match | Match products across Shopify and competitors | Scheduled |