Three steps
Register the agent in this console, issue it an enrollment key, then wrap your tool functions. Everything else — which credentials it may use, which connectors it may call, which guardrails apply — is configured here and picked up by the SDK at runtime.

1. Install

pip install aegis-sdk

2. Point it at your agent's identity

Issue an enrollment key on the agent's page, then put it in the environment wherever the agent runs — your laptop, a VPS, an EC2 instance, a container. No VPN and no inbound ports are required; the SDK makes outbound calls only.

export AEGIS_API_BASE=
export AEGIS_AGENT_KEY=agk_a1b2c3d4_...   # shown once, at creation

3. Wrap the agent

from aegis_sdk import Aegis

# Fetches this agent's config from the control plane: its autonomy tier,
# bound connectors, bound credentials and guardrails.
aegis = Aegis.from_env()

@aegis.tool("hospital-ctms", scope="read")
def query_trials(condition: str) -> list[dict]:
    """Every call through this decorator is checked and audited.

    If "hospital-ctms" is not bound to this agent, or the agent is not
    granted the "read" scope on it, the call is BLOCKED and logged — not
    silently dropped and not allowed through with a warning.
    """
    return ctms_client.search(condition=condition)

result = query_trials("type 2 diabetes")
An undecorated function bypasses the guard
This is inherent to the decorator pattern: nothing can force a function to carry it. The compensating controls are registration in this console and human review at wrap time. Run aegis-sdk check . in CI to find tool functions that reach a connector without going through the guard.