Esc
↑↓ to move↵ to openEsc to close

DocsOperations

Self-hosting

Environments, dependencies, and what runs where.

Planned

Riffle is self-hosted: it runs in your infrastructure, and code, diffs and author identities never leave it. Outcome sharing is off by default.

Environments

EnvironmentWhereNotes
localDocker ComposeEmulated Pub/Sub, no GPU, stub explainer by default
stagingGKE, small poolA real GitHub App on a test organisation, real Pub/Sub, one shared GPU node
prodGKEOne shared GPU node for the explainer; per-tenant training is CPU only

What you run

LayerComponents
Servicesintake, scorer, explainer, app
StatePostgres, Redis
MessagingPub/Sub
TrainingAirflow, MLflow, Kubernetes Jobs
AutoscalingKEDA, driven by riffle_queue_depth

Data you keep

SettingDefaultWhat it controls
organization.outcome_sharing.enabledfalseWhether anonymised outcomes improve the global model
organization.data_retention.store_diffsfalseWhether full diffs are stored after features are computed
organization.data_retention.retention_days180How long stored data is kept

Credentials appear in configuration only as secret references, never as values.

Running without an LLM

The explainer is optional. With llm.provider: none, every explanation comes from the deterministic template, and ranking is unaffected — the LLM is never on the correctness path.