Identity-Aware Agent Messaging Platform — kryptografisch nachvollziehbare Kommunikation zwischen Menschen, KI-Agenten und SAP
Find a file
CTO (Paperclip) be3ac9cdb8
All checks were successful
validate / JSON Schema (ajv) (push) Successful in 20s
validate / Go (vet + test) (push) Successful in 19s
validate / Rego (opa fmt + opa test) (push) Successful in 13s
admin-api: Pocket-ID client_credentials TokenSource with OIDC discovery + cache (replaces StaticToken in prod)
* services/admin-api/internal/attest/pocket_id_token_source.go — attest.TokenSource impl: OIDC discovery via /.well-known/openid-configuration, HTTP Basic client_credentials grant, mutex-guarded in-memory token cache with configurable RefreshLeeway (default 30s = "verwirft bei exp-30s" from DEV-602).
* services/admin-api/internal/attest/pocket_id_token_source_test.go — 10 subtests against an httptest OIDC mock: happy path, cache hold, exp-30s refresh boundary, optional scope/audience, bad creds (401), missing config, discovery failures, non-positive expires_in, type-conformance.
* services/admin-api/cmd/admin-api/main.go — buildTokenSource(): -bearer flag wins (dev), else -oidc-issuer + POCKET_ID_CLIENT_ID + POCKET_ID_CLIENT_SECRET env → PocketIDTokenSource (prod); hard-fail at startup if issuer is set but credentials are missing. New flags -pocket-id-scope / -pocket-id-audience for the client_credentials request.
* services/admin-api/README.md — split inbound/outbound Pocket-ID auth, document the admin-api OIDC client registration (UI + API), new flags, env vars, prod bootstrap example.

36/36 go tests pass, go vet clean.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-25 18:04:00 +00:00
.forgejo/workflows ci: fix Go job — golang:1.23-trixie does not exist on Docker Hub, use golang:1.23-alpine3.21 (git 2.47+, sha256-capable) 2026-10-25 17:30:18 +00:00
db db: add ADR-0004 (golang-migrate), db/ layout, 0001_per_diem_rates migration (up+down) with EXCLUDE constraint and immutability trigger 2026-10-25 17:28:00 +00:00
docs attest+tlog: ADR-0005 Signing/TLog API contract, HTTP clients + orchestrator in admin-api (go vet clean, 11 new tests pass) 2026-10-25 17:51:33 +00:00
policies policies: add receipts + per_diem_rates data-source policies, per_diem transformation policy, extend expense.rego for v1.2.0 (54/54 tests pass) 2026-10-25 17:07:38 +00:00
schemas schemas: add ds/receipts v1.0.0, ds/per_diem v1.0.0, expense.canonical v1.2.0, sink.db.expense v1.2.0 (+ examples) 2026-10-25 17:07:20 +00:00
services admin-api: Pocket-ID client_credentials TokenSource with OIDC discovery + cache (replaces StaticToken in prod) 2026-10-25 18:04:00 +00:00
README.md ci+readme: add Go CI job (golang:1.23-trixie, vet + test for every services/**/go.mod); README reflects db/, admin-api, go-test commands 2026-10-25 17:28:32 +00:00

ProofedMesh

Identity-Aware Agent Messaging Platform — eine Plattform für kryptografisch nachvollziehbare Kommunikation zwischen Menschen, KI-Agenten und beliebigen Prozess-Senken (ERP, eigene Datenbankapplikationen, HTTP-Webhooks, Message-Queues, Dateiablage).

Vision

Benutzerfreigaben, delegierte Berechtigungen und sämtliche Verarbeitungsschritte zwischen Menschen, Agenten und Zielsystemen werden kryptografisch nachvollziehbar.

Der Benutzer autorisiert den ursprünglichen Geschäftsinhalt. Jeder Agent attestiert anschließend seine eigene Verarbeitung. Die empfangende Senke überprüft die vollständige Kette, bevor sie eine Aktion ausführt.

Identität, Berechtigung, Verarbeitung und Nachrichtentransport werden strikt getrennt. Der Trust-Core ist senken-agnostisch.

Status

Dieses Repository bildet die Basis für die Architekturentwicklung. Die Komponentenentwicklung hat noch nicht begonnen.

  • Aktive Architektur: docs/architecture/v1.1.md — V1.1 inkl. Senken-Generalisierung (SAP ist eine von vielen Senken), Pocket ID als alleiniger IdP, PII-Trennung, Trillian für Transparency Log, Content Binding mit WebAuthn, Replay-Schutz, Retention 1 Jahr
  • Historisch: docs/architecture/v1.0.md — ursprünglicher Entwurf, archiviert

