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.