Skip to main content

Required

Authentication

SMTP

Required when AUTH_MODE is otp or password+otp. Skip entirely for password mode (airgapped deployments).

Application

Rate Limiting

Function Execution

Optional Features

Both default on. Turning one off removes the capability — affected endpoints reject explicitly rather than half-working.

Usage Metering (Optional)

Default off. When enabled, every operation (function execution, code execution, query, agent invocation, file upload, other tool calls) increments a live counter; the scheduler snapshots it durably and pushes the cumulative period-to-date total to an external collector. Pure emission — nothing is enforced on the instance, no limits are pulled down, and an unreachable collector or Redis blip never affects platform behavior (the next heartbeat self-heals). Intended for managed/multi-instance operators. Meter integrity: sandbox and shared executor containers/pods receive no Redis/database credentials, so code they run cannot alter the count. TRUSTED_EXECUTOR=inprocess breaks that guarantee (client code runs inside a credential-bearing process) — enabling metering in that mode logs a warning. Metered instances should use docker_shared (Docker) or k8s_shared (Kubernetes), or disabled if shared-pool functions aren’t needed.

Executors

How Sinas runs user code. SANDBOX_EXECUTOR handles untrusted code (untrusted functions and agent code execution) and must isolate every execution; TRUSTED_EXECUTOR handles admin-approved functions (shared_pool=true). On Kubernetes, SANDBOX_EXECUTOR=k8s_pod with TRUSTED_EXECUTOR=k8s_shared is the Helm chart’s default: no process needs a Docker socket, and trusted code runs in warm pods that carry no platform credentials (dispatch latency is an exec round-trip, not a pod cold-start). inprocess remains the smallest-footprint option, but it runs trusted code with the worker’s own environment and credentials — only enable shared_pool on functions you’d trust with them, and don’t combine it with usage metering.

Kubernetes executor (SANDBOX_EXECUTOR=k8s_pod)

Requires running in-cluster with a ServiceAccount that can create/get/ list/delete pods and use pods/exec in the sandbox namespace (the Helm chart provisions this).

Sandbox Containers

Used by SANDBOX_EXECUTOR=docker_pool (the warm pool).

Agent Processing

Tool Results

Scaling

Resource Limits (Docker)

Database

ClickHouse (Optional)

Declarative Config

The simplest useful setup requires the required variables plus a configured LLM provider. Everything else (functions, skills, state, etc.) is optional and can be added incrementally.