Settings¶
Every section of AppSettings, read from interloper.yaml and the environment (see Configuration).
runner¶
Runner settings: the runner type and its own configuration. Prefix INTERLOPER_RUNNER_.
| Field | Type | Default | Description |
|---|---|---|---|
type |
str |
'async' |
Registry key of the runner: async, serial, or one another package registers. |
config |
dict[str, Any] |
{} |
Keyword arguments for the runner class. |
otel¶
OpenTelemetry settings: OTLP traces and metrics. Prefix INTERLOPER_OTEL_.
| Field | Type | Default | Description |
|---|---|---|---|
enabled |
bool |
False |
The single master switch; the SDK is never activated from the standard OTEL_* variables alone. |
endpoint |
str |
'' |
OTLP endpoint; empty falls through to OTEL_EXPORTER_OTLP_ENDPOINT. |
protocol |
str |
'grpc' |
OTLP protocol: grpc or http/protobuf. |
headers |
str |
'' |
OTLP headers as key=value pairs; empty falls through to OTEL_EXPORTER_OTLP_HEADERS. |
service_name |
str |
'' |
Reported service name; empty reports interloper. |
traces |
bool |
True |
Export traces. |
metrics |
bool |
True |
Export metrics. |
sample_ratio |
float |
1.0 |
Fraction of traces sampled, parent-based. |
metric_export_interval |
int |
60 |
Seconds between metric exports. |
log¶
How the commands write their log records to stderr. Prefix INTERLOPER_LOG_.
| Field | Type | Default | Description |
|---|---|---|---|
format |
Literal['text', 'json'] |
'text' |
text for a terminal; json writes one object per line with the record's trace and span ids, for a log collector to parse. |
catalog¶
INTERLOPER_CATALOG, list[str]. Import paths of the enabled components; empty enables everything installed.
secrets¶
Secrets used to protect sensitive data at rest. Prefix INTERLOPER_.
| Field | Type | Default | Description |
|---|---|---|---|
encryption_key |
str |
'' |
Fernet key encrypting stored resource payloads; required by the platform to persist resources. |
postgres¶
PostgreSQL connection settings. Prefix INTERLOPER_POSTGRES_.
| Field | Type | Default | Description |
|---|---|---|---|
host |
str |
'localhost' |
Database host. |
port |
int |
5432 |
Database port. |
user |
str |
'' |
Database user. |
password |
str |
'' |
Database password. |
database |
str |
'interloper' |
Database name. |
statement_timeout |
float | None |
None |
Seconds after which the server cancels a statement of the process engine, sent as the libpq statement_timeout option; unset leaves the server's own setting untouched. |
auth¶
Authentication settings: Google OAuth and the session cookie. Prefix INTERLOPER_AUTH_.
| Field | Type | Default | Description |
|---|---|---|---|
google_client_id |
str |
'' |
Google OAuth web client id. |
google_client_secret |
str |
'' |
Google OAuth web client secret. |
google_redirect_uri |
str |
'' |
Redirect URI registered on the Google OAuth client (/api/auth/google/callback). |
cookie_secure |
bool |
True |
Send the session cookie over HTTPS only. |
session_expiry_days |
int |
30 |
Days a session stays valid. |
super_admin_emails |
list[str] |
[] |
Google emails promoted to platform-wide super-admin by interloper db init and on login; promotion only, removing an email never demotes. |
allowed_domains |
list[str] |
[] |
Email domains allowed to sign up; empty keeps signup open. Configured super-admins, pending invitations and existing profiles always pass. |
server¶
HTTP server settings: the API and the app. Prefix INTERLOPER_SERVER_.
| Field | Type | Default | Description |
|---|---|---|---|
enabled |
bool |
True |
Serve the API and the app. |
host |
str |
'0.0.0.0' |
Bind host. |
port |
int |
3000 |
Bind port. |
external_url |
str |
'' |
Public base URL of the app (https://app.example.com), for links built outside a browser request such as the setup hand-off an MCP tool returns; empty means the deployment has none. |
cron¶
Cron controller settings. Prefix INTERLOPER_CRON_.
| Field | Type | Default | Description |
|---|---|---|---|
enabled |
bool |
True |
Run the cron controller. |
reconcile_interval |
int |
10 |
Seconds between reconciliations. |
max_execution_delay |
int |
3600 |
Seconds a due job may still fire after its slot, so a scheduler restart doesn't drop it; at least the reconcile interval. |
batch_size |
int |
50 |
Due jobs dispatched per reconciliation. |
renewal¶
Renewal controller settings: connection credential renewal (singleton). Prefix INTERLOPER_RENEWAL_.
| Field | Type | Default | Description |
|---|---|---|---|
enabled |
bool |
True |
Run the renewal controller. |
reconcile_interval |
int |
60 |
Seconds between reconciliations. |
batch_size |
int |
50 |
Connections renewed per reconciliation. |
worker¶
Queue worker settings. Prefix INTERLOPER_WORKER_.
| Field | Type | Default | Description |
|---|---|---|---|
enabled |
bool |
True |
Run the queue worker. |
poll_interval |
int |
5 |
Seconds between queue polls. |
reaper¶
Run liveness: the heartbeat an executing run records, and the reaper that fails silent or overdue runs. Prefix INTERLOPER_REAPER_.
| Field | Type | Default | Description |
|---|---|---|---|
enabled |
bool |
True |
Run the reaper. |
poll_interval |
int |
15 |
Seconds between sweeps. |
startup_timeout |
int |
600 |
Seconds a dispatched run may take to start before the reaper fails it. |
heartbeat_interval |
int |
10 |
Seconds between an executing run's heartbeats. |
heartbeat_timeout |
int |
90 |
Seconds a running run may go without a heartbeat before the reaper fails it as lost; a run that cannot record one for half of it stops itself first. |
run_timeout |
int | None |
43200 |
Seconds a run may take when its job declares no timeout; unset lets those runs run without a deadline. |
launcher¶
Launcher settings: the launcher type and its own configuration. Prefix INTERLOPER_LAUNCHER_.
| Field | Type | Default | Description |
|---|---|---|---|
type |
str |
'in_process' |
Registry key of the launcher: in_process, docker or kubernetes. |
config |
dict[str, Any] |
{} |
Keyword arguments for the launcher class. |
smtp¶
SMTP settings for sending invitation emails. Prefix INTERLOPER_SMTP_.
| Field | Type | Default | Description |
|---|---|---|---|
host |
str |
'' |
SMTP host; sending is enabled once host, user and password are set. |
port |
int |
587 |
SMTP port. |
user |
str |
'' |
SMTP user. |
password |
str |
'' |
SMTP password. |
from_addr |
str |
'noreply@interloper.dev' |
Sender address of invitation emails. |
agent¶
AI agent settings: the chat assistant the API serves. Prefix INTERLOPER_AGENT_.
| Field | Type | Default | Description |
|---|---|---|---|
enabled |
bool |
True |
Serve the agent; off leaves the installation untouched. |
model |
str |
'google:gemini-2.5-flash' |
pydantic-ai provider:model name (google:gemini-2.5-flash, google-cloud:gemini-2.5-flash for Vertex, anthropic:claude-sonnet-4-5, openai:gpt-5); provider credentials come from the provider's standard environment variables. |
mcp¶
MCP server settings (interloper-mcp). Prefix INTERLOPER_MCP_.
| Field | Type | Default | Description |
|---|---|---|---|
host |
str |
'0.0.0.0' |
Bind host. |
port |
int |
3001 |
Bind port. |
external_url |
str |
'' |
Public base URL of the hosted server (https://mcp.example.com), fed to the OAuth protected-resource metadata so clients discover the auth requirements. |
token |
str |
'' |
Personal access token the stdio transport authenticates with. |
org_id |
str |
'' |
Organisation the stdio transport is scoped to without a token; local development only. |
quota¶
Default per-organisation quota limits; unset means unlimited. Prefix INTERLOPER_QUOTA_.
| Field | Type | Default | Description |
|---|---|---|---|
max_sources |
int | None |
None |
Sources an organisation may hold. |
max_assets_per_source |
int | None |
None |
Assets a source may enable. |
max_successful_runs_per_month |
int | None |
None |
Successful runs an organisation may complete per UTC month. |
max_backfill_partitions |
int | None |
None |
Partitions one backfill may span. |