FLEXVOTIXGet started

Your agent logic is the interesting part. The plumbing isn't.

Getting an agent to work in a notebook takes an afternoon. Getting it to survive production means writing the same infrastructure every team writes. AEGIS is designed to be that infrastructure, so you can focus on your agents.

The problem

What you stop writing.

Most production agent systems end up needing these, and each is a place where a subtle bug can cost real money.
What you end up buildingWhat AEGIS is designed to provideWhere
Retry logic that will not pay twiceRetry classes declared per toolRuntime
Saving state so a crash does not lose an hour of workCheckpoints and leasesRuntime
A queue and a UI for human approvalApproval objects with an inboxGuard
Hiding secrets from promptsA credential broker in the gatewayConnect
Stopping a sub-agent from using a parent's accessNarrowing MandatesGuard
Provider switching and fallback codeModel routesIntelligence
Working out what happened after a failureOne record, and replayTrace

The interface

A denial is just a result you handle.

Governance tools often feel like an obstacle bolted on later. The goal here is an error model and object model that feel like ordinary engineering.

  • Typed errors with stable codes
  • Immutable agent versions, pinned per run
  • Event stream per execution
  • Local tests with mock tools, planned
API design preview. Not yet installable.
# API design preview. This package is not published.
from aegis import Aegis, PolicyDenied

client = Aegis()

run = client.tasks.create(
    agent="invoice-review@4",
    objective="Review overdue vendor invoices",
    mandate={
        "tools": ["records.search", "ap.schedule_payment"],
        "unattended_limit_usd": 5000,
        "expires_in": "24h",
    },
)

try:
    result = run.wait()
except PolicyDenied as denied:
    # A denial is a typed result you can handle in code.
    print(denied.reason)  # vendor_not_in_master

Your framework

Keep what you already use.

AEGIS is designed to run agents defined in its own configuration, and a Phase 2 adapter is planned so that actions from existing frameworks can pass through Guard. LangGraph is the likely first target.

No lock-in by design

Bring your keys. Take your data.

You keep your model provider relationship, and traces are planned to export through OpenTelemetry. There is no token markup, so we have no reason to steer your model choice.

Getting started

What you can do today.

There is no SDK to install yet.

Tell us what is wrong with the API design.

It is much cheaper to change now. Developers who join early access can help shape it.