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.0.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.0-py3-none-any.whl (11.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: stele_sdk-0.1.0.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.0.tar.gz
Algorithm Hash digest
SHA256 ed03c46e8e75f7d7481758610f966dc32f67c15511b733273bb006b288e3aac2
MD5 7f265f9d5ea5f3d1b2ba9651f3c69fd8
BLAKE2b-256 36164124191f8096c5f1fd1c34bc69f6baa01420e9171d37c0d8cdc7337a0d3b

See more details on using hashes here.

Provenance

The following attestation bundles were made for stele_sdk-0.1.0.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.0-py3-none-any.whl.

File metadata

  • Download URL: stele_sdk-0.1.0-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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9f3221eb7353546d34e07224d99dbe04a21d4d6cab0a46ec5f525ce1be2eea63
MD5 a33f3af45f78493c3a1373e282d169c0
BLAKE2b-256 a0f44ad5ed9ce93a90df8e3bff15a0cae433af51a75dda708d88f4128e5b7957

See more details on using hashes here.

Provenance

The following attestation bundles were made for stele_sdk-0.1.0-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