Runtime¶
Constructor¶
Runtime(
*,
executor: BaseExecutor,
policy: Policy,
approval_handler: ApprovalHandler | None = None,
audit_logger: AuditLogger | None = None,
session_id: str | None = None,
)
| Parameter | Type | Default | Description |
|---|---|---|---|
executor |
BaseExecutor |
required | Adapter that executes actions |
policy |
Policy |
required | Policy rules for governance |
approval_handler |
ApprovalHandler |
CLIApprovalHandler() |
How to ask humans for approval |
audit_logger |
AuditLogger |
AuditLogger() |
Where to log the audit trail |
session_id |
str |
auto-generated | Identifier for grouping audit entries |
Context Manager¶
Runtime supports async context manager for automatic setup/teardown:
async with Runtime(executor=..., policy=...) as runtime:
results = await runtime.execute(plan)
# executor.teardown() and audit.close() called automatically
Methods¶
plan(actions) -> ExecutionPlan¶
Evaluate a list of actions against the policy without executing anything.
plan = runtime.plan([
Action("read", "salesforce"),
Action("delete", "salesforce"),
])
print(plan.summary())
await execute(plan) -> list[Result]¶
Execute a plan through the full governance pipeline. Returns one Result per action.
Fail-fast behavior: If an action fails (not blocked/skipped), all remaining actions are skipped.
await run_one(action) -> Result¶
Convenience method: evaluate + execute a single action.
Equivalent to plan([action]) + execute(plan) but returns a single Result.
Approval Handlers¶
Aegis ships with three approval handlers:
| Handler | Use Case |
|---|---|
CLIApprovalHandler |
Interactive terminal prompt (default) |
AutoApprovalHandler |
Auto-approve everything (testing only) |
CallbackApprovalHandler |
Programmatic approval via sync/async callback |
from aegis.runtime.approval import AutoApprovalHandler, CLIApprovalHandler
from aegis.runtime.approval_callback import CallbackApprovalHandler
# Auto-approve low/medium risk
handler = CallbackApprovalHandler(
callback=lambda d: d.risk_level.value <= 2
)
runtime = Runtime(executor=..., policy=..., approval_handler=handler)
See Approval Handlers guide for custom handlers.
Audit Backends¶
| Backend | Import | Storage |
|---|---|---|
AuditLogger |
aegis.runtime.audit |
SQLite database (default) |
LoggingAuditLogger |
aegis.runtime.audit_logging |
Python logging module |
Both support .export_jsonl(path) for JSONL export.