Skip to content

Engine CLI reference

Run sasy serve [OPTIONS] to start the engine. This table covers all 41 configurable long options plus help, checked against the current full engine’s sasy serve --help. --policy is an alias of --policy-metadata; do not pass them as separate logic and metadata settings. A flag does not enable a backend omitted from your build. The restricted guard engine serves only its baked profiles.

See configuration for startup examples, authentication for identities and TLS, environment for process variables, and building for backend/toolchain requirements. CLI values override the corresponding environment variables.

Flag Default Purpose
--policy-metadata <FILE> (alias --policy) unset One source-file option with two spellings. Soufflé backends compile/read this source and its annotations. With --policy-plugin, it supplies annotation metadata for that plugin instead. Restricted builds still serve only baked profiles.
--policy-plugin <FILE> unset Trusted precompiled policy plugin (.so/.dylib); takes precedence over --evaluator in the full build and runs in the engine process.
--evaluator <BACKEND> souffle souffle, souffle-interpreted, experimental external flowlog, or development stub. The stub backend allows actions; do not use it for enforcement.
--flowlog-bin <FILE> unset Path to the external FlowLog evaluator IPC wrapper when selecting that backend.
--souffle-program <NAME> policy_program Soufflé relation/program name answered by the evaluator.
--souffle-interpreted-bin <FILE> souffle-interpreted Interpreted evaluator shim executable; required when selecting that backend.
--souffle-policy <FILE> unset Policy .dl input for interpreted mode.
--souffle-functor-lib <FILE> unset Explicit functor shared library for interpreted evaluation; otherwise the backend can compile its adapter library using the configured toolchain.
--auth-provider <FILE> unset Authentication-provider JSON. Missing authentication refuses startup unless SASY_ALLOW_NO_AUTH=1 explicitly enables local development without authentication.
--auth-config <FILE> unset YAML mapping authenticated entities to roles and tenants.
--transforms <FILE> unset JSON request-transform and credential-injection rules.
--addr <HOST:PORT> 127.0.0.1:50051 gRPC listen address.
--proxy-port <PORT> 0 Separate raw HTTP proxy port; 0 disables it.
--proxy-bind <ADDRESS> 127.0.0.1 Raw proxy bind address. This listener does not authenticate callers; restrict network access.
--proxy-tenant <TENANT> default Single tenant pinned to the raw proxy listener; this does not authenticate a caller.
--trust-proxy-headers off Accept delegated x-entity/x-roles from authenticated callers without requiring their service-proxy role. Enable only behind a protected trusted proxy.
--tls-cert <FILE> unset PEM server certificate; together with --tls-key, enables TLS.
--tls-key <FILE> unset PEM server private key; pair with --tls-cert.
--tls-ca <FILE> unset CA for verifying client certificates (mTLS). Configure the authentication provider to map those certificates to identities.
--data-dir <DIR> data/graph Graph and engine state directory, resolved relative to the startup working directory.
--credential-backend <BACKEND> sqlite sqlite, memory, or openbao. Memory seeds credentials from the environment and shares them across tenants.
--credentials-db <FILE> <data-dir>/credentials.db SQLite credential database; other backends do not use this file.
--credentials-env-file <FILE> unset Additional memory-backend credentials; file values override the environment. Other backends warn and ignore this option.
--openbao-addr <URL> unset Required OpenBao URL for the openbao backend; HTTPS unless loopback.
--openbao-mount <NAME> secret OpenBao KV v2 mount.
--openbao-path-prefix <PATH> sasy Lookup prefix; credential paths append tenant/entity/service.
--openbao-namespace <NAME> unset OpenBao namespace header.
--openbao-token-file <FILE> unset Token file; use this or the AppRole pair, not both.
--openbao-approle-role-id <ID> unset AppRole role identifier; pair with the secret-ID file.
--openbao-approle-secret-id-file <FILE> unset AppRole secret-ID file.
--openbao-ca-cert <FILE> unset PEM CA for a private OpenBao server certificate.
--openbao-cache-ttl-secs <N> 60 Credential read-cache TTL in seconds.
--openbao-timeout-secs <N> 5 OpenBao request timeout in seconds.
--query-timeout-secs <N> 10 Fail-closed answer deadline in seconds; must be positive. The evaluator may finish in-flight work after a refused request.
--evaluator-stall-secs <N> 60 Kill/restart threshold for an evaluator owing a reply; must be at least the query deadline.
--oracle-redaction <on|off> on Scrub recognized secret shapes in oracle question/context strings. Does not redact stored graph data or the agent’s own model requests.
--neo4j-uri <URI> unset Enable the optional background graph mirror at this Neo4j URI.
--neo4j-username <NAME> neo4j Neo4j mirror username.
--neo4j-password <VALUE> observability Neo4j mirror password; replace the development default when using a shared server. Command-line values can appear in process listings.
--neo4j-database <NAME> neo4j Neo4j mirror database.
--allow-user-functors[=<VALUE>] off Non-admin native functor admission: bare flag or sandboxed requires working confinement; unsandboxed explicitly permits unconfined development execution. Admin functors remain native code.
--help Print help; -h prints a shorter summary.

The raw proxy has a separate, limited HTTP contract described in configuration. It does not inherit per-request gRPC authentication.

Other full-engine commands are sasy init-credentials [--credentials-db FILE] [--env-file FILE] to initialize/seed SQLite credentials, and sasy install-assets DIR to materialize the six embedded compile-chain assets. init-credentials defaults to data/credentials.db; see building before selecting an asset override. install-assets requires a compiler-enabled build.