Skip to content

Configuration

import { Callout } from ‘@astrojs/starlight/components’;

FourEyes is configured via environment variables (copy .env.example to .env). Never commit real values — .env is gitignored.

VariableDefaultDescription
FOUREYES_GRPC_ADDR:8443Node mTLS gRPC (bidi stream); grpc-gateway reverse-proxies here.
FOUREYES_HTTP_ADDR:8444REST/gateway + embedded UI (HTTP).
VariableDefaultDescription
FOUREYES_STORAGE_MODEembeddedembedded (SQLite/DuckDB) or scale (Postgres+ClickHouse, roadmap).
FOUREYES_SQLITE_DSNfile:foureyes.db?cache=shared&...Relational SQLite DSN (WAL + foreign keys on).
FOUREYES_TS_BACKENDsqliteTime-series backend: sqlite (pure Go) or duckdb (CGO, -tags duckdb).
FOUREYES_SQLITE_TS_DSNfoureyes-ts.dbUsed when FOUREYES_TS_BACKEND=sqlite.
FOUREYES_DUCKDB_DSNfoureyes-ts.duckdbUsed when FOUREYES_TS_BACKEND=duckdb.
VariableDefaultDescription
FOUREYES_CA_CERT./dev/ca.pemCA certificate (PEM).
FOUREYES_SERVER_CERT./dev/server.pemServer certificate (PEM).
FOUREYES_SERVER_KEY./dev/server-key.pemServer private key (PEM).
VariableDefaultDescription
FOUREYES_ENROLL_TOKEN_TTL15mEnrollment token lifetime.
FOUREYES_AUTO_APPROVEfalseDev convenience: auto-approve pending nodes.
VariableDefaultDescription
FOUREYES_FLUSH_INTERVAL2sResult batch flush interval (1–5s).
VariableDefaultDescription
FOUREYES_LOG_LEVELinfoLogging verbosity.
VariableDefaultDescription
FOUREYES_OTEL_ENDPOINT(empty)OTLP/gRPC target (e.g. localhost:4317). Empty = disabled.
FOUREYES_OTEL_EXPORT_INTERVAL30sPeriodic push cadence.
FOUREYES_OTEL_INSECUREtruePlaintext gRPC (dev); set false for TLS.
FOUREYES_OTEL_HEADERS(empty)k=v,k=v auth/tenant headers.
VariableDefaultDescription
FOUREYES_NODE_TOKEN(empty)Enrollment token used by the node to register.
FOUREYES_BROWSER_BINARY(empty)Explicit Chromium path (else PATH, else download-on-demand).
FOUREYES_BROWSER_DISABLE_DOWNLOAD(empty)Set to fail closed instead of fetching Chromium.
FOUREYES_BROWSER_SHA256(empty)Optional checksum for the fetched Chromium.
Release signing is configured at **build** time, not runtime: the public key is pinned into a node build, and only artifacts signed by the matching private key are accepted. Downloaded release binaries ship without a pinned key, so node self-update is disabled by default. See [Node self-update](/guides/self-update/).