On this page

Credential boundary

Skryba owns the credentials required to call detector APIs and RentAHuman. It does not hold direct model-provider keys: generation and quality judging go through Brama using a Brama client token.

Three credential domains

Domain Variables Used by
Detectors GPTZERO_API_KEY, WINSTON_API_KEY, ORIGINALITY_API_KEY, SAPLING_API_KEY score, rewrite, train
Brama BRAMA_TOKEN; optional paired SKRYBA_AGENT_ID and SKRYBA_AGENT_AUTH_SECRET rewrite, train, benchmark
RentAHuman RENTAHUMAN_API_KEY rentahuman create/get

score does not need Brama. benchmark does not call detectors. RentAHuman commands call neither Brama nor detectors.

Detector selection

Without --detectors, Skryba includes every detector whose key exists and is non-empty. With --detectors, the list is trimmed and lowercased, and each named provider's key must exist. This means environment changes can change the ensemble; pin names when scores must be comparable.

Exact refusals:

  • no detector credentials found; configure GPTZERO_API_KEY, WINSTON_API_KEY, ORIGINALITY_API_KEY, or SAPLING_API_KEY
  • <KEY_VARIABLE> is required for <detector>
  • unknown detector "<name>"; available detectors: gptzero, originality, sapling, winston

Brama authentication

BRAMA_TOKEN is sent as a bearer token. The optional agent identity is all-or-nothing:

SKRYBA_AGENT_ID and SKRYBA_AGENT_AUTH_SECRET must be configured together

When both are present, src/brama.rs derives request authentication from the pair in addition to the bearer client token. Skryba never asks for Anthropic, OpenAI, or other model-provider keys.

RentAHuman authentication

The API key is sent in X-API-Key. A key containing control characters is refused with RENTAHUMAN_API_KEY contains invalid characters. Humanization ids are restricted to ASCII alphanumerics, _, and -, so caller input cannot rewrite the request path.

Desktop boundary

Skryba Desktop inherits its launch environment, then fills only missing variables from ~/.config/skryba/env. Existing environment values always win. The app passes that merged environment to one installed skryba process and does not parse, store, or transform credentials itself.

Maintained as part of the website-owned Skryba documentation corpus.