seam-client
Build custom agents with SEAM-backed long-term memory without embedding the private SEAM runtime in your application.
seam-client is the public, Apache-2.0 Python SDK. It provides:
- synchronous and asynchronous clients
remember,recall, and context assembly- a framework-neutral prepare/complete turn lifecycle
- inspectable rendered context and opaque recalled-memory metadata
- typed, opaque response models
- bearer-token authentication and explicit error types
It does not contain the private SEAM runtime, MIRL implementation, HS/1 surface codecs, storage engine, ranking logic, benchmark holdouts, or model orchestration internals.
Install
python -m pip install seam-client
Version 2.0.0 adds the structured agent-turn lifecycle. To install directly from the public source repository instead:
python -m pip install \
"seam-client @ git+https://github.com/BlackhatShiftey/Seam_Runtime.git@main#subdirectory=sdk"
Use it in an agent
from seam_client import AgentMemory, SeamClient
client = SeamClient(
base_url="http://127.0.0.1:8765",
api_key="your-seam-token",
)
memory = AgentMemory(
client=client,
namespace="research-agent",
session_id="thread-42",
agent_id="researcher",
)
messages = [{"role": "user", "content": "What did we decide about licensing?"}]
turn = memory.prepare_turn(
messages,
user_input=messages[-1]["content"],
)
# Call your preferred model/provider with `turn.messages`.
assistant_output = "We separated the public SDK from the private runtime."
receipt = memory.complete_turn(turn, assistant_output)
AgentMemory does not choose or call a model. It supplies memory hooks that can
wrap your own OpenAI, Anthropic, local-model, or custom agent loop.
turn.context contains the rendered context. turn.memories contains the
typed, opaque memory records behind it, so an agent can log scores or build
citations without access to SEAM internals. prepare_turn copies the supplied
message mappings and never mutates the caller's list.
Use memory_query= when the best retrieval query differs from the raw user
input:
turn = memory.prepare_turn(
messages,
user_input="Compare those approaches.",
memory_query="licensing architecture alternatives",
)
The 0.1 hooks remain available: before_turn, after_turn,
system_message, and augment_messages.
Direct client
from seam_client import SeamClient
with SeamClient.from_env() as seam:
seam.remember(
"The operator prefers evidence-backed answers.",
namespace="my-agent",
session_id="thread-42",
)
recalled = seam.recall(
"answer style",
namespace="my-agent",
session_id="thread-42",
)
for memory in recalled.memories:
print(memory.text, memory.score)
Environment variables:
SEAM_BASE_URL— defaults tohttp://127.0.0.1:8765SEAM_API_TOKEN— optional bearer token for the configured server
Async client
from seam_client import AsyncAgentMemory, AsyncSeamClient
async with AsyncSeamClient.from_env() as client:
memory = AsyncAgentMemory(
client=client,
namespace="async-agent",
session_id="thread-7",
)
turn = await memory.prepare_turn(
[{"role": "user", "content": "What should I remember?"}],
user_input="What should I remember?",
)
# assistant_output = await your_model(turn.messages)
# await memory.complete_turn(turn, assistant_output)
Partitions
namespaceisolates one agent or application from another.session_idisolates a specific conversation or run.scopeis semantic and defaults tothread. Supported server scopes areephemeral,global,org,project,thread, anduser.
The server maps public partitions into an SDK-only internal namespace. Public
responses use opaque rcpt_... and mem_... identifiers.
Hosted access
The SDK is public. A hosted SEAM endpoint is not implied by installing it. Use a SEAM server URL and token you have been given, or run an authorized local SEAM server. Hosted access remains separately provisioned.
Metadata
Release files for seam-client 2.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| seam_client-2.0.0.tar.gz | 17.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| seam_client-2.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 31.4 kB
Release files / seam_client-2.0.0.tar.gz
| Download URL | seam_client-2.0.0.tar.gz |
|---|---|
| Size | 17.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
37af38068982fa44d54ab0a5ed696319d4711a6d8a18dbf004a1123a2aac7096
|
|
BLAKE2b-256 checksum How to use checksums |
e35aa9672e6a166d11a03bced5ca9750ec1759ebfe2b65dc90225ae07b41403e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 28, 2026.
Transparency logRelease files / seam_client-2.0.0-py3-none-any.whl
| Download URL | seam_client-2.0.0-py3-none-any.whl |
|---|---|
| Size | 14.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
03585afd5e6e42168cf24e47c703b8bf8a77a72b92e56b4efdb9421811cc372f
|
|
BLAKE2b-256 checksum How to use checksums |
bf46583d00f0723759a2293813182def008da110f3397a56e56bee2ff7cea584
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 28, 2026.
Transparency log