Legal

Data governance.

How execution data is actually handled on the platform — the mechanisms, not the marketing. Last updated August 2026.

What we collect.

Executions

Execution records and events

When your SDK or REST client submits an execution, we store the execution record — model, provider, status, tokens, latency, cost, trace metadata — and every event submitted for it: tool calls, payloads and context.

Registration

Agent profiles

Agent registration captures name, type, description and an optional email. Every agent is scoped to one organization and one project.

Consent

Consent policies

For each agent we store a consent policy (consent_policies): whether anonymization is required (requires_anonymization), which use cases are allowed (allowed_use_cases), a privacy scope (default private) and a retention window (retention_days).

How data is protected.

Ingest redaction

Payload redaction at ingest

Every event payload passes through the redaction library (redactPayload / redactString in apps/api/src/lib/redact.ts). Field-level: keys like password, secret, token, authorization and similar are replaced with [redacted]. Pattern-level: emails, API keys, phone numbers, SSNs, credit cards, IPv4 addresses and private keys are stripped. Nesting beyond 8 levels is truncated, and payload length is capped at ingest (2,000 characters when anonymization is required, 10,000 otherwise).

Key hashing

API keys are hashed, never stored

Only the SHA-256 hash of an API key is stored (api_keys.key_hash), plus a short prefix for identification. The plaintext key exists once — at issuance. The same applies to external access credentials: a mag_ credential is shown once and only its hash is retained.

Isolation

Organization isolation

Every query is scoped by organization_id. No code path can read another tenant's executions, events, agents, projects or datasets — the scope is part of the SQL, not left to application discipline.

Anonymization

Anonymization policies

Organizations can define anonymization policies (anonymization_policies) listing fields to strip, with optional differential-privacy parameters (epsilon, delta) for release-time guarantees.

Who can access data.

Internal

Your organization only

Within the platform, only your organization's keys can read your executions and events — and each key is itself scoped to a project, with its own permissions and optional expiry.

External buyers

Access grants for data consumers

External data buyers authenticate with access grants (access_grants): read-only credentials bound to one organization and an explicit list of agent IDs. Every read is recorded in the access audit log (access_audit) for invoicing. Grants are revocable at any time.

Anonymized by default

Consent-aware delivery

The external read API (/v1/access/executions in access-executions.ts) checks each agent's requires_anonymization flag and redacts payloads, error strings, summaries and reasoning before anything leaves your tenant. If no policy exists, anonymization defaults to on.

Public

Public endpoints

The public API (/v1/public/*) exposes only aggregate stats and metadata — never raw payloads.

Retention & immutability.

Append-only

History is never overwritten

Events are append-only and immutable — there is no update or delete path for event records. Execution records transition through lifecycle status updates (started, completed, failed) but their history is never hard-deleted. A soft-delete flag (deleted_at) exists for dashboard and access filtering only; records are physically retained.

Datasets

Versioned, immutable datasets

Datasets are released as immutable versions (datasets + dataset_versions): each version records its record count, schema definition, storage path, checksum and a change summary. A released version can be cited, audited and reproduced — it cannot be silently altered.

Consent

Retention windows

Consent policies carry a retention_days setting per agent, and policy changes are themselves auditable. Contact requests are retained for 12 months.

Replay

Everything can be replayed

Because history is immutable and versioned, any execution, pipeline stage or dataset release can be replayed or reproduced exactly as it happened — a prerequisite for auditability.

Your control.

Consent

Per-agent consent, changeable

Consent policies are per agent: toggle requires_anonymization, restrict allowed_use_cases, or withdraw consent entirely. The platform checks consent against the use case at every point of downstream use. Withdrawal stops future use; already-released dataset versions remain immutable by design.

Keys

Keys and grants you can revoke

API keys can be deleted (soft-deleted, with expires_at support), and access grants can be revoked instantly — a revoked grant stops working on its next request.

Audit

Audit trails

Access reads are logged per grant, per request, with row counts and request metadata — so you can see exactly who read what from your tenant, and when.

Contact

Questions and requests

For access, correction or deletion requests about your data, write to khalidkhan46572@gmail.com. We answer.