Betrieb und Deployment von temis — der Go-basierten DMN 1.5 Decision Engine mit FEEL-Support. Build from source, Deploy via Ansible, Model-Management, MCP-Nutzung.
Resources
18Install
npx skillscat add pblumer/temis Install via the SkillsCat registry.
temis DMN Engine — Operations Skill
Quick Reference
| Ressource | URL |
|---|---|
| Repo | https://github.com/pblumer/temis.git |
| Prod HTTP API | https://temis.blumer.cloud |
| Prod MCP | https://temis-mcp.blumer.cloud/mcp |
| Deploy aus | cloud.blumer.home Ansible |
Was ist temis?
- DMN 1.5 Decision Engine in Go
- FEEL (Friendly Enough Expression Language) vollständig unterstützt
- Nutzbar als Library oder HTTP/gRPC Service
- Seit PR #54: MCP-Endpunkt ist in temisd co-located
- Models werden als
.dmn-Dateien persistiert (SHA256-gehasht)
Auth
| Layer | Mechanismus |
|---|---|
| HTTP API | Optional BasicAuth (htpasswd) + Bearer Token |
| MCP | Kein separater Auth; API-Token auf /v1 |
| Clio Audit | kid.secret-Format via vault_temis_clio_token |
Build (Source)
Die Ansible-Rolle baut automatisch aus dem Git-Repo:
cd /path/to/temis
go build ./cmd/temisdDeploy (Ansible)
Aus cloud.blumer.home Repo:
ansible-playbook -i inventory.yaml ansible/playbooks/vps.yml \
--limit server01 --tags temis --diff --ask-vault-passConfig in host_vars/server01.yml:
temis_enabled: true
temis_domain: "temis.blumer.cloud"
temis_network: "server01_edge"Bekannter Bug: Docker Compose V1 auf server01 →KeyError: 'ContainerConfig' beim Recreate. Empfohlene Lösung:
Docker Compose V2 installieren + temis_compose_cmd: "docker compose".
Endpoints
# Health
curl -s https://temis.blumer.cloud/healthz # 200
curl -s https://temis.blumer.cloud/readyz # 200
# Docs UI
curl -s https://temis.blumer.cloud/docs # 200
# MCP (JSON-RPC 2.0)
curl -s -X POST https://temis-mcp.blumer.cloud/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'Model Management
Models werden im Container nach /data geschrieben
(bind-mount /opt/temis/data). Persistente Dateien:
/opt/temis/data/
<sha256>.dmn # Persistiertes DMN-ModelUpload über HTTP API (siehe /docs).
MCP Nutzung (bevorzugt via mcp-bridge)
Das Tool mcp-bridge abstrahiert JSON-RPC 2.0 in einfache CLI-Befehle.
Config liegt unter ~/.mcp-servers.json.
# Tools listen
mcp-bridge list temis
# Tool ausführen
mcp-bridge exec temis evaluate '{"model": "<sha256>", "variables": {"input": 42}}'
mcp-bridge exec temis info '{}'
# Raw JSON-RPC call
mcp-bridge call temis tools/list
mcp-bridge call temis tools/call '{"name": "evaluate", "arguments": {"model": "<sha256>"}}'MCP Nutzung (direkt / Fallback)
Falls mcp-bridge nicht verfügbar ist, direkt via curl:
# Tools listen
curl -s -X POST https://temis-mcp.blumer.cloud/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
# Tool aufrufen
curl -s -X POST https://temis-mcp.blumer.cloud/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "evaluate",
"arguments": {"model": "<sha256>", "variables": {"input": 42}}
}
}'Clio Audit-Sink (WP-54)
Entscheidungen können als Events nach Clio gestreamt werden:
# vault_temis_clio_token: "kid.secret"
temis_clio_url: "http://clio:7374" # internes Docker-NetzWichtig: http://clio:7374 (nicht https://clio.blumer.cloud),
da Hairpin-NAT sonst blockiert.
Troubleshooting
| Problem | Lösung |
|---|---|
ContainerConfig beim Deploy |
docker-compose V1 Bug → V2 installieren |
| Model nicht gefunden | SHA256 prüfen; /data bind-mount OK? |
| MCP 404 | temis_mcp_enabled: true prüfen |
| Audit-Events fehlen | temis_clio_url auf internes Netz setzen |