Skip to main content

STELE Python SDK and local bootstrap helpers (HTTP client + optional local steled launcher).

Project description

stele (Python)

Dependency-free Python SDK for STELE (stdlib urllib, Python 3.9+).

This package contains:

  • stele_sdk: the HTTP client (in-repo module)
  • stele: thin wrapper module + optional local bootstrap helpers (intended for pip install stele)

If you want a deeper dive, see the repo docs at docs/sdk/python.md.

Install

pip install stele
from stele import SteleClient, APIError

Client Configuration

client = SteleClient(
    base_url="http://127.0.0.1:8080",
    api_version="v1",
    agent_id="agent-1",
    session_id="session-1",
    client_id="my-app",
    embedder_override="",     # optional
    ops_auth_token="",        # optional; also read from STELE_OPS_AUTH_TOKEN / STELE_MCP_AUTH_TOKEN
    timeout=15,
)

Environment defaults (when not passed explicitly):

  • STELE_BASE_URL
  • STELE_API_VERSION
  • STELE_AGENT_ID
  • STELE_SESSION_ID
  • STELE_CLIENT_ID
  • STELE_EMBEDDER_OVERRIDE
  • STELE_OPS_AUTH_TOKEN (ops endpoints)
  • STELE_MCP_AUTH_TOKEN (ops endpoints; convenience fallback)

Minimal Example: Write + Query

import time
from stele import SteleClient

client = SteleClient(
    base_url="http://127.0.0.1:8080",
    agent_id="agent-1",
    session_id="session-1",
)

write = client.write(
    {
        "memory": {
            "content": "We should attach provenance.source_refs to all writes.",
            "type": "MEMORY_TYPE_PROCEDURAL",
            "scope": "SCOPE_AGENT",
            "provenance": {
                "source_refs": ["run:sdk/python/README.md#minimal-example"],
                "citations": [],
                "origin_turn_id": "",
            },
            "timestamp_ms": int(time.time() * 1000),
        }
    }
)
print("wrote:", (write.get("memory") or {}).get("id"))

query = client.query(
    {
        "query_text": "What provenance should we attach?",
        "budget_tokens": 250,
        "scope_order": ["SCOPE_AGENT", "SCOPE_TEAM", "SCOPE_PROJECT", "SCOPE_GLOBAL"],
    }
)
print("recall:", len(query.get("memories") or []))

Optional: Local Bootstrap (No Go Toolchain)

If you have GitHub Release assets published for this repo, you can bootstrap a local steled before creating the client:

from stele.local import ensure_running
from stele import SteleClient

ensure_running()
client = SteleClient(agent_id="agent-1", session_id="session-1")
print(client.query({"query_text": "sanity check"}))

Error Handling

Non-2xx responses raise APIError:

from stele import APIError

try:
    client.reindex({})
except APIError as exc:
    print("status:", exc.status_code, "code:", exc.code, "request:", exc.request_id, "msg:", exc.message)

Graph Example: Add Edge + List

import time

client.edge_add(
    {
        "edge": {
            "from_id": "mem-aaa",
            "to_id": "mem-bbb",
            "type": "EDGE_TYPE_RELATES_TO",
            "weight": 1,
            "created_at_ms": int(time.time() * 1000),
        }
    }
)

edges = client.edge_list({"node_id": "mem-aaa"})
print(edges.get("edges"))

Ops Endpoints (Bearer Token)

Ops endpoints require ops_auth_token (or env STELE_OPS_AUTH_TOKEN / STELE_MCP_AUTH_TOKEN):

  • bulk_forget
  • export_ndjson / export_to_file
  • import_memories
  • maintenance
  • reindex
  • decay

Export to File (Convenience)

import os
from stele import SteleClient

ops = SteleClient(
    base_url="http://127.0.0.1:8080",
    agent_id="agent-1",
    session_id="session-1",
    ops_auth_token=os.environ.get("STELE_OPS_AUTH_TOKEN", ""),
)
ops.export_to_file("stele-export.jsonl")

Import

from stele import SteleClient

with open("stele-export.jsonl", "r", encoding="utf-8") as f:
    ndjson = f.read()

ops.import_memories({"data": ndjson, "strict": False})

API Coverage (Method Map)

Methods map closely to steled routes:

  • Core: write, query, feedback, protect, supersede, forget
  • Retrieval utils: list_memories, get_memory, search_memories, update_memory, verify, extract
  • Bulk: bulk_write, bulk_forget (ops)
  • Ops: export_ndjson/export_to_file, import_memories, schema, metrics, maintenance, reindex, decay
  • Graph: edge_add, edge_delete, edge_list, edge_traverse, edge_suggest
  • Sharing: learn_share (mistake-only)
  • Agent/system: agent_get, agent_upsert, access_mark_used, events, membership_add/remove/list, health, stats

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

stele_sdk-0.1.3.tar.gz (13.9 kB view details)

Uploaded Source

Built Distribution

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

stele_sdk-0.1.3-py3-none-any.whl (11.2 kB view details)

Uploaded Python 3

File details

Details for the file stele_sdk-0.1.3.tar.gz.

File metadata

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

File hashes

Hashes for stele_sdk-0.1.3.tar.gz
Algorithm Hash digest
SHA256 74019110fcfd297c6329779b7eea11da931dd3ceee27693a4bea17dc7adcfe42
MD5 df4819e5f3ac0812cb2f2f9ae8f05d08
BLAKE2b-256 65f9807b0d161e23f00d841b793ba37fc3de179fbe0901effbd4e90b8dbcab22

See more details on using hashes here.

Provenance

The following attestation bundles were made for stele_sdk-0.1.3.tar.gz:

Publisher: pypi-publish.yml on sincover/stele-dev

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

File details

Details for the file stele_sdk-0.1.3-py3-none-any.whl.

File metadata

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

File hashes

Hashes for stele_sdk-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 021316f31a40df6548008c5fd85654f974007bca6c49f587d6cc96495394db1f
MD5 82b18c7a281d5a96da8bee349dfbd08c
BLAKE2b-256 4a0e248710f980452f2f7a47c52360e1516504c6da96c0f0c83ddf9364e9da2e

See more details on using hashes here.

Provenance

The following attestation bundles were made for stele_sdk-0.1.3-py3-none-any.whl:

Publisher: pypi-publish.yml on sincover/stele-dev

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