|
1 | 1 | # Agentic Airlock |
2 | 2 |
|
3 | | -[](https://github.com/shivdeep1/airlock-protocol/actions/workflows/ci.yml) |
| 3 | +[](https://github.com/airlock-protocol/airlock/actions/workflows/ci.yml) |
4 | 4 | [](https://www.python.org/downloads/) |
5 | 5 | [](https://opensource.org/licenses/Apache-2.0) |
6 | 6 | [](https://pypi.org/project/airlock-protocol/) |
7 | 7 | [](https://developercertificate.org/) |
8 | 8 |
|
9 | 9 | **DMARC for AI Agents** — an open protocol for agent-to-agent trust verification in the agentic web. |
10 | 10 |
|
| 11 | +**Registry:** [api.airlock.ing](https://api.airlock.ing) — every verification routes through the central trust registry by default. |
| 12 | + |
11 | 13 | --- |
12 | 14 |
|
13 | 15 | ## The Problem |
@@ -71,35 +73,61 @@ Resolve → Handshake → Challenge → Verdict → Seal |
71 | 73 | ## Quickstart |
72 | 74 |
|
73 | 75 | ```bash |
74 | | -# Install the package with dev dependencies |
75 | | -pip install -e ".[dev]" |
| 76 | +pip install airlock-protocol |
| 77 | + |
| 78 | +# Verify an agent in 7 lines |
| 79 | +python -c " |
| 80 | +from airlock import AirlockClient |
| 81 | +client = AirlockClient() # defaults to api.airlock.ing |
| 82 | +result = client.verify('did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK') |
| 83 | +print(f'Verified: {result.verified}, Score: {result.trust_score}') |
| 84 | +" |
| 85 | +``` |
| 86 | + |
| 87 | +### CLI |
| 88 | + |
| 89 | +```bash |
| 90 | +# Verify an agent from the command line |
| 91 | +airlock verify did:key:z6Mk... |
76 | 92 |
|
77 | | -# Run the 3-agent demo (no LLM or external services required) |
78 | | -python demo/run_demo.py |
| 93 | +# Start a local gateway for development |
| 94 | +airlock serve |
79 | 95 |
|
80 | | -# Run the full test suite |
81 | | -python -m pytest tests/ -v |
| 96 | +# Scaffold a new Airlock-protected project |
| 97 | +airlock init |
82 | 98 | ``` |
83 | 99 |
|
| 100 | +### Self-hosting |
| 101 | + |
| 102 | +```bash |
| 103 | +# Clone and run locally |
| 104 | +git clone https://github.com/airlock-protocol/airlock.git |
| 105 | +cd airlock |
| 106 | +pip install -e ".[dev]" |
| 107 | +python demo/run_demo.py # 3-agent demo, no external services needed |
| 108 | +python -m pytest tests/ -v # 313 tests |
| 109 | +``` |
| 110 | + |
| 111 | +> **[→ Full Getting Started Guide](GETTING_STARTED.md)** |
| 112 | +
|
84 | 113 | --- |
85 | 114 |
|
86 | 115 | ## SDK Usage |
87 | 116 |
|
88 | 117 | ```python |
89 | | -from airlock.crypto.keys import KeyPair |
90 | | -from airlock.sdk.client import AirlockClient |
91 | | -from airlock.sdk.middleware import AirlockMiddleware |
| 118 | +from airlock import AirlockClient |
92 | 119 |
|
93 | | -# Option A — direct client |
94 | | -async with AirlockClient("https://your-airlock.example.com", agent_keypair=kp) as client: |
95 | | - result = await client.handshake(handshake_request) |
| 120 | +# Default — routes through central Airlock registry (api.airlock.ing) |
| 121 | +client = AirlockClient() |
| 122 | +result = client.verify("did:key:z6Mk...") |
| 123 | +if result.verified: |
| 124 | + print(f"Trusted: {result.agent_name}, Score: {result.trust_score}") |
96 | 125 |
|
97 | | -# Option B — decorator middleware (drop-in protection for any async handler) |
98 | | -airlock = AirlockMiddleware("https://your-airlock.example.com", agent_private_key=kp) |
| 126 | +# Self-hosted — point to your own gateway |
| 127 | +client = AirlockClient(gateway_url="http://localhost:8000") |
99 | 128 |
|
100 | | -@airlock.protect |
101 | | -async def handle_incoming(request: HandshakeRequest): |
102 | | - ... # only called if Airlock returns ACCEPTED |
| 129 | +# Async support |
| 130 | +result = await client.averify("did:key:z6Mk...") |
103 | 131 | ``` |
104 | 132 |
|
105 | 133 | ### TypeScript client (`airlock-client`) |
@@ -260,4 +288,4 @@ Apache License 2.0. See [LICENSE](LICENSE). |
260 | 288 |
|
261 | 289 | ## Author |
262 | 290 |
|
263 | | -Shivdeep Singh ([@shivdeep1](https://github.com/shivdeep1)) |
| 291 | +Shivdeep Singh ([@shivdeep1](https://github.com/shivdeep1)) — [airlock.ing](https://airlock.ing) |
0 commit comments