Python client for Iranti memory infrastructure
Project description
Iranti Python Client
Python client for the Iranti REST API.
Installation
pip install iranti
For local development from this repository:
cd clients/python
pip install -e .
Setup
Start the Iranti API server first:
# In your Iranti directory
npm run api
Usage
from iranti import IrantiClient
client = IrantiClient(
base_url="http://localhost:3001",
api_key="replace-with-real-iranti-key"
)
# Or use environment variables
# IRANTI_URL=http://localhost:3001
# IRANTI_API_KEY=replace-with-real-iranti-key
client = IrantiClient()
# Check server is running
print(client.health())
# Write a fact
result = client.write(
entity="researcher/jane_smith",
key="affiliation",
value={"institution": "MIT"},
summary="Affiliated with MIT",
confidence=85,
source="OpenAlex",
agent="my_agent"
)
print(result.action) # created / updated / rejected / escalated
# Ingest raw text
result = client.ingest(
entity="researcher/jane_smith",
content="Dr. Jane Smith has 24 publications and is at MIT CSAIL.",
source="OpenAlex",
confidence=80,
agent="my_agent"
)
print(
f"Extracted: {result.extracted_candidates}, "
f"Written: {result.written}, "
f"Skipped malformed: {result.skipped_malformed}"
)
# Get working memory before a task
brief = client.handshake(
agent="my_agent",
task="Research publication history",
recent_messages=["Starting research..."]
)
print(brief.inferred_task_type)
# Per-turn memory decision (inject only when needed)
turn = client.attend(
agent_id="my_agent",
latest_message="What is my favorite snack?",
current_context="User: What is my favorite snack?\nAssistant:",
entity_hints=["user/main"]
)
print(turn["shouldInject"], turn["reason"])
# Save task progress so a later handshake can recommend resuming it
brief = client.checkpoint(
agent_id="my_agent",
task="Research publication history",
recent_messages=["Still comparing two source timelines."],
checkpoint={
"currentStep": "Review affiliation conflict",
"nextStep": "Write corrected fact",
"openRisks": ["Two sources disagree on start year"],
},
)
if brief.session_recovery and brief.session_recovery.available:
client.resume_session(
agent_id="my_agent",
session_id=brief.session_recovery.session_id
)
session = client.inspect_session("my_agent")
print(session.has_checkpoint)
sessions = client.list_sessions(operator_state="interrupted", sort="operator")
print([(item.agent_id, item.operator_state) for item in sessions])
# Query facts
result = client.query("researcher/jane_smith", "affiliation")
if result.found:
print(result.value)
Error Handling
from iranti import IrantiClient, IrantiAuthError, IrantiValidationError, IrantiError
try:
result = client.write(...)
except IrantiAuthError:
print("Invalid API key")
except IrantiValidationError as e:
print(f"Bad input: {e}")
except IrantiError as e:
print(f"API error: {e}")
Environment Variables
| Variable | Description |
|---|---|
IRANTI_URL |
API server URL (default: http://localhost:3001) |
IRANTI_API_KEY |
API token (keyId.secret) or legacy shared server key |
License
AGPL-3.0-or-later.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
iranti-0.3.0.tar.gz
(11.3 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
iranti-0.3.0-py3-none-any.whl
(11.1 kB
view details)
File details
Details for the file iranti-0.3.0.tar.gz.
File metadata
- Download URL: iranti-0.3.0.tar.gz
- Upload date:
- Size: 11.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3edeb605b9083487986001cbe31bce1edbe8bafabfa00f39c384c627f11330b0
|
|
| MD5 |
76e4dfd93f9da710eb00b4e95e6780aa
|
|
| BLAKE2b-256 |
5ddd8203b4b6ab5d16ff099edad342a947077d0660e6161d447301be408c7fe7
|
File details
Details for the file iranti-0.3.0-py3-none-any.whl.
File metadata
- Download URL: iranti-0.3.0-py3-none-any.whl
- Upload date:
- Size: 11.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
036a23df6104785fe44d1a4d50b8315851d18e34538b60b33c1c80c524859cae
|
|
| MD5 |
741e9702603594d6d59e5e0caad547ba
|
|
| BLAKE2b-256 |
304460e171307c5c7cd8fe855463c787762b9af909f3607b71f44e88e62ad681
|