# Architektur: sechs Säulen, Fail-Closed-Pipeline

> ToolMesh ist Go-Middleware, die jeden Tool-Call durch sechs Säulen führt: Any Backend, Code Mode, Audit, Authz, Credentials, Output Gate — mit Pipeline-Diagramm.

Canonical: https://www.toolmesh.io/de/architecture/

ToolMesh ist eine Go-Middleware, die die Ausführung von Tool-Calls zwischen KI-Agenten und Backend-Infrastruktur orchestriert, autorisiert und absichert.

## Ausführungs-Pipeline

Jeder Tool-Call durchläuft eine Fail-Closed-Pipeline. Wenn ein Schritt ablehnt (AuthZ, Gate), wird die gesamte Ausführung gestoppt. Keine Teilergebnisse gelangen durch.

## Die sechs Säulen

| Säule | Implementierung | Basiert auf |
|-------|----------------|-------------|
| **Any Backend** | MCP-Server (HTTP/STDIO) + REST-APIs via DADL | Go MCP SDK + DADL-Parser |
| **Code Mode** | `list_tools` + `execute_code` — LLMs schreiben JS statt JSON | AST-geparste Tool-Calls |
| **Audit** | Jeder Tool-Call wird strukturiert protokolliert | slog (Write-only) oder SQLite (abfragbar) |
| **Authorization** | User → Plan → Tool-Beziehungen | OpenFGA |
| **Credential Store** | Secrets werden zur Laufzeit injiziert, nie in Prompts | Umgebungsvariablen (`CREDENTIAL_*`), erweiterbar |
| **Output Gate** | JS-Policies validieren Ein-/Ausgaben | goja (Go JS-Engine) |

## Erweiterungsmodell

Drei Komponenten sind über ein Registry-Pattern erweiterbar (inspiriert von Go's `database/sql`-Treibern):

| Komponente | Registry-Funktion | Built-in | Konfiguration |
|------------|-------------------|----------|---------------|
| **Credential Store** | `credentials.Register()` | `embedded` (Umgebungsvariablen) | `CREDENTIAL_STORE=<name>` |
| **Tool Backend** | `backend.Register()` | `mcp`, `rest` (DADL), `echo` | `config/backends.yaml` |
| **Gate Evaluator** | `gate.RegisterEvaluator()` | `goja` (JavaScript) | `GATE_EVALUATORS=<list>` |

Erweiterungen registrieren sich über `init()`-Funktionen. Enterprise-Erweiterungen leben in einem separaten Modul und werden über Go Build-Tags eingebunden:

```bash
go build -tags enterprise ./cmd/toolmesh
```

### Enterprise-Erweiterungen (geplant)

| Komponente | Erweiterung | Beschreibung |
|------------|-------------|--------------|
| Credential Store | `InfisicalStore` | Infisical Secrets Manager Integration |
| Credential Store | `VaultStore` | HashiCorp Vault / OpenBao Integration |
| Gate Evaluator | `Compliance-LLM` | LLM-basierte Inhaltsklassifizierung |

## Projektstruktur

```
toolmesh/
├── cmd/
│   └── toolmesh/          # Haupt-Einstiegspunkt (MCP-Server)
├── config/
│   └── openfga/           # Autorisierungsmodell (model.fga), Tuples (tuples.json), Setup-Script
├── internal/
│   ├── mcp/               # MCP-Server (Streamable HTTP + STDIO)
│   ├── backend/           # ToolBackend-Interface + MCPAdapter + RESTAdapter
│   ├── executor/          # ExecuteTool-Pipeline (AuthZ → Creds → Gate → Exec → Audit)
│   ├── audit/             # Audit-Store-Interface + log/sqlite-Implementierungen
│   ├── authz/             # OpenFGA-Autorisierung
│   ├── credentials/       # Credential-Store-Interface + EmbeddedStore
│   ├── gate/              # Output Gate (goja Policy-Engine)
│   ├── userctx/           # UserContext-Propagierung
│   └── config/            # Umgebungsbasierte Konfiguration
├── config/                # Backend-Konfiguration (backends.yaml, users.yaml, apikeys.yaml)
├── tools/                 # TypeScript Tool-Definitionen (kanonische Quelle)
├── policies/              # JavaScript Gate-Policies
└── docs/                  # Dokumentation
```
