SkirmBrain

v2.0.0 checking...
personal
skirmshop
Collections
13
Total Vectors
82,952
Documents
30,704
Concepts
29,353
Products
750
Competitor Products
15,950
API Endpoints
76
Containers
32

System Architecture

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

API Routers (7 routers, 76 endpoints)

Neural Graph
39 endpoints
Search, neurons, digest, adapters, structural, synthesis, graph viz, pricing, demand, competitors, costs
brain.py
Translation
10 endpoints
Batch translate, glossary CRUD, normalize, language pairs
translate.py
Catalog & Products
6 endpoints
Product search, catalog sync, Shopify full-sync, stats
catalog.py
MCP Tools
5 endpoints
Search, neurons, stats, digest, adapters for MCP clients
mcp_routes.py • prefix: /tools
Vault
5 endpoints
Browse Obsidian vault, note viewer, stats
vault_view.py • prefix: /vault
Webhooks
3 endpoints
Jira, Confluence, Shopify webhook handlers
webhooks.py • prefix: /webhooks
Agent Chat
2 endpoints
RAG-powered agent chat with learning
chat.py • prefix: /agent
System
6 endpoints
Health, instances, admin, 3D view, system, LoRA export
app.py (direct routes)

Qdrant Collections

CollectionPointsStatus
skirmshop_documents30,704active
skirmshop_concepts29,353active
competitor_products_v215,950active
product_catalog3,747active
knowledge_brain963active
product_collections760active
skirmshop_products_v2750active
product_pages717active
supplier_registry8active
supplier_products0empty
supplier_pages0empty
competitor_products0legacy
web_pages0empty

brain.py Endpoint Groups

Neural Graph Core (13)

POST/instances/{id}/search
GET/instances/{id}/neurons
GET/instances/{id}/neurons/{slug}
POST/instances/{id}/neurons/{slug}/merge
GET/instances/{id}/stats
GET/instances/{id}/digest
POST/instances/{id}/digest/trigger
GET/instances/{id}/adapters
POST/instances/{id}/adapters/{name}/ingest
POST/instances/{id}/vault/rebuild
POST/instances/{id}/structural/build
POST/instances/{id}/reset
GET/instances/{id}/pipeline

Graph Visualization (6)

GET/graph/{id}/full
GET/graph/{id}/positions
GET/graph/{id}/meta
GET/graph/{id}/connections/top
GET/graph/{id}/connections/{slug}
POST/graph/{id}/recompute-layout

Commerce Intelligence (4)

POST/instances/{id}/product-match
GET/instances/{id}/product-match/results
GET/instances/{id}/gap-analysis
POST/instances/{id}/customer-match

Pricing (5)

GET/instances/{id}/prices/changes
GET/instances/{id}/prices/position/{slug}
GET/instances/{id}/prices/recommendations
GET/instances/{id}/prices/alerts
POST/instances/{id}/prices/deliver-alerts

Demand Intelligence (7)

GET/instances/{id}/demand/trending
GET/instances/{id}/demand/categories
GET/instances/{id}/demand/brands
GET/instances/{id}/demand/unmet
POST/instances/{id}/demand/whatsapp-signals
GET/instances/{id}/demand/search-queries
GET/instances/{id}/promotions

Other (4)

POST/instances/{id}/structural/full-rebuild
POST/instances/{id}/synthesis/generate-all
POST/instances/{id}/competitors/crawl
POST/instances/{id}/costs/enrich

Suppliers

SupplierTypeStatus
Silverback AirsoftManufactureractive
3P-StoreWholesaleractive
AGMDistributoractive
TaiwangunWholesalerpotential
GunfireWholesalerpotential
AirsoftZoneCompetitor/Supplierpotential
AnareusCompetitor/Supplierpotential
VSGUNCompetitor/Supplierpotential

Competitors Tracked

CompetitorProducts Indexed
Airsoft Quimera
Hobby Expert
VSGUN
Zulu Tactical
Airsoft Estartit
Airsoft Nation Store
Airsoft Yecla
Weapon762

Infrastructure

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

Neural Processing Pipeline

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

BrainScheduler — Recurring Jobs

JobDescriptionFrequency
ingestionProcess new documents from all adaptersContinuous
extractionExtract concepts from documents via LLMContinuous
synthesisGenerate concept summariesAfter extraction batch
structuralRebuild taxonomy and structural neuronsAfter synthesis
product-matchMatch products across Shopify and competitorsScheduled