Skip to content

Runtime Configuration (Non-Library Mode)

effectusd accepts one immutable effectus.source-bundle.v1 source bundle. It compiles the bundle once at startup. PostgreSQL is required for admission, recovery, the outbox, fencing, and the Kafka delivery ledger.

Start from a source-bundle file

Create a source bundle with a program that uses bundle.New, such as examples/standalone_executor/bundle.go. Validate it before deployment:

go run ./examples/standalone_executor/bundle.go order-review.json executor-token
./effectusc check --bundle order-review.json
EFFECTUS_POSTGRES_DSN='postgres://effectus:...@db/effectus?sslmode=require' \
EFFECTUS_API_TOKEN='replace-with-a-secret' \
  ./effectusd --bundle order-review.json --http-addr :8080

EFFECTUS_API_TOKEN is required whenever HTTP or gRPC is enabled. Send it as Authorization: Bearer TOKEN to every /v1/* endpoint. /healthz and /readyz are intentionally unauthenticated probe endpoints. GET /v1/status returns the active generation after authentication. POST /v1/execute also requires Idempotency-Key; it returns HTTP 202 after durable admission. Use If-Match with a generation digest when the caller must reject a stale view.

Load a verified OCI source bundle

OCI loading requires a digest-pinned reference and a verifier executable. The verifier receives the repository reference and verified digest.

EFFECTUS_POSTGRES_DSN='postgres://effectus:...@db/effectus?sslmode=require' \
EFFECTUS_API_TOKEN='replace-with-a-secret' \
  ./effectusd \
  --oci-ref ghcr.io/myorg/bundles/order-review@sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef \
  --oci-signature-verifier /usr/local/bin/effectus-verify-oci

The daemon rejects tags, unverified OCI content, configuration files, extension directories, plugins, and reload configuration.

gRPC

gRPC uses the same EFFECTUS_API_TOKEN as a bearer token and requires TLS by default:

./effectusd --bundle order-review.json --grpc-addr :9091 \
  --grpc-tls-cert /run/tls/tls.crt --grpc-tls-key /run/tls/tls.key

--grpc-allow-insecure is an explicit development override. It does not disable bearer-token authentication.

Kafka fact ingestion

Use a stable consumer group and cluster namespace. PostgreSQL is the durable attempt ledger. A Kafka consumer will not start unless its tracker is installed.

./effectusd --bundle order-review.json --fact-source kafka \
  --kafka-brokers kafka-1:9092,kafka-2:9092 \
  --kafka-topic facts --kafka-consumer-group effectusd-production

The Kafka acknowledgement contract controls whether offsets commit after durable acceptance or completed processing. Poison handling defaults to halt.