Skip to content

aivi.secret ​

Types for desktop secret storage backed by Secret Service / libsecret.

This module is shared vocabulary for @source secret.

Import ​

aivi
use aivi.secret (
    SecretSource
    SecretError
    SecretTask
    SecretUnavailable
    SecretLocked
    SecretCancelled
    SecretProtocolError
)

Overview ​

TypePurpose
SecretSourceHandle annotation for @source secret
SecretErrorStructured desktop keyring failures
SecretTask ABackground secret-storage work returning A

Capability handle ​

aivi
use aivi.secret (
    SecretSource
    SecretTask
)

@source secret "io.mailfox"
signal secrets : SecretSource

value savedToken : SecretTask (Option Text) =
    secrets.lookup (
        Map {
            "account": "primary",
            "kind": "refresh-token"
        }
    )

Current canonical handle members:

MemberTypeDescription
secrets.lookup attrsSecretTask (Option Text)Look up one text secret in default desktop keyring collection
secrets.store label attrs valueSecretTask UnitStore or replace one text secret in default desktop keyring collection
secrets.delete attrsSecretTask BoolDelete matching scoped secrets and report whether anything was removed

The handle root argument scopes every operation. @source secret "io.mailfox" automatically adds an internal service attribute so different apps can share user keyring safely without collisions.

Error constructors and task alias ​

SecretUnavailable name, SecretLocked, SecretCancelled, and SecretProtocolError message construct SecretError values. SecretTask A is Task SecretError A.

(c) 2026 by Andreas Herd