Architekturprinzipien

  1. Unveränderliche Benutzerfreigabe — ein vertrauenswürdiger Dienst bestätigt den konkret autorisierten Geschäftsinhalt (per WebAuthn Content Binding).
  2. Eigene Identität jedes Agenten — jeder Agent besitzt eine separate kryptografische Identität.
  3. Verkettete Attestierungen — jeder Verarbeitungsschritt referenziert exakte Eingabe- und Ausgabe-Hashes.
  4. Unabhängige Autorisierung — eine Signatur allein erteilt keine Berechtigung; OPA kontrolliert erlaubte Transformationen und Senken-Aktionen.
  5. Transportneutralität — Nachweise funktionieren über HTTP, NATS oder Matrix, ohne dass die Vertrauenskette verloren geht.
  6. Senken-Neutralität — der Trust-Core kennt keine konkrete Senken-Semantik; Senken-Adapter sind Plug-ins mit festem Vertrag.

Zielkernstack (V1.1)

Bereich Technologie
Identität Pocket ID (Menschen und Agent-Clients)
Workload-ID Kubernetes projected ServiceAccount Token + TokenReview
Signaturen Ed25519 / DSSE, OpenBao Transit
Provenienz in-toto v1 (basicstack.de/attestations/*/*)
Autorisierung OPA + Approval Service
Transparency Trillian + PostgreSQL
Transport HTTPS/mTLS + NATS JetStream; Matrix optional für Mensch-Chat
Agenten Paperclip
Senken Plug-in-Architektur: SAP S/4HANA (ABAP), eigene DB-Apps (Go-Adapter), HTTP-Webhooks, Message-Queues, Dateiablage
Evidence PostgreSQL + S3 (Retention 1 Jahr)
PII Separater verschlüsselter S3-Bucket, redaktionierbar

Repository-Layout

docs/
  architecture/
    v1.0.md       # Ursprünglicher Entwurf (archiviert)
    v1.1.md       # Aktive Architektur
  adr/
    README.md     # ADR-Index
    0000-template.md
    0001-first-rollout-db-app-scope.md
    0002-session-scope-token-format.md
    0003-pii-retention-policy.md
    0004-db-migrations.md
db/
  README.md
  trust/migrations/0001_per_diem_rates.{up,down}.sql
schemas/
  README.md
  expense/canonical/{v1.0.0,v1.1.0,v1.2.0}.json
  ds/expense/project_assignment/v1.0.0.json
  ds/receipts/v1.0.0.json
  ds/per_diem/v1.0.0.json
  sink/db/expense/{v1.0.0,v1.1.0,v1.2.0}.json
policies/
  README.md
  transformations/{expense,per_diem}.rego (+ _test.rego)
  sinks/expense_db_app.rego (+ _test.rego)
  data_sources/{expense_db_app,receipts,per_diem_rates}.rego (+ _test.rego)
services/
  per-diem-calculator/   # deterministic calculator (Go)
  admin-api/             # admin surface for per-diem rate management (Go)
.forgejo/workflows/
  validate.yml    # JSON-Schema (ajv) + Rego (opa fmt + opa test) + Go (vet + test)

Weitere Verzeichnisse (weitere Services, Deployment-Manifeste, Senken-/Datenquellen-Adapter) folgen im Zuge der Architekturentwicklung.

Einstiegspunkte

  • Architektur V1.1 — Zielbild
  • ADRs — getroffene Entscheidungen
  • Schemas — kanonische Business-, Datenquellen- und Senken-Formate
  • Policies — OPA/Rego-Policies für Transformationen, Senken und Datenquellen

Lokal validieren

# JSON-Schemas
npx -y ajv-cli@5 compile --spec=draft2020 -c ajv-formats \
  -s schemas/expense/canonical/v1.0.0.json

# Rego
opa fmt --list --diff policies/
opa test policies/ -v

# Go services
(cd services/admin-api && go vet ./... && go test ./...)
(cd services/per-diem-calculator && go vet ./... && go test ./...)

CI (.forgejo/workflows/validate.yml) läuft dieselben Prüfungen auf jedem Push und PR gegen main.