SDK Reference
The Membase Python API at a glance (unibase-membase-sdk). Import everything from the top-level package:
from unibase_membase import Membase, WalletWallet
Section titled “Wallet”| Call | Returns | Notes |
|---|---|---|
Wallet.from_env() |
Wallet |
from MEMBASE_PRIVATE_KEY |
Wallet.from_key("0x…") |
Wallet |
from a raw private key |
Wallet.generate() |
Wallet |
fresh keypair |
wallet.address |
str |
the agent’s identity (0x…) |
agent = Membase(wallet, config=None, *, hub=None, server_url="")config— optionalConfig/ dict (see below); defaults otherwise.hub— inject a custom storage backend; defaults to the official Hub.server_url— set to enable metering / settlement via a Membase Server.agent.address— the wallet address.agent.close()— flush & release.
Memory — key-value
Section titled “Memory — key-value”agent.private() # → handle for this wallet's private domainhandle.set(key: str, value) # value: JSON-serializablehandle.get(key: str, *, author=None) # → value | Nonekey is a path-like string (e.g. "notes/today"). private() is a single-member domain — only this wallet can decrypt.
Memory — recall
Section titled “Memory — recall”agent.memory.ingest(turns=[{"role": "user", "content": "..."}], session_id=None, session_date=None) # distill turns (Recovery)agent.memory.recall(query: str, query_date: str, k: int = 10) # ranked candidates, no LLMagent.memory.answer(query: str, query_date: str) # NL answer + citations (one LLM call)ingest / answer need the recovery,runtime extras + an LLM key. query_date (ISO YYYY-MM-DD) scopes results to facts valid on that date.
Domains (shared memory)
Section titled “Domains (shared memory)”team = agent.create_domain(domain_id: str) # mint a domain keyteam.set(key, value); team.get(key, author=agent.address)
code, _ = agent.invite_to(team) # ECIES-wrapped keyhandle, _ = other_agent.accept_invite(code) # join the domainSee Domains & Encryption.
Cooperation (multi-agent)
Section titled “Cooperation (multi-agent)”The agent-direct protocol (signed logs, sessions, games) lives under unibase_membase.core.protocol and unibase_membase.games (rps, vote, auction, compare). For a server-mediated coordination API use Cooperation / MembaseClient. See Cooperation Protocol and examples/04_protocol.py.
Settlement (server-mediated)
Section titled “Settlement (server-mediated)”from unibase_membase.client import MembaseClientclient = MembaseClient(wallet=wallet, server_url="https://…")await client.settle_metering() # flush metered usage on-chain (ERC-8183)See Settlement.
Configuration
Section titled “Configuration”Pass a dict or Config instead of env vars (secrets stay in env):
from unibase_membase.client import MembaseClientclient = MembaseClient( wallet=Wallet.from_key(os.environ["MY_AGENT_KEY"]), config={"server": {"hub_url": "https://hub.membase.unibase.com"}, "runtime": {"reader_model": "gpt-4o"}},)Config.from_json("path.json") and Config.from_dict({...}) also work. Unknown keys raise (typos won’t pass silently).
Full, runnable examples:
examples/(grouped by layer: persistence → recovery → runtime → cooperation).