CASFA (Content-Addressable Storage for Agents) Python SDK
Project description
CASFA Python SDK
Python client for CASFA (Content-Addressable Storage for Agents).
Installation
pip install casfa-client
Quick Start
Agent Token Authentication
import asyncio
from casfa import create_casfa_client, CasfaClientConfig, TokenAuthConfig
async def main():
# Create client with agent token
client = create_casfa_client(CasfaClientConfig(
base_url="https://casfa.example.com",
auth=TokenAuthConfig(type="token", token="casfa_xxx"),
realm_id="user:ABC123",
))
# Get realm usage
result = await client.realm.get_usage()
if result.ok:
print(f"Nodes: {result.data.node_count}")
print(f"Bytes: {result.data.total_bytes}")
else:
print(f"Error: {result.error.message}")
# List depots
result = await client.depots.list()
if result.ok:
for depot in result.data.items:
print(f"Depot: {depot.title} (v{depot.version})")
await client.close()
asyncio.run(main())
Ticket Authentication
from casfa import create_casfa_client, CasfaClientConfig, TicketAuthConfig
async def process_with_ticket(ticket_id: str):
client = create_casfa_client(CasfaClientConfig(
base_url="https://casfa.example.com",
auth=TicketAuthConfig(type="ticket", ticket_id=ticket_id),
))
# Read nodes allowed by ticket scope
result = await client.nodes.get(key="node:abc123...")
if result.ok:
data = result.data # bytes
# Process data...
# Commit output
result = await client.tickets.commit(
ticket_id=ticket_id,
output="node:result123...",
)
await client.close()
API Reference
Client Creation
from casfa import create_casfa_client, CasfaClientConfig
client = create_casfa_client(CasfaClientConfig(
base_url="https://casfa.example.com",
auth=auth_config, # TokenAuthConfig, TicketAuthConfig, etc.
realm_id="user:ABC123", # Optional
))
API Namespaces
| Namespace | Description |
|---|---|
client.oauth |
OAuth/Cognito authentication |
client.auth |
AWP clients and Agent tokens |
client.admin |
Admin user management |
client.mcp |
MCP JSON-RPC tool calls |
client.realm |
Realm info and usage |
client.tickets |
Ticket management |
client.depots |
Depot management |
client.nodes |
Node storage operations |
Result Pattern
All API methods return FetchResult[T]:
result = await client.tickets.create(...)
if result.ok:
ticket = result.data # TicketInfo
print(ticket.ticket_id)
else:
error = result.error # CasfaError
print(f"Error: {error.code} - {error.message}")
Authentication Types
| Type | Config | Header |
|---|---|---|
| Agent Token | TokenAuthConfig |
AgentToken {token} |
| Ticket | TicketAuthConfig |
Ticket {ticketId} |
| User OAuth | UserAuthConfig |
Bearer {accessToken} |
| P256 (AWP) | P256AuthConfig |
X-AWP-* headers |
Development
# Install dev dependencies
pip install -e ".[dev]"
# Run tests
pytest
# Type check
mypy casfa
# Lint
ruff check casfa
License
MIT
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
casfa_client-0.1.5.tar.gz
(41.8 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file casfa_client-0.1.5.tar.gz.
File metadata
- Download URL: casfa_client-0.1.5.tar.gz
- Upload date:
- Size: 41.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
140e9ea70a261eb6dfb1d9f8d2336a2c96f82db1badd2d607473299cac1db7cf
|
|
| MD5 |
aacbe7eebcdba477426e3a75b9629ef7
|
|
| BLAKE2b-256 |
19ad2d5d3eab2e247098d8dc3d8b6302e43510980743bc19978175ca687db4ae
|
File details
Details for the file casfa_client-0.1.5-py3-none-any.whl.
File metadata
- Download URL: casfa_client-0.1.5-py3-none-any.whl
- Upload date:
- Size: 47.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0bba2ef84f2130adf7cb72f7b0029ae758000adf5bbe4e1cc983ea98bd5e8b35
|
|
| MD5 |
4c64737191af364ef6c5d0e203b1710d
|
|
| BLAKE2b-256 |
84828ca879a0aa9266f4e42b673b314d4f9dd2968a403e5129b76f77c7ac1923
|