Skip to content
Open
47 changes: 46 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ Enforce runtime guardrails through a centralized control layer—configure once

## Quick Start

Prerequisites: Docker and Python 3.12+.
Prerequisites: Docker (or Podman, see [Podman setup](#podman-setup)) and Python 3.12+.

Quick start flow:

Expand Down Expand Up @@ -292,6 +292,51 @@ Explore working examples for popular frameworks.
- [AWS Strands](examples/strands_agents/) - protect Strands workflows and tool calls
- [Google ADK Decorator](examples/google_adk_decorator/) - add controls with `@control()`

## Podman Setup

If Docker Desktop is not available, you can use [Podman](https://podman-desktop.io) as a drop-in replacement. No changes to repo files are needed — the setup below makes `docker` and `docker compose` transparently resolve to Podman.

**One-time setup:**

1. Install [Podman Desktop](https://podman-desktop.io) and create a machine from its UI (start it before continuing).

2. Install `podman-compose`:

```bash
brew install podman-compose
```

3. Create a `docker` shim that routes `docker compose` to `podman-compose` and everything else to `podman`:

```bash
mkdir -p ~/.local/bin
cat > ~/.local/bin/docker << 'EOF'
#!/bin/zsh
if [[ "$1" == "compose" ]]; then
shift
exec podman-compose "$@"
fi
exec podman "$@"
EOF
chmod +x ~/.local/bin/docker
```

4. Add `~/.local/bin` early in your PATH (if not already):

```bash
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
```

**Verify:**

```bash
docker ps
docker compose version
```

After this, all existing `docker`/`docker compose` commands and `make` targets work as-is.

## How It Works

![Agent Control Architecture](docs/images/Architecture.png)
Expand Down
10 changes: 7 additions & 3 deletions evaluators/contrib/galileo/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,13 @@ Integration package for Galileo Luna evaluator.

The `galileo.luna2` evaluator ID has been removed. Existing controls that use
`galileo.luna2` should migrate to `galileo.luna` and update their evaluator
configuration to the direct Luna scorer fields (`scorer_label`, `scorer_id`, or
`scorer_version_id`, plus `threshold` and `operator`). If you still need the
legacy Luna2 evaluator, pin `agent-control-evaluator-galileo <8`.
configuration to use the direct Luna scorer fields. `scorer_id` is required;

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: since scorer_id is now required, can we confirm the rollout path for any saved galileo.luna controls that only have scorer_label or scorer_version_id? A short migration/compat note here or in the PR description would make the break explicit.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good call. I’ll make this explicit in the PR notes.

Rollout path: this is a breaking config contract for galileo.luna. Saved Luna controls must include scorer_id; scorer_label is now display/metadata only, and scorer_version_id is an optional version pin. The enterprise UI already resolves the selected scorer before save and persists scorer_id.

`scorer_label` and `scorer_version_id` are optional. The evaluator calls the
URL configured by `GALILEO_LUNA_INVOKE_URL`; the target must support the Luna
scorer invoke request/response contract and internal Galileo secret auth. Also
set `threshold` and `operator` as needed. If you still need the legacy Luna2
evaluator, pin
`agent-control-evaluator-galileo <8`.

## Install

Expand Down
Loading
Loading