Skip to main content
The GoRules Agent is a standalone Rust microservice that evaluates decisions via REST API. It pulls releases from object storage, automatically reloads when changes occur, and requires no UI.

Docker Image

Available on Docker Hub: gorules/agent

When to use the Agent

Choose Agent when:
  • Multiple services need to evaluate the same rules
  • You want to update rules without redeploying applications
  • You need REST API access to rule evaluation
  • You want centralized metrics and observability
Consider alternatives when:
  • You need sub-millisecond latency (use embedded SDK)
  • You’re in a single-service architecture (embedded may be simpler)

Architecture

Custom Docker image

Build a self-contained image with your rules baked in. This is useful for static rules that don’t change frequently, or for deployments where you want versioned rule images.
Build and run:
This creates a portable REST API with your rules embedded. Deploy it anywhere containers run.

Environment variables

AWS S3

If your deployment supports IAM roles, credentials are optional.

Azure Blob Storage

Google Cloud Storage

MinIO and S3-compatible storage

Local filesystem

Zip file

Additional options

HTTPS configuration

Health probes

Path: /api/health Port: 8080 Recommended probe configuration:

Hot reloading

The Agent automatically detects rule changes and reloads without downtime:
  1. Agent polls storage at POLL_INTERVAL (default: 5000ms)
  2. Detects new or modified rule files
  3. Loads new version in background
  4. Atomically swaps to new version
  5. Requests in-flight complete with old version
No requests are dropped during reload.

Observability

OpenTelemetry

Enable OpenTelemetry with OTEL_ENABLED=true. When enabled, standard OTEL environment variables are supported:
See the OpenTelemetry documentation for all available options.

Logging

Structured JSON logs:

API reference

See the API reference for endpoint documentation.