Skip to content

Audit & compliance

Linkworld is EU-sovereign by default and built for compliance that European businesses actually have to satisfy: DSGVO (GDPR), the EU AI Act, sector-specific rules. This page covers the audit log (the runtime trail) and the broader compliance posture.

Every skill / tool call your tenant runs lands in linkworld_skill_audit_log. The platform writes the audit entry in-process via a buffered audit bus — no calls escape unaudited.

Per entry:

FieldNotes
tenant_idAlways set
user_id / agent_idWhoever initiated the call
conversation_id, goal_id, project_idWhen applicable
skill_name, tool_nameWhat was called
tool_input (JSONB)The args (sensitive fields redacted before insert)
statussuccess / error / blocked / timeout
result_summary (≤ 5000 chars)First chunk of result for quick display
result_data (JSONB)Full structured result if < 50 KB
error_messageWhen status ≠ success
duration_msWall-clock timing
risk_level, action_typeFrom the security gate’s classification
gate_decisionWhat the gate decided (“allow”, “deny:no_scope”, …)
created_atUTC timestamp

Apps invoking platform tools also get an attribution: their skill_name is "app:<slug>" so you can filter the audit by app in the UI.

In Workspace Control → Audit:

  • Newest first, paginated 100 / page (Load older for deeper history)
  • Status pills: All / Success / Errors / Blocked / Timeout
  • Free-text filters: tool name, app id
  • Per row: status badge, app badge, skill·tool, risk + gate decision, duration, metadata (user / agent / conversation), error or result snippet

Use it for:

  • Triage: failing heartbeat? Filter by tool + status=error to see exactly what went wrong.
  • Compliance: “show me every email this tenant sent last week” → filter by tool=graph_email_send.
  • Forensics: “Who told the marketing app to spend the budget?” → filter by app + look at user_id + agent_id.

Three pillars:

The platform deploys to EU regions by default. Your tenant’s data (records, agent memory, audit log, file uploads) lives in EU infrastructure. Cross-region replication is opt-in.

For DSGVO Art. 15 (access) / 17 (erasure) / 20 (portability), the platform provides:

  • Export: tenant admins can export all data attributable to a user (records, audit entries, agent memory mentions). Format: JSON-Lines.
  • Erasure: deleting a user account triggers cascade deletion of records + audit entries scoped to that user. Audit log entries for tenant operations done by that user are retained but pseudonymized (the user_id is replaced with a hash).
  • Portability: same export format is consumable by any system that wants to ingest it.

The platform’s audit log gives you the runtime trail. The Wires & Grants UI gives you the static trail (what apps may do at all). Together: you can answer “what is processed, by whom, under what authority” for any user / time range.

The Act classifies AI systems by risk; Linkworld’s posture per category:

Linkworld uses third-party LLMs (Anthropic Claude, OpenAI GPT, Google Gemini, Mistral) as general-purpose AI. The platform itself is the deployer — the legal obligations fall on you (the tenant) and the LLM provider.

The platform helps you meet deployer obligations:

  • Model logging (Art. 13): every LLM call is logged with the model used, tokens, duration, and the agent / user context.
  • Output marking (Art. 50): apps that publish LLM-generated content can call ctx.tools.call('mark_ai_output', …) to add the AI-generated marker (per-tenant configurable).
  • Human oversight (Art. 14): the approval queue (/governance) is the explicit human-in-the-loop surface for any tool call the security gate or app classifies as needing approval.

If your specific use of Linkworld puts you in a high-risk category (employment decisions, financial scoring, biometrics, critical infrastructure), the tenant remains responsible for:

  • Risk management documentation (the platform’s audit log helps but doesn’t replace your own register)
  • Data quality + bias monitoring of the data you feed in
  • Conformity assessment

The platform doesn’t make you compliant for high-risk uses; it gives you the logging + control infrastructure to be compliant. Treat the platform as plumbing, not as a compliance product.

Approvals (the /governance UI) is the main human-oversight surface. Tools / agents that produce drafts requiring sign-off (content drafts, sends, payments, …) create an approval row; tenant admins approve or reject.

Approval decisions are themselves audited. If you ever need to prove “a human approved this email send”, the approval log carries the user, timestamp, and the IP / session that approved.

Approvals time out by default (5 minutes for routine, configurable); expired approvals leave an audit record showing the timeout.

  • Secrets vault (linkworld_secrets): AES-256 at rest, per-tenant key derivation. Apps fetch secrets via ctx.secrets.get(KEY) which audits each read.
  • TLS everywhere: platform → app container, browser → platform, platform → LLM provider — all TLS.
  • Cookie scoping: tenant session cookies are scoped to app.linkworld.ai; the apps-CDN bundles cannot read them cross-origin (CORS allow-list).

Default retention windows (tenant-configurable up to legal limits):

Data typeDefault retention
Audit log365 days
Approval log365 days
Agent memoryIndefinite (until tenant deletes)
Conversation historyIndefinite (until tenant deletes)
Tenant recordsIndefinite
Failed-job logs30 days

Beyond default windows, archived data lives in cold storage (separate region; encrypted; access requires admin role).

The platform’s /health/detailed endpoint exposes (to authenticated admins):

  • Database / Redis / scheduler / worker / compute / skills_framework status
  • Per-component response times
  • Active background tasks

If the platform itself has a degraded component, admins see it before users.

  • Workspace Control for the Audit screen in the UI
  • Wires & grants for the static authorization layer
  • The platform’s source-of-truth for runtime classification is the Scope catalog — every tool’s risk level
    • action type lives there