Documento riservato · Maggio 2026
Mimir Lab × Giancarlo Passaglia

Stack tecnico,
pattern validati,
partner operativo.

Una panoramica densa del nostro n8n: architettura reale, SDK quirks già mappate, casi d’uso in produzione. Da tecnico a tecnico.

→  per Giancarlo Passaglia
01

Chi è Mimir Lab

Mimir Lab è un laboratorio di automazione AI-first fondato da Gabriele Sechi a Cademario (Ticino, CH). Stack proprietario centrato su n8n Cloud + Anthropic API diretta, orchestrato da agenti TypeScript via MCP SDK. Non un’agenzia: un execution layer tecnico per consulenti e aziende con visione chiara ma senza capacità operativa per costruirla.

Operiamo come partner tra pari — non fornitore generico. Costruiamo, deployiamo e gestiamo workflow n8n complessi in produzione. La documentazione interna è codificata in skill e pattern library derivati da 2 478 workflow analizzati.

LayerTool / TecnologiaRuolo operativo
L1 — Orchestration Claude Code + OpenClaw + Anthropic API diretta Agent di sviluppo, dispatcher, reasoning complesso
L2 — Workflow n8n Cloud — mimirlab.app.n8n.cloud Automazione, orchestrazione pipeline, integrazione servizi
L3 — Data Google Sheets (Service Account) + filesystem locale State, log operativi, dashboard contabile real-time
L4 — Output Telegram · LinkedIn · AbaNinja · Drive Delivery, pubblicazione, fatturazione automatica, archivio
02

Il nostro n8n, in profondità

Architettura dell’istanza

RisorsaValoreNote
Instance mimirlab.app.n8n.cloud — Starter plan Migrato da Docker localhost il 2026-04-07
Project ID zBy2aF6Ma4YyEX2u Container principale — tutti i workflow e credenziali dentro
Command Center duFEnIWzfjfzkK1V Pipeline brief + publish — sempre attivo
System Health Agent s6EPgHPhNN2sfdpJ Monitoring errori ogni 30 min
Agenti TypeScript OrchestratorAgent → BriefAgent / PublishAgent / N8nDocsAgent MCP SDK over stdio — npx tsx, no compile step
Sorgenti workflow mimir_v4.ts, brief-v2.ts, mimir_v5.ts SDK TypeScript — mai export JSON grezzo (credential exposure AUTH-05)

Pattern SDK validati in produzione

Questi pattern emergono da incidenti reali, non da documentazione ufficiale.

#PatternProblema evitatoFix
P-01 JSON fence stripping Claude wrappa l’output in ```json…``` anche con istruzione esplicita. JSON.parse() diretto → crash. raw.replace(/```json\s*/gi,'').replace(/```/g,'').trim() prima di ogni JSON.parse
P-02 Webhook > Poll / Schedule Più workflow che pollano la stessa risorsa (RSS, Sheets, Telegram) sull’istanza condivisa → 409 conflicts. Webhook trigger ovunque possibile. n8n→n8n via execute_workflow MCP colpisce sempre il primo webhook node.
P-03 Mai newCredential() via MCP Credential creata in global space, non assegnata al workflow del project → “credentials not shared with workflow” Credential ID hardcodato sempre. LinkedIn: assegnazione obbligatoria via UI n8n dopo ogni deploy.
P-04 Sheets mappingMode: defineBelow autoMapInputData fallisce runtime se i nomi colonna dello sheet non coincidono esattamente con le chiavi dell’input JSON. Sempre defineBelow + mapping esplicito chiave→espressione per ogni campo in append / insert.
P-05 HTTP body: specifyBody: “string” “json” con expressions dentro → parse failure silenzioso a runtime su payload dinamici. Sempre specifyBody: “string” per payload costruiti con espressioni n8n.
P-06 Mai Merge downstream di If Merge aspetta entrambi i branch. If ne esegue sempre uno solo → deadlock garantito, workflow stalla. Route diretti verso il nodo successivo. Se serve aggregazione: Merge in Append mode.
P-07 validate_workflow come unico deploy gate API n8n restituisce 200 anche su workflow corrotti. update_workflow via MCP: HTTP response inaffidabile. Sequenza: validate → valid:trueget_workflow_details (verifica struttura) → publish_workflow.
P-08 Sheets read: returnAllMatches readAllRows deprecato in n8n v4+ — fallisce silenziosamente su dataset grandi. operation: ‘read’ + options.returnAllMatches: true
P-09 Strip backtick fences su ogni output LLM Anche con system prompt che vieta il markdown, Haiku e Sonnet wrappano output strutturato in fences intermittentemente. Funzione safeParse(raw) in ogni Code node che consuma output LLM. No eccezioni.

Routing modelli Anthropic

ModelloString esatta (n8n / API diretta)Use case
Haiku 4.5 claude-haiku-4-5-20251001 Bulk ops, RSS parsing, classificazione, ACK rapidi — costo minimo
Sonnet 4.6 claude-sonnet-4-6-20251001 Build / fix workflow, reasoning multi-step, brief generation
Opus 4.6 claude-opus-4-6-20251001 Architettura, analisi critica, quality gate complessi

