.env file created
from .env.example.
What this server has configured
apowerb starts with almost nothing configured and says so rather than failing. A feature nobody has set up answers « not configured yet, contact your administrator » — never a 4xx or a 5xx. The server is the source of truth about its own state:missing holds variable names, never values, and the server sends it to
administrators only. Everyone else sees which features work — enough to know
it is not their mistake, and nothing that helps an attacker.Required
Five settings, and the server refuses to boot without them — the list isRUNTIME_REQUIRED_FIELDS in configs/settings.py, which the boot check reads.
On the Quickstart path, none of these are yours to fill in: the
Compose stack runs its own Postgres and
generate-secrets.sh writes the key.
This page is for an installation that brings its own database.DB_PORT (5432) and DB_SCHEMA (public).
.env.example may still carry TEST_TOKEN. It is not required: the only code
that reads it is a middleware mounted nowhere. Setting it changes nothing, leaving it
out breaks nothing.Earlier versions did refuse to start without it, which meant inventing a “test token”
to run in production. That requirement is gone.Security and JWT
API schema
FastAPI serves these three routes to anyone by default, with the full inventory of
paths, parameters and response shapes — no credentials required, since Swagger UI
cannot send a bearer token on its first load. apowerb removes them instead of guarding
them, unless this flag is set.
CORS
OAuth — workspace integrations
These OAuth applications carry the scopes agents need to read Drive, send mail, or list Teams chats. They authorise an agent to act on a service — they are not how a user signs in.Signing in with an identity provider — GitHub, Google, Microsoft, LinkedIn — is
part of a commercial edition and is absent here. The open-source build authenticates
with email and password. See Editions.
Gmail Pub/Sub webhooks
See Gmail webhooks for the full setup.
RAG and webhooks
Notifications
All four default to empty, and the mailer is simply off until they are set — one log
line, no error, no email. There is no hardcoded fallback address: an installation
that leaves these unset sends nothing, rather than mailing a third party by default.
Storage (optional)
Orchestrator
With
ORCHESTRATOR=mage (the default), the server talks to Mage AI:
With
ORCHESTRATOR=th2etl, it talks to th2etl instead:
Both clients expose the same surface, so only these settings change. See
Orchestrator.
Default LLM provider
Agents with no model of their own fall back to this provider.Sign-up and sign-in
Database, beyond the required settings
Runtime directories
Where the server writes on disk. S3 keys keep their own namespace and are unaffected.Organisations
Development-only switches
Declared here, used by bricks
The core declares these so a brick can read them. In a core-only install they are inert: setting them changes nothing, and the matching routes still answer404.
These are the sign-in credentials, not the workspace ones. Connecting Google Drive or
Outlook for an agent uses the
*_INTEGRATION_* variables above, which are part of this
edition.Extensions
Empty means no extension: the core runs on its own. See Editions.
