LangGraph boilerplate with hierarchical agents inspired by the human body: a Brain orchestrator and Organs that act autonomously or escalate. IoT/Smart Home demo with event-log reconciliation and configurable HITL. Working alpha, adaptable to any domain.
6
stars
8
commits
Python
primary language
Sep 4, 2026
updated
๐ฎ๐น Italiano | ๐ฌ๐ง English
[!WARNING] LangBrain non รจ pronto per l'uso in produzione. ร un prototipo/boilerplate dimostrativo: prima di usarlo in ambienti reali occorre completare gli interventi di sicurezza, persistenza, concorrenza, deployment, observability e testing elencati in
docs/PROJECT_STATUS.md.
Un corpo digitale per i tuoi progetti di automazione intelligente ed agenti gerarchici.
Un boilerplate LangGraph sperimentale che implementa un pattern di agenti gerarchici ispirato al modo in cui funziona un organismo: un cervello (Orchestratore Supremo) che pensa in modo ponderato e concilia i conflitti, e organi/componenti (sotto-agenti a N-livelli) che reagiscono in tempo reale, agendo in autonomia quando serve ed escalando ai livelli superiori solo quando la situazione lo richiede.
Il caso d'uso dimostrativo principale รจ una smart home, affiancato da una demo avanzata di omeostasi medica e fisiologica, ma l'architettura รจ pensata per essere trapiantata in qualsiasi dominio โ customer support, monitoraggio industriale, gestione flotte, e molto altro.
La maggior parte dei sistemi multi-agente che si trovano in giro sono organigrammi rigidi: un capo che decide tutto, e sotto-agenti che eseguono ordini senza mai muovere un dito da soli. ร un buon modello per un ufficio burocratico. ร un modello pessimo per un corpo che deve sopravvivere nel mondo reale.
Il tuo corpo non funziona cosรฌ. Se metti la mano su una piastra bollente, non aspetti che il cervello elabori la situazione e ti mandi il comando di ritirarla โ il midollo spinale reagisce da solo, in millisecondi, tramite un arco riflesso. Il cervello viene informato dopo, quando serve capire cosa รจ successo e magari decidere qualcosa di piรน strategico (es. "non toccare piรน quella zona della cucina").
Questo boilerplate replica esattamente questa logica:
Un vero corpo non si ferma a "cervello + organi". Ogni organo, se lo guardi da vicino, รจ a sua volta un sistema fatto di sotto-strutture, ognuna specializzata:
๐ง Cervello (Orchestratore centrale - Livello 0)
โ
โโโ ๐ Organo Sicurezza (Livello 1)
โ โ
โ โโโ ๐ Componente Serratura (Livello 2)
โ
โโโ โค๏ธ Organo Cardiovascolare (Livello 1)
โ
โโโ ๐ซ Componente Frequenza Cardiaca (Livello 2)
In pratica: ogni nodo del grafo puรฒ essere, a sua volta, un piccolo cervello per il livello sottostante. Lo stesso base_agent.py, lo stesso DynamicAgent, ed il meccanismo di audit log si applicano in modo ricorsivo sia coordinando 2 organi principali che 20 sotto-componenti innestati su N livelli.
โโโโโโโโโโโโโโโโโโโโโโโ
โ ๐ง CERVELLO โ
โ (Orchestratore L0) โ
โ Prioritร : 1000.0 โ
โโโโโโโโโโโโฌโโโโโโโโโโโโโ
โ
legge/scrive sul sistema nervoso
โ
โโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโ
โ โ โ
โโโโโโโโผโโโโโโ โโโโโโโโผโโโโโโ โโโโโโโโผโโโโโโโ
โ ๐ก๏ธ Clima โ โ ๐ Sicurezzaโ โ โค๏ธ Cardio โ
โ (Organo L1) โ โ (Organo L1) โ โ (Organo L1) โ
โโโโโโโโฌโโโโโโโ โโโโโโโโฌโโโโโโโ โโโโโโโโฌโโโโโโโโ
โ โ โ
โโโโโโโโผโโโโโโโ โโโโโโโโผโโโโโโโ โโโโโโโโผโโโโโโโโ
โ Sensori/ โ โ Componente โ โ Componente โ
โ Attuatori โ โ Serratura L2โ โ Pacemaker L2 โ
โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐ฉธ SISTEMA NERVOSO (Event Log / DB)
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Possiede i privilegi massimi (prioritร 1000.0). Riceve le escalation dei sotto-agenti quando scattano conflitti non risolvibili ed esegue il check di routine dell'intero sistema (check_body_status).
DynamicAgent & BaseAgent)Agiscono in autonomia per il loro target sensore/dispositivo. Se rilevano un conflitto nel DB o un'anomalia severa (es. aritmia cardiaca o sblocco sospetto), generano un'escalation strutturata verso il loro agente Padre.
L'interruzione per approvazione umana puรฒ essere inserita dinamicamente ovunque nel flusso del grafo tramite il wrapper in app/graph/builder.py e gestita 100% via API REST senza riavviare il server.
Attivazione Dinamica via API:
POST /hitl/config consente di specificare nodi (hitl_nodes), sensori protetti (hitl_targets), azioni critiche (hitl_actions) e l'attesa massima in secondi (max_wait_seconds).
Tre modalitร di Resume (POST /graph/resume):
decision | Comportamento |
|---|---|
APPROVA | Scrive RECONCILED_<action> nel DB. Nessuna modifica fisica al dispositivo. |
RESPINGI | Scrive REJECTED_<action> nel DB. Il device rimane bloccato fino a TTL o unblock manuale. |
OVERRIDE | God Mode Semantico: il campo reasoning in linguaggio naturale viene inviato al MAO con un prompt di Arbitrato Semantico. Il MAO traduce la frase in un array JSON di comandi {target, action, value} eseguiti fisicamente via force_execute_tool, che bypassa tutti i lock di prioritร e traccia ogni azione nel DB con actor: "Brain_Override". |
POST /graph/resume
Content-Type: application/json
{
"decision": "OVERRIDE",
"reasoning": "Ignora il blocco dell'energia: mia nonna ha freddo. Accendi la stufa a 22 gradi.",
"thread_id": "api_session"
}
LangBrain/
โโโ REQUIREMENTS.md
โโโ Dockerfile
โโโ docker-compose.yml
โโโ requirements.txt
โโโ test_results.json # Esito in tempo reale della suite di test
โโโ .env # Provider LLM e Prompt configurabili del Brain
โโโ .env.example # Template di configurazione senza segreti
โโโ app/
โ โโโ MAO/
โ โ โโโ model_access_object.py # Model Access Object (OpenRouter, Gemini, LLM Locale)
โ โโโ agents/
โ โ โโโ base_agent.py # DNA comune di ogni agente (applica stato, idoneitร , escalation)
โ โ โโโ agent_climate.py # Agente Clima nativo
โ โ โโโ dynamic_agent.py # Agente Dinamico configurabile a runtime (Livelli 1..N)
โ โ โโโ agent_registry.py # Registro gerarchico salvato su DB SQLite
โ โ โโโ medical_agents.py # Agenti Fisiologici (Cardiovascolare, Respiratorio)
โ โโโ graph/
โ โ โโโ orchestrator.py # Cervello (BrainAgent - Livello 0)
โ โ โโโ builder.py # Builder del grafo LangGraph con wrapper HITL
โ โ โโโ hitl_config.py # Manager della configurazione dinamica HITL
โ โ โโโ state.py # GraphState condiviso
โ โโโ tools/
โ โ โโโ baseTool.py # Classe base astratta per tutti i tool IoT/Medici
โ โ โโโ sensor_tools.py # Tool Smart Home (AC, Serratura, Allarme)
โ โ โโโ medical_tools.py # Tool Medici (Pacemaker, Ventilatore SpO2, Normalizzatore)
โ โ โโโ event_log.py # Sistema Nervoso: audit log eventi e sblocco TTL
โ โ โโโ tool_wrapper.py # Tool execution logging/wrapper
โ โโโ db/
โ โ โโโ database.py # Setup SQLite (tabelle events, readings, agents_registry)
โ โโโ api/
โ โ โโโ main.py # API REST FastAPI complete (100% headless con DELETE /system/reset)
โ โโโ checkpointer.py # Checkpointer LangGraph per la persistenza
โ โโโ observability/
โ โโโ tracing.py # Tracing e logging strutturato
โโโ examples/
โ โโโ hierarchical_pattern/
โ โ โโโ demo_hierarchy.py # Demo Gerarchia Smart Home N-Livelli
โ โโโ medical_homeostasis/
โ โโโ demo_medical_homeostasis.py # Demo Omeostasi Fisiologica & Risoluzione Patologie
โโโ tests/
โ โโโ test_all.py # Suite di test automatizzata (38 test unitari & integrati)
โโโ docs/
โโโ HOW_TO_CUSTOMIZE.md # Guida alla personalizzazione e mappatura API
| Componente | Scelta | Perchรฉ |
|---|---|---|
| Framework Agenti | LangGraph | Grafi stateful con cicli, routing condizionale e checkpointing nativo |
| Provider LLM | MAO Proxy | Supporto per OpenRouter, Google AI Studio (Gemini) e LLM Locali (vLLM, LM Studio) |
| API Server | FastAPI | Server HTTP/REST asincrono 100% headless con Swagger UI interattiva |
| Database | SQLite (aiosqlite) | Zero setup, persistenza audit log eventi, registro agenti e stato |
Le chiamate LLM sono asincrone. Il timeout HTTP del MAO รจ configurato da MAO_TIMEOUT_SECONDS e vale 40 secondi se la variabile non รจ presente o non รจ valida. Per un modello su un'altra macchina della LAN, imposta sia LOCAL_MODEL_BASE_URL sia LOCAL_MODEL_DOCKER_BASE_URL sull'endpoint OpenAI-compatible raggiungibile (per esempio http://172.16.77.153:8080/v1) e usa in LOCAL_MODEL l'ID restituito da GET /v1/models.
LangBrain tratta action, old_value e new_value come dati estensibili. Il boilerplate non puรฒ conoscere gli stati fisici validi di ogni dominio: chi aggiunge un tool o agente deve implementare e testare la propria validazione/mappatura (per esempio LOCKED/UNLOCKED per una serratura). I flag interni come REJECTED e BLOCKED vengono segnalati dall'health check, ma non trasformati automaticamente in uno stato fisico.
Gli smoke test smoke_test_full.ps1 e smoke_test_full_v2.ps1 verificano prima /v1/models, configurano un vero interrupt sul target dell'override e usano decodifica UTF-8 esplicita su Windows PowerShell 5.1.
Gerarchia Smart Home (examples/hierarchical_pattern/demo_hierarchy.py):
python3 examples/hierarchical_pattern/demo_hierarchy.py
Dimostra l'escalation ricorsiva da un sotto-componente serratura (Livello 2) all'organo sicurezza (Livello 1) fino al Cervello (Livello 0).
Omeostasi Medica & Patologie (examples/medical_homeostasis/demo_medical_homeostasis.py):
python3 examples/medical_homeostasis/demo_medical_homeostasis.py
Simula l'insorgenza di patologie cliniche (Tachicardia 160 BPM, Ipossia 82% SpO2) e l'intervento automatico degli Agenti Fisiologici per riportare l'organismo in omeostasi.
Per eseguire la suite legacy custom e aggiornare test_results.json:
python3 tests/test_all.py
Per eseguire i test di regressione asincroni standard:
python -m unittest tests.test_blocking_regressions -v
Per il test end-to-end con modello locale usa smoke_test_full_v2.ps1. Per una verifica API compatta usa lo smoke test PowerShell per Windows; รจ disponibile anche la versione Bash.
Polyform Small Business License 1.0.0, libero per uso personale ed aziendale fino a soglia di fatturato.
8 commits
Hacker News (1)
Python
86.4%
PowerShell
13.2%
LangGraph boilerplate with hierarchical agents inspired by the human body: a Brain orchestrator and Organs that act autonomously or escalate. IoT/Smart Home demo with event-log reconciliation and configurable HITL. Working alpha, adaptable to any domain.
6
stars
8
commits
Python
primary language
Sep 4, 2026
updated
๐ฎ๐น Italiano | ๐ฌ๐ง English
[!WARNING] LangBrain non รจ pronto per l'uso in produzione. ร un prototipo/boilerplate dimostrativo: prima di usarlo in ambienti reali occorre completare gli interventi di sicurezza, persistenza, concorrenza, deployment, observability e testing elencati in
docs/PROJECT_STATUS.md.
Un corpo digitale per i tuoi progetti di automazione intelligente ed agenti gerarchici.
Un boilerplate LangGraph sperimentale che implementa un pattern di agenti gerarchici ispirato al modo in cui funziona un organismo: un cervello (Orchestratore Supremo) che pensa in modo ponderato e concilia i conflitti, e organi/componenti (sotto-agenti a N-livelli) che reagiscono in tempo reale, agendo in autonomia quando serve ed escalando ai livelli superiori solo quando la situazione lo richiede.
Il caso d'uso dimostrativo principale รจ una smart home, affiancato da una demo avanzata di omeostasi medica e fisiologica, ma l'architettura รจ pensata per essere trapiantata in qualsiasi dominio โ customer support, monitoraggio industriale, gestione flotte, e molto altro.
La maggior parte dei sistemi multi-agente che si trovano in giro sono organigrammi rigidi: un capo che decide tutto, e sotto-agenti che eseguono ordini senza mai muovere un dito da soli. ร un buon modello per un ufficio burocratico. ร un modello pessimo per un corpo che deve sopravvivere nel mondo reale.
Il tuo corpo non funziona cosรฌ. Se metti la mano su una piastra bollente, non aspetti che il cervello elabori la situazione e ti mandi il comando di ritirarla โ il midollo spinale reagisce da solo, in millisecondi, tramite un arco riflesso. Il cervello viene informato dopo, quando serve capire cosa รจ successo e magari decidere qualcosa di piรน strategico (es. "non toccare piรน quella zona della cucina").
Questo boilerplate replica esattamente questa logica:
Un vero corpo non si ferma a "cervello + organi". Ogni organo, se lo guardi da vicino, รจ a sua volta un sistema fatto di sotto-strutture, ognuna specializzata:
๐ง Cervello (Orchestratore centrale - Livello 0)
โ
โโโ ๐ Organo Sicurezza (Livello 1)
โ โ
โ โโโ ๐ Componente Serratura (Livello 2)
โ
โโโ โค๏ธ Organo Cardiovascolare (Livello 1)
โ
โโโ ๐ซ Componente Frequenza Cardiaca (Livello 2)
In pratica: ogni nodo del grafo puรฒ essere, a sua volta, un piccolo cervello per il livello sottostante. Lo stesso base_agent.py, lo stesso DynamicAgent, ed il meccanismo di audit log si applicano in modo ricorsivo sia coordinando 2 organi principali che 20 sotto-componenti innestati su N livelli.
โโโโโโโโโโโโโโโโโโโโโโโ
โ ๐ง CERVELLO โ
โ (Orchestratore L0) โ
โ Prioritร : 1000.0 โ
โโโโโโโโโโโโฌโโโโโโโโโโโโโ
โ
legge/scrive sul sistema nervoso
โ
โโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโ
โ โ โ
โโโโโโโโผโโโโโโ โโโโโโโโผโโโโโโ โโโโโโโโผโโโโโโโ
โ ๐ก๏ธ Clima โ โ ๐ Sicurezzaโ โ โค๏ธ Cardio โ
โ (Organo L1) โ โ (Organo L1) โ โ (Organo L1) โ
โโโโโโโโฌโโโโโโโ โโโโโโโโฌโโโโโโโ โโโโโโโโฌโโโโโโโโ
โ โ โ
โโโโโโโโผโโโโโโโ โโโโโโโโผโโโโโโโ โโโโโโโโผโโโโโโโโ
โ Sensori/ โ โ Componente โ โ Componente โ
โ Attuatori โ โ Serratura L2โ โ Pacemaker L2 โ
โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐ฉธ SISTEMA NERVOSO (Event Log / DB)
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Possiede i privilegi massimi (prioritร 1000.0). Riceve le escalation dei sotto-agenti quando scattano conflitti non risolvibili ed esegue il check di routine dell'intero sistema (check_body_status).
DynamicAgent & BaseAgent)Agiscono in autonomia per il loro target sensore/dispositivo. Se rilevano un conflitto nel DB o un'anomalia severa (es. aritmia cardiaca o sblocco sospetto), generano un'escalation strutturata verso il loro agente Padre.
L'interruzione per approvazione umana puรฒ essere inserita dinamicamente ovunque nel flusso del grafo tramite il wrapper in app/graph/builder.py e gestita 100% via API REST senza riavviare il server.
Attivazione Dinamica via API:
POST /hitl/config consente di specificare nodi (hitl_nodes), sensori protetti (hitl_targets), azioni critiche (hitl_actions) e l'attesa massima in secondi (max_wait_seconds).
Tre modalitร di Resume (POST /graph/resume):
decision | Comportamento |
|---|---|
APPROVA | Scrive RECONCILED_<action> nel DB. Nessuna modifica fisica al dispositivo. |
RESPINGI | Scrive REJECTED_<action> nel DB. Il device rimane bloccato fino a TTL o unblock manuale. |
OVERRIDE | God Mode Semantico: il campo reasoning in linguaggio naturale viene inviato al MAO con un prompt di Arbitrato Semantico. Il MAO traduce la frase in un array JSON di comandi {target, action, value} eseguiti fisicamente via force_execute_tool, che bypassa tutti i lock di prioritร e traccia ogni azione nel DB con actor: "Brain_Override". |
POST /graph/resume
Content-Type: application/json
{
"decision": "OVERRIDE",
"reasoning": "Ignora il blocco dell'energia: mia nonna ha freddo. Accendi la stufa a 22 gradi.",
"thread_id": "api_session"
}
LangBrain/
โโโ REQUIREMENTS.md
โโโ Dockerfile
โโโ docker-compose.yml
โโโ requirements.txt
โโโ test_results.json # Esito in tempo reale della suite di test
โโโ .env # Provider LLM e Prompt configurabili del Brain
โโโ .env.example # Template di configurazione senza segreti
โโโ app/
โ โโโ MAO/
โ โ โโโ model_access_object.py # Model Access Object (OpenRouter, Gemini, LLM Locale)
โ โโโ agents/
โ โ โโโ base_agent.py # DNA comune di ogni agente (applica stato, idoneitร , escalation)
โ โ โโโ agent_climate.py # Agente Clima nativo
โ โ โโโ dynamic_agent.py # Agente Dinamico configurabile a runtime (Livelli 1..N)
โ โ โโโ agent_registry.py # Registro gerarchico salvato su DB SQLite
โ โ โโโ medical_agents.py # Agenti Fisiologici (Cardiovascolare, Respiratorio)
โ โโโ graph/
โ โ โโโ orchestrator.py # Cervello (BrainAgent - Livello 0)
โ โ โโโ builder.py # Builder del grafo LangGraph con wrapper HITL
โ โ โโโ hitl_config.py # Manager della configurazione dinamica HITL
โ โ โโโ state.py # GraphState condiviso
โ โโโ tools/
โ โ โโโ baseTool.py # Classe base astratta per tutti i tool IoT/Medici
โ โ โโโ sensor_tools.py # Tool Smart Home (AC, Serratura, Allarme)
โ โ โโโ medical_tools.py # Tool Medici (Pacemaker, Ventilatore SpO2, Normalizzatore)
โ โ โโโ event_log.py # Sistema Nervoso: audit log eventi e sblocco TTL
โ โ โโโ tool_wrapper.py # Tool execution logging/wrapper
โ โโโ db/
โ โ โโโ database.py # Setup SQLite (tabelle events, readings, agents_registry)
โ โโโ api/
โ โ โโโ main.py # API REST FastAPI complete (100% headless con DELETE /system/reset)
โ โโโ checkpointer.py # Checkpointer LangGraph per la persistenza
โ โโโ observability/
โ โโโ tracing.py # Tracing e logging strutturato
โโโ examples/
โ โโโ hierarchical_pattern/
โ โ โโโ demo_hierarchy.py # Demo Gerarchia Smart Home N-Livelli
โ โโโ medical_homeostasis/
โ โโโ demo_medical_homeostasis.py # Demo Omeostasi Fisiologica & Risoluzione Patologie
โโโ tests/
โ โโโ test_all.py # Suite di test automatizzata (38 test unitari & integrati)
โโโ docs/
โโโ HOW_TO_CUSTOMIZE.md # Guida alla personalizzazione e mappatura API
| Componente | Scelta | Perchรฉ |
|---|---|---|
| Framework Agenti | LangGraph | Grafi stateful con cicli, routing condizionale e checkpointing nativo |
| Provider LLM | MAO Proxy | Supporto per OpenRouter, Google AI Studio (Gemini) e LLM Locali (vLLM, LM Studio) |
| API Server | FastAPI | Server HTTP/REST asincrono 100% headless con Swagger UI interattiva |
| Database | SQLite (aiosqlite) | Zero setup, persistenza audit log eventi, registro agenti e stato |
Le chiamate LLM sono asincrone. Il timeout HTTP del MAO รจ configurato da MAO_TIMEOUT_SECONDS e vale 40 secondi se la variabile non รจ presente o non รจ valida. Per un modello su un'altra macchina della LAN, imposta sia LOCAL_MODEL_BASE_URL sia LOCAL_MODEL_DOCKER_BASE_URL sull'endpoint OpenAI-compatible raggiungibile (per esempio http://172.16.77.153:8080/v1) e usa in LOCAL_MODEL l'ID restituito da GET /v1/models.
LangBrain tratta action, old_value e new_value come dati estensibili. Il boilerplate non puรฒ conoscere gli stati fisici validi di ogni dominio: chi aggiunge un tool o agente deve implementare e testare la propria validazione/mappatura (per esempio LOCKED/UNLOCKED per una serratura). I flag interni come REJECTED e BLOCKED vengono segnalati dall'health check, ma non trasformati automaticamente in uno stato fisico.
Gli smoke test smoke_test_full.ps1 e smoke_test_full_v2.ps1 verificano prima /v1/models, configurano un vero interrupt sul target dell'override e usano decodifica UTF-8 esplicita su Windows PowerShell 5.1.
Gerarchia Smart Home (examples/hierarchical_pattern/demo_hierarchy.py):
python3 examples/hierarchical_pattern/demo_hierarchy.py
Dimostra l'escalation ricorsiva da un sotto-componente serratura (Livello 2) all'organo sicurezza (Livello 1) fino al Cervello (Livello 0).
Omeostasi Medica & Patologie (examples/medical_homeostasis/demo_medical_homeostasis.py):
python3 examples/medical_homeostasis/demo_medical_homeostasis.py
Simula l'insorgenza di patologie cliniche (Tachicardia 160 BPM, Ipossia 82% SpO2) e l'intervento automatico degli Agenti Fisiologici per riportare l'organismo in omeostasi.
Per eseguire la suite legacy custom e aggiornare test_results.json:
python3 tests/test_all.py
Per eseguire i test di regressione asincroni standard:
python -m unittest tests.test_blocking_regressions -v
Per il test end-to-end con modello locale usa smoke_test_full_v2.ps1. Per una verifica API compatta usa lo smoke test PowerShell per Windows; รจ disponibile anche la versione Bash.
Polyform Small Business License 1.0.0, libero per uso personale ed aziendale fino a soglia di fatturato.
Hacker News (1)
8 commits
Python
86.4%
PowerShell
13.2%