Skip to main content

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

This version

0.3.7

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.7.tar.gz (10.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

iranti-0.3.7-py3-none-any.whl (11.0 kB view details)

Uploaded Python 3

File details

Details for the file iranti-0.3.7.tar.gz.

File metadata

  • Download URL: iranti-0.3.7.tar.gz
  • Upload date:
  • Size: 10.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for iranti-0.3.7.tar.gz
Algorithm Hash digest
SHA256 ccfe57f4bcf3f89daf52603a0ac23a87914e44380d54ebdc49434b08f282264e
MD5 b86d4c8526baa7fdafc4a092aadc8a3a
BLAKE2b-256 ef00aac2751737d90dfa0c1b838d18d427a139f011a7919b6a5415ffd83bb66a

See more details on using hashes here.

Provenance

The following attestation bundles were made for iranti-0.3.7.tar.gz:

Publisher: publish-packages.yml on nfemmanuel/iranti

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file iranti-0.3.7-py3-none-any.whl.

File metadata

  • Download URL: iranti-0.3.7-py3-none-any.whl
  • Upload date:
  • Size: 11.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for iranti-0.3.7-py3-none-any.whl
Algorithm Hash digest
SHA256 c15c1665955bcaa5e620abe5e48b15d658c905b41afce6d07c402a53c76f14e8
MD5 bee5a5dadfbe24e9ab7b70f94d040378
BLAKE2b-256 af18780404cac235c638b60e0a0362fd1f4f45942af700e0238ff0746717961f

See more details on using hashes here.

Provenance

The following attestation bundles were made for iranti-0.3.7-py3-none-any.whl:

Publisher: publish-packages.yml on nfemmanuel/iranti

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page