⚠ Mai usare claude-3-haiku, claude-3-sonnet o qualsiasi stringa claude-3-* — legacy, non disponibili sullo stack corrente.

Integrazioni live

IntegrazioneAuthUso operativo
Google Sheets Service Account OAuth2 Brief_Log, Publish_Log, Offset_Tracker, CRM_State — state e log persistenti
Telegram Bot token — @Mimirlab_Bot Output operativi real-time, ACK, brief delivery, comandi
Anthropic API HTTP Header auth (API key) LLM diretta via HTTP Request node — nessun wrapper generico
LinkedIn OAuth2 (company + personal) Company EN 112515148 / Personal IT 0etrgkpbX9 — credenziali via UI obbligatoria
AbaNinja REST API (in build) Registrazione fatture automatica, gestione ricevute spese, sync contabile
Google Drive Service Account Archivio ricevute e fatture per categoria / anno

Deploy flow

1. Scrivi SDK TypeScript (mimir_v4.ts / mimir_v5.ts)
   — mai export JSON n8n grezzo: possono contenere credential espansi (AUTH-05)

2. validate_workflow  →  valid:true   ← gate OBBLIGATORIO, non saltare
3. get_workflow_details               ← verifica struttura post-update
   — update_workflow via MCP può restituire HTTP 200 su aggiornamento fallito

4. publish_workflow                   ← solo se valid:true confermato

5. Credenziali LinkedIn / Google OAuth: assegnare via UI dopo deploy
   — newCredential() via MCP crea credential in global space, non nel project
   — risultato: "credentials not shared with workflow" a runtime
03

Casi reali

In produzione · Content Automation

Brief Pipeline — content automation AI

Pipeline autonoma: 10 feed RSS in parallelo (n8n Blog, VentureBeat AI, NYT AI, Google Research, DeepMind, OpenAI, MIT Tech Review, HN Anthropic…) → XML parsing custom con finestra 7 giorni → Claude Haiku per generazione post EN+IT → Google Sheets log (Brief_Log con campi Date, POST_EN, POST_IT, Status, Input_Tokens, Output_Tokens) → Telegram delivery → publish LinkedIn company EN + personal IT. ~45 secondi end-to-end. Cron automatico alle 08:00 Europe/Zurich.

Brief v2 in design: relevance classifier pre-LLM (Haiku, score ≥0.7), Jina AI per full-text scraping degli articoli rilevanti invece dei soli RSS snippet, quality gate anti-allucinazione (confronto claim generati vs fonti usate prima del publish), dedup URL via Sheets. Source intelligence derivata dal mining su 2 478 workflow — reference: template n8n #4708 (rss-monitor-distribute) e #4624 (quality-gate-validation).

n8n Cloud Anthropic Haiku Google Sheets Telegram LinkedIn Produzione
In build · TASK 002 · Contabilità automatizzata

Contabilità n8n-first + AbaNinja

Stack contabile completamente automatizzato: scan ricevuta spesa → archivia in Google Drive per categoria (spese/utenze/software/professionali) → genera fattura HTML via template Jinja2 → webhook AbaNinja REST per registrazione automatica nel gestionale. Google Sheets come dashboard real-time.

Architettura decisionale: AbaNinja come single source of truth contabile (gestito da commercialista), n8n come orchestratore, Sheets come monitoring operativo. Script Python: archivia_ricevuta.py, genera_fattura.py, report_mensile.py. Template fattura HTML con Jinja2 — config via JSON secret non committato (.secrets/contabilita_config.json).

n8n Cloud AbaNinja REST Google Drive Python / Jinja2 In build
Completato · Knowledge Mining

mimir-knowledge — pattern library da 2 478 workflow

Download completo di 2 478 workflow pubblici dal template repository n8n → pipeline Lavoisier di classificazione → 194 workflow experience_class=‘transform’ → clustering multi-label su pattern_tags + integrations + triggers → 33 cluster identificati, 9 HIGH-Mimir con alignment diretto ai casi d’uso interni.

Cluster HIGH-Mimir per dimensione: agent-with-tools (36), rag-foundation (31), content-generation-ai (15), content-multichannel-publish (15), email-classifier-router (14), agent-long-term-memory (11), rss-monitor-distribute (8), rag-living-data (7), lead-enrichment (7). Output: SQLite knowledge.db + digest MD per Brief v2 intelligence.

2 478 workflow analizzati 33 cluster Pattern mining SQLite Completato
04

Come possiamo lavorare insieme

Non gestiamo sub-fornitura come un service provider generico. L’idea è una collaborazione tecnica tra pari: tu hai i clienti e la relazione; noi abbiamo l’execution n8n/AI e il know-how operativo già mappato.

05

Tariffa

Tariffa oraria / per progetto
Da concordare
Definiamo insieme in base al tipo di impegno: progetto una tantum, retainer mensile a ore, o sub-fornitura su singolo cliente.

g.sechi@mimirlab.net  ·  mimirlab.net