Skip to content

IOF Agents

IOF Agents are governed AI copilots that operate within the IOF platform boundary. Every agent is scoped to a tenant, auditable via structured events, and approval-gated on every sensitive action. Agents never bypass IOF APIs, ABAC policy enforcement, tenant boundaries, maker-checker, or evidence requirements.

Live catalog: agents.islamicopenfinance.com.

IDNameFocus
evidence-packEvidence Pack AgentRegulator/Shariah board evidence bundles
reconciliation-investigatorReconciliation Investigator AgentLedger / core / ISO 20022 break analysis
compliance-governanceCompliance & Governance AgentControl walkthroughs, gap assessment
integration-copilotIntegration CopilotConnector scaffolding, webhook design, SDK snippets
treasury-almTreasury / ALM AgentLiquidity, FX, profit-rate scenarios
trade-financeTrade Finance AgentLC / guarantee documentation + UCP 600 / ISBP 821 checks
reportingReporting AgentInternal + regulatory report drafting

Source of truth: apps/agents/src/app/agents-data.ts (AGENT_CATALOG).

Every agent invocation runs under an AgentIdentity principal, a first-class identity type defined alongside Team, SystemAccount, and Workspace in the identity hierarchy. An AgentIdentity is required to have a non-null human supervisor. The Cerbos policy config/cerbos/policies/agent_identity.yaml enforces this on both create and attach_supervisor.

principalType is one of HUMAN, SYSTEM, or AGENT. Agents cannot escalate themselves to HUMAN. Sensitive actions that require human judgement (e.g. approve, sign) are explicitly denied for AGENT principals by the Cerbos policy config/cerbos/policies/agent_invocation.yaml.

An agent invocation emits the following events in order:

  1. agent.invocation.started — agent accepted the task; inputs captured
  2. agent.invocation.completed | agent.invocation.failed — terminal state
  3. agent.finding.recorded — evidence-tagged output written to the tenant’s data room
  4. agent.approval.requested — when the task reaches an approval-gated action
  5. agent.approval.granted | agent.approval.denied — supervisor decision

Schemas: packages/event-schema-registry/src/schemas/agent-events.ts. Replayable from the audit log.

SurfaceWhat it guarantees
ABAC (Cerbos)agent_invocation.yaml requires principalType == "AGENT" and non-null supervisorId to invoke. Only the named supervisor can approve.
Approval-gatingapprovalGated actions never auto-execute; the agent prepares, the supervisor decides.
Audit trailAll events emitted to the webhook stream and persisted in the immutable audit store.
Evidence taggingEvery agent output is tagged with source-event IDs so it is reproducible and auditable.
Tenant scopingEvery call carries tenant_id; cross-tenant reads are denied at the service PDP.