FiGuard

Policy enforcement for AI agents.
Built like financial infrastructure.

Pre-flight authorization for any agent action that touches money, tokens, or bounded resources — before anything moves.

Self-hostable Framework-agnostic Open source Apache 2.0

Or try instantly: sandbox.figuard.io · no signup, no Docker

The problem

Agents don't ask permission. They decide, execute, move on — then your logs tell you what happened.

That's not a guardrail. That's a receipt.

Without FiGuard

# Agent decides to act — nothing checks first

result = vendor_api.create_order(
    amount=1890.00,
    vendor="acme-supplies",
    category="office_supplies",
)

# Executed.
# No budget check. No category enforcement.
# No audit record. Fleet has no idea.

With FiGuard

auth = client.authorize(
    session_token=budget.session_token,
    agent_id="procurement_agent",
    action_type="PURCHASE",
    description="Acme office supplies order",
    requested_amount=1890.00,
    claimed_category="office_supplies",
    idempotency_key="order-2026-001",
)

if auth.is_authorized:
    result = vendor_api.create_order(
        amount=auth.approved_amount,
    )
    client.confirm_event(
        auth.event_id,
        confirmed_amount=1890.00,
    )

# DENIED — ALLOCATION_EXHAUSTED
# office_supplies: $800 / $800 consumed
#
# Nothing moved.
# Logged in ledger.
# Agent receives reason code.
# Fleet sees the updated balance.

Works the same for payments, LLM tokens, API quotas, GPU hours, or any bounded resource.

Every agent decision. Authorized, logged, and explainable.

Three agents share one budget. Every request is checked before anything executes — approved, denied, and logged in real time. Simulation

Try the real enforcement engine: sandbox.figuard.io

Get started

$pip install figuard
from figuard import FiGuardClient

client = FiGuardClient(
    api_key="sb_live_demo",
    base_url="https://sandbox.figuard.io",  # no Docker needed
)

budget = client.create_budget(
    user_id="agent_001",
    total_limit=500.00,
    expires_in="24h",
    authorization_expiry_seconds=300,
    intent_context="travel booking session",
)

auth = client.authorize(
    session_token=budget.session_token,
    agent_id="travel_agent",
    action_type="PURCHASE",
    description="JetBlue SFO→JFK",
    requested_amount=267.00,
    idempotency_key="booking-001",
)

print(auth.decision)        # AUTHORIZED
print(auth.approved_amount) # 267.0