Overview
Observability on sovseal respects the zero-trust data boundary. The Edge servers measure request flows and resource allocations solely at Layer A (unencrypted metadata). This design allows you to monitor sync operations and storage sizes without compromising cryptographic confidentiality.
Per-Project Metrics
The sovseal Dashboard visualizes operational health metrics:
- Replication Lag: Time delta between local client commit and remote Edge receipt.
- Ciphertext Bytes Stored: Total volume of encrypted payloads residing in the storage bucket.
- Operation Counts: Total number of
store_memory (write), recall_memory (read), and check_in requests.
- Sync Devices: Number of concurrent devices actively replication-synced.
All metrics are compiled from metadata tables (usage_counters) and never traverse decryption blocks.
Webhooks
Wired to real-time events, sovseal webhooks trigger callbacks in your backend when memories are updated.
Zero-Knowledge Webhook Security InvariantWebhook payloads carry only metadata and client-side payload hashes. Plaintext memory values are never transmitted in webhook bodies to prevent leakage to external servers.
Supported Events
key.revoked: Triggered when an API key is revoked.
memory.write: Triggered when a new encrypted snapshot is replication-synced.
quota.hit: Triggered when a plan quota limit is reached.
retention.purged: Triggered when retention policy purges expired records.
sync.completed: Triggered when a replication sync cycle finishes.
Tamper-Evident Audit Log
Every privileged team action — granting or revoking key access, rotating a DEK, adding or removing a member, writing shared memory — is appended to a per-team, append-only ledger. Each entry commits to the one before it with a SHA-256 hash chain:
The first entry’s prev_hash is 64 zeros (genesis); every subsequent entry’s prev_hash is the previous entry’s entry_hash. Because each link commits to all prior history, any retroactive edit, deletion, or reorder breaks the chain — and verification reports the exact sequence number where it broke. UPDATE and DELETE on the ledger are rejected at the database level.
Zero-knowledge boundary
Audit entries carry only non-secret descriptors — member ids, roles, sequence/epoch numbers, byte sizes, and rotation reasons. They never contain a cleartext or wrapped DEK, a private key, or any plaintext/ciphertext memory.
Verify & export from the dashboard
The Audit Log page lets administrators view the ledger (filtered by actor, action, or date), run a one-click Verify Chain Integrity check that returns valid or the exact broken_seq and reason, and Export the trail as JSON (with embedded verification) or CSV.
Telemetry Opt-In
Dashboard telemetry is off by default, not on — there is no SDK-level environment variable for this. To enable it, toggle telemetry_opt_in on the project’s Settings page (PUT /settings). Once enabled, the platform accepts only a strict whitelist of aggregate numeric counters (memory count, device count, bytes stored, sync ops) — no payload contents, keys, or user identifiers, and any non-whitelisted field is rejected outright. See Project Settings for the toggle and Settings Persistence for the API.