ememdev 0.0.9__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: ememdev
|
|
3
|
+
Version: 0.0.9
|
|
4
|
+
Summary: Python client for emem.dev, the agent-native Earth memory protocol
|
|
5
|
+
Project-URL: Homepage, https://emem.dev
|
|
6
|
+
Project-URL: Repository, https://github.com/Vortx-AI/emem
|
|
7
|
+
Project-URL: Documentation, https://emem.dev/agents.md
|
|
8
|
+
Project-URL: Issues, https://github.com/Vortx-AI/emem/issues
|
|
9
|
+
Author-email: Vortx AI Private Limited <avijeet@vortx.ai>
|
|
10
|
+
License: Apache-2.0
|
|
11
|
+
Keywords: content-addressed,earth-observation,ed25519,geospatial,mcp,satellite
|
|
12
|
+
Classifier: Development Status :: 3 - Alpha
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: Intended Audience :: Science/Research
|
|
15
|
+
Classifier: License :: OSI Approved :: Apache Software License
|
|
16
|
+
Classifier: Programming Language :: Python :: 3
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
22
|
+
Classifier: Topic :: Scientific/Engineering :: GIS
|
|
23
|
+
Requires-Python: >=3.9
|
|
24
|
+
Requires-Dist: httpx<1.0,>=0.27
|
|
25
|
+
Description-Content-Type: text/markdown
|
|
26
|
+
|
|
27
|
+
# ememdev: Python client for emem.dev
|
|
28
|
+
|
|
29
|
+
<!-- mcp-name: io.github.Vortx-AI/emem -->
|
|
30
|
+
|
|
31
|
+
Thin, typed Python client for the [emem.dev](https://emem.dev) Earth memory
|
|
32
|
+
protocol. Wraps the public REST surface (96 documented paths, 93 under
|
|
33
|
+
`/v1/*`) in a single `Client` class that returns parsed JSON verbatim. Every
|
|
34
|
+
ed25519-signed receipt and content-addressed CID is preserved for
|
|
35
|
+
citation and offline verification.
|
|
36
|
+
|
|
37
|
+
## Install
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
pip install ememdev
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
The distribution is named `ememdev`; the import package is `emem` (so
|
|
44
|
+
`pip install ememdev`, then `from emem import Client`). To work from a
|
|
45
|
+
checkout instead:
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
pip install -e sdks/emem-py
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Requires Python 3.9+. The only runtime dependency is
|
|
52
|
+
[`httpx`](https://www.python-httpx.org/).
|
|
53
|
+
|
|
54
|
+
## Quick start
|
|
55
|
+
|
|
56
|
+
```python
|
|
57
|
+
from emem import Client
|
|
58
|
+
|
|
59
|
+
with Client() as em:
|
|
60
|
+
cell = em.locate("Mount Fuji")["cell64"]
|
|
61
|
+
facts = em.recall(cell, bands=["copdem30m.elevation_mean"])
|
|
62
|
+
print(facts["facts"][0]["value"])
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Async
|
|
66
|
+
|
|
67
|
+
```python
|
|
68
|
+
import asyncio
|
|
69
|
+
from emem import AsyncClient
|
|
70
|
+
|
|
71
|
+
async def main() -> None:
|
|
72
|
+
async with AsyncClient() as em:
|
|
73
|
+
out = await em.ask("How tall is Mount Everest?")
|
|
74
|
+
print(out["answer"])
|
|
75
|
+
|
|
76
|
+
asyncio.run(main())
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## Configuration
|
|
80
|
+
|
|
81
|
+
| Env var | Default | Effect |
|
|
82
|
+
|-----------------------|----------------------|---------------------------------------------|
|
|
83
|
+
| `EMEM_BASE_URL` | `https://emem.dev` | Responder root; point at a self-hosted node |
|
|
84
|
+
| `EMEM_TIMEOUT_SECS` | `180` | HTTP timeout (matches gateway timeout) |
|
|
85
|
+
|
|
86
|
+
You can also pass `base_url=` and `timeout=` directly to the constructor.
|
|
87
|
+
|
|
88
|
+
## Surface coverage
|
|
89
|
+
|
|
90
|
+
Geocoder + read primitives, physics solvers, boring lat/lng shortcuts, and
|
|
91
|
+
introspection — see the inline docstring on `emem.client` for the full
|
|
92
|
+
endpoint → method mapping.
|
|
93
|
+
|
|
94
|
+
## Receipts
|
|
95
|
+
|
|
96
|
+
Every non-introspection response carries a `receipt` block with:
|
|
97
|
+
|
|
98
|
+
- `responder_pubkey` (ed25519 base32-nopad-lowercase)
|
|
99
|
+
- `signature_b32` (ed25519 over the canonical CBOR preimage)
|
|
100
|
+
- `merkle_root` (BLAKE3 over the fact CIDs)
|
|
101
|
+
- `fact_cids[]` (the BLAKE3 CIDs of every fact returned)
|
|
102
|
+
|
|
103
|
+
To cite an answer: quote `receipt.fact_cids[0]` and the responder pubkey.
|
|
104
|
+
The signature can be verified offline against the public key at
|
|
105
|
+
`https://emem.dev/.well-known/emem.json`; no callback to the responder is
|
|
106
|
+
required.
|
|
107
|
+
|
|
108
|
+
## License
|
|
109
|
+
|
|
110
|
+
Apache-2.0. Same as the upstream protocol.
|