Metadata-Version: 2.4
Name: vouchstone-sdk
Version: 1.0.0
Summary: Python SDK for Vouchstone — AI engineers you can vouch for
Author: Vouchstone
Author-email: "Vouchstone Inc." <gaurav@datapitcher.com>
License: Proprietary
Project-URL: Homepage, https://vouchstone.ai
Project-URL: Repository, https://github.com/GGChamp85/Vouchstone
Project-URL: Documentation, https://vouchstone.ai/docs
Keywords: ai,agents,memory,enterprise,vouchstone
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Requires-Dist: httpx>=0.25.0
Requires-Dist: pydantic>=2.0.0
Requires-Dist: openai>=1.0.0
Requires-Dist: anthropic>=0.18.0
Requires-Dist: numpy>=1.24.0
Requires-Dist: aiofiles>=23.0.0
Provides-Extra: vector
Requires-Dist: chromadb>=0.4.0; extra == "vector"
Requires-Dist: qdrant-client>=1.7.0; extra == "vector"
Provides-Extra: graph
Requires-Dist: neo4j>=5.0.0; extra == "graph"
Provides-Extra: all
Requires-Dist: chromadb>=0.4.0; extra == "all"
Requires-Dist: qdrant-client>=1.7.0; extra == "all"
Requires-Dist: neo4j>=5.0.0; extra == "all"
Provides-Extra: dev
Requires-Dist: pytest>=7.0; extra == "dev"
Requires-Dist: pytest-asyncio>=0.21; extra == "dev"
Requires-Dist: black; extra == "dev"
Requires-Dist: mypy; extra == "dev"
Dynamic: author
Dynamic: requires-python

# Vouchstone SDK

Python SDK for building AI agents on the Vouchstone platform — the first accountable AI engineering firm.

## Install

```bash
pip install vouchstone-sdk

# With vector memory (ChromaDB)
pip install vouchstone-sdk[vector]

# With graph memory (Neo4j)
pip install vouchstone-sdk[graph]

# Everything
pip install vouchstone-sdk[all]
```

## Quick Start

```python
from vouchstone_sdk import Agent, AgentConfig, Message

class MyAgent(Agent):
    async def run(self, message: Message, context: dict):
        relevant_docs = context.get("semantic", [])
        history = context.get("episodic", [])

        response = await self.llm.complete(
            system=f"You are {self.config.name}. Use the context to help the user.",
            messages=[{"role": "user", "content": message.content}],
            context=relevant_docs,
        )
        return AgentResponse(content=response)

config = AgentConfig(
    name="Data Migration Agent",
    model="claude-sonnet-4-20250514",
    semantic_memory=True,
    episodic_memory=True,
    procedural_memory=True,
)

agent = MyAgent(config)
await agent.initialize(vector_db_url="http://chromadb:8000")
response = await agent.process(Message(content="Migrate our PostgreSQL to Snowflake"))
```

## 5-Layer Memory Stack

Each agent has access to a biologically-inspired memory architecture:

| Layer | Name | Storage | Purpose |
|-------|------|---------|---------|
| 1 | Working | Redis | Current turn context (resets per session) |
| 2 | Episodic | PostgreSQL | Cross-session traces (append-only) |
| 3 | Semantic | ChromaDB | Entity store (vector search) |
| 4 | Procedural | Neo4j | Learned skills (versioned DAG) |
| 5 | Meta | Control Plane | Decay, dedup, compress, forget |

## Control Plane Client

```python
from vouchstone_sdk import VouchstoneClient

client = VouchstoneClient(
    api_url="https://api.vouchstone.ai",
    api_key="your-api-key",
    tenant_id="your-tenant-id",
)

# List agents
agents = await client.list_agents()

# Execute an agent
result = await client.execute(agent_id="...", input={"content": "Hello"})
```

## License

Proprietary — Copyright (c) 2026 Vouchstone Inc. All Rights Reserved.
