Skip to content

Commit 75b194e

Browse files
committed
Add AgentPin section to README, update version references
1 parent 753285b commit 75b194e

1 file changed

Lines changed: 77 additions & 1 deletion

File tree

README.md

Lines changed: 77 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ The SDK is also available as a Docker image from GitHub Container Registry:
3333
docker pull ghcr.io/thirdkeyai/symbiont-sdk-python:latest
3434

3535
# Or pull a specific version
36-
docker pull ghcr.io/thirdkeyai/symbiont-sdk-python:v0.2.0
36+
docker pull ghcr.io/thirdkeyai/symbiont-sdk-python:v0.5.0
3737
```
3838

3939
#### Running with Docker
@@ -631,6 +631,67 @@ print(f"Total vectors: {vector_count}")
631631
client.delete_vector_collection("old_collection")
632632
```
633633

634+
## AgentPin: Credential Verification
635+
636+
The SDK integrates with [AgentPin](https://github.com/ThirdKeyAI/agentpin) for domain-anchored cryptographic identity verification of AI agents. AgentPin operations run client-side — no Symbiont Runtime required.
637+
638+
### Key Generation & Credential Issuance
639+
640+
```python
641+
from symbiont import Client
642+
643+
client = Client()
644+
645+
# Generate P-256 key pair
646+
private_key, public_key = client.agentpin.generate_key_pair()
647+
kid = client.agentpin.generate_key_id(public_key)
648+
649+
# Issue an ES256 JWT credential
650+
jwt = client.agentpin.issue_credential(
651+
private_key_pem=private_key,
652+
kid=kid,
653+
issuer="example.com",
654+
agent_id="data-analyzer",
655+
capabilities=["read:data", "write:reports"],
656+
ttl_secs=3600,
657+
)
658+
```
659+
660+
### Credential Verification
661+
662+
```python
663+
# Online verification (fetches discovery document automatically)
664+
result = client.agentpin.verify_credential(jwt)
665+
print(f"Valid: {result.valid}, Agent: {result.agent_id}")
666+
667+
# Offline verification with pre-fetched documents
668+
discovery = client.agentpin.fetch_discovery_document("example.com")
669+
offline_result = client.agentpin.verify_credential_offline(jwt, discovery)
670+
671+
# Trust bundle verification (fully offline, no network)
672+
bundle = client.agentpin.create_trust_bundle()
673+
bundle_result = client.agentpin.verify_credential_with_bundle(jwt, bundle)
674+
```
675+
676+
### Discovery & Key Pinning
677+
678+
```python
679+
# Fetch and validate discovery documents
680+
doc = client.agentpin.fetch_discovery_document("example.com")
681+
client.agentpin.validate_discovery_document(doc, "example.com")
682+
683+
# TOFU key pinning
684+
pin_store = client.agentpin.create_pin_store()
685+
686+
# Trust bundle persistence
687+
client.agentpin.save_trust_bundle(bundle, "trust-bundle.json")
688+
loaded = client.agentpin.load_trust_bundle("trust-bundle.json")
689+
690+
# JWK utilities
691+
jwk = client.agentpin.pem_to_jwk(public_key, kid)
692+
pem = client.agentpin.jwk_to_pem(jwk)
693+
```
694+
634695
## API Reference
635696
### Enhanced Client Methods
636697

@@ -1063,6 +1124,21 @@ pytest
10631124
- pydantic
10641125
- python-dotenv
10651126

1127+
## What's New in v0.5.0
1128+
1129+
### AgentPin Integration
1130+
1131+
- **AgentPinClient** — Client-side credential verification, discovery, and trust bundle support via the `agentpin` PyPI package
1132+
- `client.agentpin.verify_credential()` — Full 12-step online verification
1133+
- `client.agentpin.verify_credential_offline()` — Offline verification with pre-fetched documents
1134+
- `client.agentpin.verify_credential_with_bundle()` — Trust bundle-based verification (no network)
1135+
- `client.agentpin.fetch_discovery_document()` — Fetch `.well-known/agent-identity.json`
1136+
- `client.agentpin.issue_credential()` — Issue ES256 JWT credentials
1137+
- `client.agentpin.generate_key_pair()` — P-256 key generation
1138+
- Key pinning (TOFU), trust bundle persistence, and JWK utilities
1139+
1140+
See the [AgentPin section](#agentpin-credential-verification) above for usage examples.
1141+
10661142
## What's New in v0.3.0
10671143

10681144
### Major New Features

0 commit comments

Comments
 (0)