How rayen-mansouri/indaba works
SENTINEL is an offline simulator defense that intercepts agent-proposed tool actions at a guarded boundary. The principal workflow runs a scenario through an agent and model, evaluates proposed actions with a defense, executes permitted actions against synthetic domain tools and world state, then records and grades the run. The graph also preserves the documented baseline defenses, domain capabilities, replay/evaluation, and optional HTTP defense surface. Relationships are limited to README statements and indexed or excerpted references; domain-tool wiring and several supporting subsystem internals were not sampled.
Main entry points: runner.py Run evaluator · cli.py CLI · reference.py Reference agent · runtime.py Guarded firewall
Components 24
Run orchestration
- CLI
src/sentinel/cli.py - Scenario loader
src/sentinel/core/scenario.py - Run evaluator
src/sentinel/evaluator/runner.py - Reference agent
src/sentinel/agent/reference.py - Action contract
src/sentinel/core/actions.py
Action defense
- Guarded firewall
src/sentinel/firewall/runtime.py - Firewall policy gates
src/sentinel/firewall/gates.py - Tool manifest
src/sentinel/firewall/toolspecs.py - Provenance lineage
src/sentinel/core/provenance.py
Synthetic simulator
- Tool gateway
src/sentinel/tools/gateway.py - Tool implementations
src/sentinel/tools/base.py - Domain tools
src/sentinel/domains - World state
src/sentinel/core/state.py
Evaluation and evidence
- Event trace
src/sentinel/core/events.py - Run artifacts
src/sentinel/storage/runs.py - Metrics and graders
src/sentinel/evaluator - Trace replay
src/sentinel/evaluator/replay.py - Attack baselines
src/sentinel/attackers
Model and defense adapters
- Model adapters
src/sentinel/models/base.py - Defense interface
src/sentinel/defenses/interface.py - HTTP defense client
src/sentinel/defenses/client.py - Defense baselines
src/sentinel/defenses/baselines
Other components
- Operator
- Defense service
Connections 24
- Operator → CLI: runs
README.md - CLI → Scenario loader: loads
src/sentinel/cli.py - CLI → Run evaluator: starts
src/sentinel/cli.py - Run evaluator → Scenario loader: uses
src/sentinel/evaluator/runner.py - Run evaluator → Reference agent: constructs
src/sentinel/evaluator/runner.py - Reference agent → Model adapters: queries
src/sentinel/agent/reference.py - Reference agent → Defense interface: requests decision
src/sentinel/agent/reference.py - Reference agent → Tool gateway: executes via
src/sentinel/agent/reference.py - Reference agent → Action contract: proposes
src/sentinel/agent/reference.py - HTTP defense client → Defense service: posts decisions
src/sentinel/defenses/client.py - Guarded firewall → Firewall policy gates: evaluates gates
src/sentinel/firewall/runtime.py - Guarded firewall → Tool manifest: reads manifest
src/sentinel/firewall/runtime.py - Guarded firewall → Provenance lineage: tracks lineage
src/sentinel/firewall/runtime.py - Guarded firewall → Tool gateway: guards execution
src/sentinel/firewall/runtime.py - Tool gateway → Tool implementations: dispatches tools
src/sentinel/tools/gateway.py - Tool implementations → World state: reads and writes
src/sentinel/tools/base.py - Run evaluator → Event trace: records run
src/sentinel/evaluator/runner.py - Run artifacts → Event trace: stores traces
src/sentinel/storage/runs.py - Run evaluator → Run artifacts: writes artifacts
src/sentinel/cli.py - Run evaluator → Metrics and graders: grades outcomes
src/sentinel/evaluator/runner.py - CLI → Trace replay: replays traces
src/sentinel/cli.py - Run evaluator → Attack baselines: schedules attacks
src/sentinel/evaluator/runner.py - CLI → Defense baselines: selects defense
src/sentinel/cli.py - Domain tools → Tool gateway: registered tools