Python SDK for the Daimon protocol — sovereign personal AI
Project description
daimon — Python SDK
Thin Python client over the Daimon daemon's Unix-socket JSON-RPC surface
(SPEC §6.1). Mirrors the Go cmd/daimon CLI's wire-level behaviour: one
connection per RPC, no pipelining, JSON-RPC 2.0.
Status: v0.1.0 — first GA release. Identity, memory, provider (list / invoke / stream), and activity verbs all surfaced.
Install
From PyPI:
pip install daimon-protocol
From a checkout of the Daimon repo:
pip install -e sdk/python
The PyPI distribution name is
daimon-protocolbecause the unqualifieddaimonname on PyPI is held by an unrelated dormant package, anddaimon-sdk/daimon-clientbelong to other active projects. The import name remainsdaimon—from daimon import Clientworks regardless of how you installed it.
Use
The SDK assumes a running daimon daemon on the local machine, reachable via
the same socket path the Go CLI uses ($DAIMON_HOME/daimon.sock, with the
same long-path fallback rules). Start the daemon first:
daimon unlock
Then:
from daimon import Client
client = Client() # resolves $DAIMON_HOME
print(client.identity.get()) # {"did": "did:key:..."}
# memory.Kind.Valid() accepts: "fact", "preference", "task", "observation"
mid = client.memory.write(kind="fact", content="the sky is blue")
print(mid) # {"id": "01K..."}
mem = client.memory.read(mid["id"])
hits = client.memory.search("sky") # [{...mem, "score": 0.7}, ...]
all_mems = client.memory.list() # search with empty query
# provider verbs
providers = client.provider.list()
env = client.provider.invoke(
provider="ollama",
model="llama3.2:latest",
messages=[{"role": "user", "content": "hi"}],
)
print(env["response"]["content"])
# streaming — yields delta strings; final envelope on .final
stream = client.provider.stream(
provider="ollama",
model="llama3.2:latest",
messages=[{"role": "user", "content": "count to 3"}],
)
for delta in stream:
print(delta, end="", flush=True)
print()
print("usage:", stream.final["response"]["usage"])
# activity verbs (audit trail)
client.activity.append(kind="custom.event", payload={"n": 1})
entries = client.activity.query(limit=20)
result = client.activity.verify() # {"verified": N, "ok": True}
Errors
from daimon import DaemonNotRunning, DaemonLocked, RPCError
try:
client.memory.write(kind="fact", content="x")
except DaemonNotRunning:
# daimon binary isn't serving on this $DAIMON_HOME
...
except DaemonLocked:
# daemon is running but `daimon unlock` hasn't been called
...
except RPCError as e:
# any other JSON-RPC error from the daemon
print(e.code, e.message, e.data)
Development
cd sdk/python
pip install -e .[dev]
pytest
The test suite uses a stub Unix-socket daemon (no real keys, no real storage) plus optional smoke tests against a live daimon when one is running.
See also
- TypeScript SDK — sister SDK, same wire shape, async-iterator streaming surface.
examples/streaming— cross-language streaming reference: both SDKs round-trip token deltas through one daemon, audit chain verified three ways.CHANGELOG.md— release notes per version.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file daimon_protocol-0.2.0.dev0.tar.gz.
File metadata
- Download URL: daimon_protocol-0.2.0.dev0.tar.gz
- Upload date:
- Size: 28.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
861a02d540f83a2b9c2d6dbfc0b31f3e1ecf2fe716403230a345bedd588433fc
|
|
| MD5 |
8b7076a5a2531527e000d58fc2001c93
|
|
| BLAKE2b-256 |
6b2301acb4ad245e4f9f2ff9b63c988b84db8666cd136f7e0031922c3583fa69
|
File details
Details for the file daimon_protocol-0.2.0.dev0-py3-none-any.whl.
File metadata
- Download URL: daimon_protocol-0.2.0.dev0-py3-none-any.whl
- Upload date:
- Size: 21.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2f955d8e30e129533a5d8175d0c39287f02dc6e3c53e5d53ea42bab96ecb6887
|
|
| MD5 |
b017c955b1e46cdafbde2f065ba6c140
|
|
| BLAKE2b-256 |
218b255d0b71b6144b3b413e477d277130fc4d5d7e70796c3bc38a70db422eeb
|