Configuration

Configure Nistor through each process's environment and through the API, and use the nistor CLI.

Nistor is configured in two places: the environment of each process (where it runs, which database, secrets) and the API (what it observes: connections, rules, alerts, contracts). Prefer the second for anything that is data.

Environment variables#

Operator-facing variables are prefixed NISTOR_. The database uses the standard POSTGRES_ names.

Variable Meaning
POSTGRES_SERVER, POSTGRES_PORT, POSTGRES_DB, POSTGRES_USER, POSTGRES_PASSWORD the PostgreSQL database every role shares
ENVIRONMENT local, dev, test or prod; dev, test and prod enforce OIDC authentication, test and prod also trusted hosts, prod hides the API docs; local relaxes these
NISTOR_INSTANCE the deployment's name, the suffix of its resource names (nistor-backend-<instance>, its Cloud Scheduler jobs and buckets, mstr-password-<instance>); Terraform sets it on every role from the composition's instance. Unset, it is ENVIRONMENT, which stays the tier
PORT the port a role listens on (default 8080)
NISTOR_ROLE read by the backend only: web (default) or jobs
NISTOR_API_URL, NISTOR_API_TOKEN the CLI's backend URL and bearer token (also --api-url, --token)
NISTOR_BACKEND_URL the backend's URL
NISTOR_URL the public URL of Nistor, used in notification links and OIDC redirects
SCHEDULER_URL, COMPILER_URL, INPUT_LOGS_URL, FRONTEND_URL, NISTOR_JOBS_URL where roles find each other (the first four have no prefix)
NISTOR_CONN_SECRET__<id> the secret a connection references as env://<id>; the alternative is a cloud secret manager
NISTOR_TOOL_LIMIT_<KEY> slots per process for a tool capacity key, gcp.bigquery becomes NISTOR_TOOL_LIMIT_GCP_BIGQUERY; 0 is unbounded
NISTOR_TOOL_ACQUIRE_TIMEOUT_SECONDS, NISTOR_TOOL_CAPACITY_HEARTBEAT how long a task waits for a slot; the capacity heartbeat
NISTOR_PLUGIN_VALIDATION warn (default) or strict: an executor plugin failing validation stops startup instead of only being logged
NISTOR_RATE_OVERRIDES JSON list of price overrides for cost estimates; a malformed value is ignored
NISTOR_GRAPH_SWAP_ENABLED build the graph aside and swap it in (default on)
WEBHOOK_REQUIRE_TIMESTAMP backend: true makes the signed X-Webhook-Timestamp mandatory for generic webhook endpoints (default off; see webhooks)
NISTOR_MASTER_GRAPH_PRELOAD opt in to loading the graph in the server's master process
NISTOR_ALLOW_LIVE_MIGRATION set to 1 to confirm a migration against a deployed database (a safety guard otherwise refuses)
NISTOR_MCP_BASE_URL, NISTOR_MCP_TOKEN the MCP server's backend URL and bearer token
NISTOR_DISPLAY_TIME_ZONE read by the web container at start: the time zone the UI shows times in and its date pickers speak, any IANA name (Europe/Paris, America/New_York); UTC when unset or not a zone name. A web build can set a default with REACT_APP_DISPLAY_TIME_ZONE. On GCP the reference root's frontend_display_time_zone (the frontend module's display_time_zone) sets it

Never put a secret in a file you commit. Use a secret manager, or the NISTOR_CONN_SECRET__ form for local use.

The CLI#

nistor talks to the backend. Give it --api-url and --token, or the variables above.

Command Does
nistor serve run a server role
nistor migrate apply the database migrations
nistor auth test check connectivity and credentials
nistor rules sync, list, validate manage scheduling rules kept as files
nistor alerts sync, list alert channels and policies
nistor odcs sync data contracts kept as *.odcs.yaml
nistor patterns sync, list resource patterns
nistor env-mapping sync, show environment mappings
nistor compiler sync, show compiler configuration
nistor admin ... users, permissions and the audit log
nistor tool new <id> scaffold a tool, see Writing a tool
nistor release ... release tooling for maintainers

Run nistor <command> --help for the options. CLI explains how to install it and is its reference.

Connections and tools#

Each tool you use needs a connection: its configuration and a reference to its secrets. Create connections through the web shell or the API, then test them; the test runs the tool's health probe.

Edit this page on GitLab

↑ ↓ to moveEnter to openEsc to close