Soft launch Dialecto is still in testing, and details on this site may change as we finish it.

Self-hosting

Dialecto self-hosts on a deliberately boring stack: an Elixir/Phoenix release, PostgreSQL, and — if you want machine-translation features — a local Ollama instance. Everything lives in Postgres: scans, catalogs, voice sources, all of it. There is no object-storage dependency, no Redis, no message broker.

The stack

  • Elixir 1.20 / Erlang OTP 28 (what we build and test against)
  • PostgreSQL — any current version
  • Ollama (optional) — for machine-translation suggestions, voice distillation, and local quality evaluation; default model gemma3:27b
  • pdftotext (poppler, optional) — only needed if users upload PDFs as brand-voice sources

Environment variables

Required:

VariablePurpose
DATABASE_URLPostgres connection (ecto://user:pass@host/db)
SECRET_KEY_BASEPhoenix secret — generate with mix phx.gen.secret

Strongly recommended:

VariablePurpose
ENCRYPTION_KEYat-rest encryption for GitHub tokens & scan credentials. Optional — it falls back to SECRET_KEY_BASE — but set it: a separate key means rotating one doesn’t burn the other
PHX_HOSTyour public hostname
PHX_SERVERset to start the web server in a release
PORTHTTP port

Operational:

VariablePurpose
POOL_SIZEDB pool (default 10)
ECTO_IPV6set if your DB resolves over IPv6
MAILER_SENDER_EMAIL / MAILER_SENDER_NAMEthe From: on notification email

GitHub App (all optional — without them the App integration is simply inert and repos connect via personal access tokens):

GITHUB_APP_ID, GITHUB_APP_SLUG, GITHUB_APP_PRIVATE_KEY (the PEM contents), GITHUB_APP_CLIENT_ID, GITHUB_APP_CLIENT_SECRET, GITHUB_APP_WEBHOOK_SECRET. You register your own (private) GitHub App for your deployment — the permission set is in GitHub App.

Quality evaluation, bring-your-own endpoint (optional, deployment-wide):

VariablePurpose
QUALITY_EVAL_OPENAI_KEYpresence switches the quality evaluator to an OpenAI-compatible API
QUALITY_EVAL_OPENAI_BASE_URLany OpenAI-compatible endpoint (default api.openai.com/v1)
QUALITY_EVAL_MODELmodel name

The local-model posture

By default every AI feature points at a local Ollama on the app host (localhost:11434): suggestions, voice distillation, and quality evaluation. Nothing leaves the machine unless you explicitly configure the OpenAI-compatible evaluator above — that switch is yours, made once, at deployment level. The Ollama host and model currently live in application config rather than env vars; changing them means adjusting the release config (an env-var override is on the list).

Email

The release ships with Swoosh’s local adapter (a dev mailbox — fine for trying things, silent in production). To actually deliver notification email, configure a Swoosh production adapter (SMTP or an API-based provider) in your release config.

Sovereignty notes

Self-hosting is the strongest form of the sovereignty story: your slice of data, your jurisdiction, your keys, and a model that runs on your own hardware. The EU-hosted product is built on the same stack, with the same local-model default, and it runs on EU infrastructure under EU jurisdiction. The hosted deployment is still being set up, so its exact model configuration is not documented here; self-hosting moves that choice, and the trust boundary, all the way to you.