ememdev 0.0.9__tar.gz

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,83 @@
1
+ # Rust build artefacts
2
+ /target/
3
+ **/target/
4
+
5
+ # Local persisted data + secrets
6
+ /var/
7
+ **/var/emem/
8
+ **/var/demos/
9
+ *.secret.b32
10
+ identity.secret.b32
11
+ .cloudflared/
12
+ acme.cache/
13
+ tls/
14
+ # Runtime cruft — when EMEM_DATA=:memory: is misinterpreted as a path
15
+ # string, a literal :memory: directory is created. Untracked but
16
+ # silenced from `git status` so it doesn't read as repo state.
17
+ /:memory:/
18
+ **/:memory:/
19
+
20
+ # Editor / OS
21
+ .DS_Store
22
+ .idea/
23
+ .vscode/
24
+ *.swp
25
+ *.swo
26
+
27
+ # Node / Vite — the old TS/Vite SPA at repo root was retired in 0.0.6;
28
+ # the live https://emem.dev is served by the Rust `emem-server` binary.
29
+ # These patterns prevent the scaffolding from sneaking back in at root.
30
+ # sdks/emem-ts/ has its own legitimate package.json / tsconfig.json /
31
+ # src/ — those are NOT matched here because patterns are anchored to /.
32
+ node_modules/
33
+ dist/
34
+ dist-server/
35
+ .parcel-cache/
36
+ /index.html
37
+ /package.json
38
+ /package-lock.json
39
+ /vite.config.ts
40
+ /tsconfig.json
41
+ /tsconfig.server.json
42
+ /src/
43
+ /server/
44
+ /tests/*.test.ts
45
+
46
+ # Artifacts (screenshots, generated images) — keep folder, ignore contents
47
+ artifacts/*
48
+ !artifacts/.gitkeep
49
+
50
+ # Python ad-hoc tools
51
+ __pycache__/
52
+ *.pyc
53
+ .venv/
54
+
55
+ # Local Claude / IDE state
56
+ .claude/
57
+ CLAUDE.md
58
+ registry_claude.md
59
+
60
+ # Env files
61
+ .env
62
+ .env.*
63
+ !.env.example
64
+
65
+ # Logs + coverage
66
+ *.log
67
+ npm-debug.log*
68
+ yarn-debug.log*
69
+ yarn-error.log*
70
+ coverage/
71
+ .nyc_output/
72
+ notes/
73
+
74
+ # fastembed-rs ONNX model cache (HF hub mirror, ~400 MB)
75
+ .fastembed_cache/
76
+ scripts/eval/results/q*.json
77
+
78
+ # mdbook output for the /docs/ site. The book is built at deploy/CI time
79
+ # (see scripts/redeploy.sh and .github/workflows/ci.yml) and baked into
80
+ # the binary via `include_dir!("docs/book")`. Committing it would churn the
81
+ # repo every docs edit (hashed asset filenames) and add ~5 MB; build it
82
+ # fresh on each CI run instead.
83
+ docs/book/
ememdev-0.0.9/PKG-INFO ADDED
@@ -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.
@@ -0,0 +1,84 @@
1
+ # ememdev: Python client for emem.dev
2
+
3
+ <!-- mcp-name: io.github.Vortx-AI/emem -->
4
+
5
+ Thin, typed Python client for the [emem.dev](https://emem.dev) Earth memory
6
+ protocol. Wraps the public REST surface (96 documented paths, 93 under
7
+ `/v1/*`) in a single `Client` class that returns parsed JSON verbatim. Every
8
+ ed25519-signed receipt and content-addressed CID is preserved for
9
+ citation and offline verification.
10
+
11
+ ## Install
12
+
13
+ ```bash
14
+ pip install ememdev
15
+ ```
16
+
17
+ The distribution is named `ememdev`; the import package is `emem` (so
18
+ `pip install ememdev`, then `from emem import Client`). To work from a
19
+ checkout instead:
20
+
21
+ ```bash
22
+ pip install -e sdks/emem-py
23
+ ```
24
+
25
+ Requires Python 3.9+. The only runtime dependency is
26
+ [`httpx`](https://www.python-httpx.org/).
27
+
28
+ ## Quick start
29
+
30
+ ```python
31
+ from emem import Client
32
+
33
+ with Client() as em:
34
+ cell = em.locate("Mount Fuji")["cell64"]
35
+ facts = em.recall(cell, bands=["copdem30m.elevation_mean"])
36
+ print(facts["facts"][0]["value"])
37
+ ```
38
+
39
+ ## Async
40
+
41
+ ```python
42
+ import asyncio
43
+ from emem import AsyncClient
44
+
45
+ async def main() -> None:
46
+ async with AsyncClient() as em:
47
+ out = await em.ask("How tall is Mount Everest?")
48
+ print(out["answer"])
49
+
50
+ asyncio.run(main())
51
+ ```
52
+
53
+ ## Configuration
54
+
55
+ | Env var | Default | Effect |
56
+ |-----------------------|----------------------|---------------------------------------------|
57
+ | `EMEM_BASE_URL` | `https://emem.dev` | Responder root; point at a self-hosted node |
58
+ | `EMEM_TIMEOUT_SECS` | `180` | HTTP timeout (matches gateway timeout) |
59
+
60
+ You can also pass `base_url=` and `timeout=` directly to the constructor.
61
+
62
+ ## Surface coverage
63
+
64
+ Geocoder + read primitives, physics solvers, boring lat/lng shortcuts, and
65
+ introspection — see the inline docstring on `emem.client` for the full
66
+ endpoint → method mapping.
67
+
68
+ ## Receipts
69
+
70
+ Every non-introspection response carries a `receipt` block with:
71
+
72
+ - `responder_pubkey` (ed25519 base32-nopad-lowercase)
73
+ - `signature_b32` (ed25519 over the canonical CBOR preimage)
74
+ - `merkle_root` (BLAKE3 over the fact CIDs)
75
+ - `fact_cids[]` (the BLAKE3 CIDs of every fact returned)
76
+
77
+ To cite an answer: quote `receipt.fact_cids[0]` and the responder pubkey.
78
+ The signature can be verified offline against the public key at
79
+ `https://emem.dev/.well-known/emem.json`; no callback to the responder is
80
+ required.
81
+
82
+ ## License
83
+
84
+ Apache-2.0. Same as the upstream protocol.
@@ -0,0 +1,50 @@
1
+ [build-system]
2
+ requires = ["hatchling>=1.18"]
3
+ build-backend = "hatchling.build"
4
+
5
+ [project]
6
+ name = "ememdev"
7
+ version = "0.0.9"
8
+ description = "Python client for emem.dev, the agent-native Earth memory protocol"
9
+ readme = "README.md"
10
+ requires-python = ">=3.9"
11
+ license = { text = "Apache-2.0" }
12
+ authors = [
13
+ { name = "Vortx AI Private Limited", email = "avijeet@vortx.ai" },
14
+ ]
15
+ keywords = [
16
+ "earth-observation",
17
+ "geospatial",
18
+ "satellite",
19
+ "mcp",
20
+ "ed25519",
21
+ "content-addressed",
22
+ ]
23
+ classifiers = [
24
+ "Development Status :: 3 - Alpha",
25
+ "Intended Audience :: Developers",
26
+ "Intended Audience :: Science/Research",
27
+ "License :: OSI Approved :: Apache Software License",
28
+ "Programming Language :: Python :: 3",
29
+ "Programming Language :: Python :: 3.9",
30
+ "Programming Language :: Python :: 3.10",
31
+ "Programming Language :: Python :: 3.11",
32
+ "Programming Language :: Python :: 3.12",
33
+ "Programming Language :: Python :: 3.13",
34
+ "Topic :: Scientific/Engineering :: GIS",
35
+ ]
36
+ dependencies = [
37
+ "httpx>=0.27,<1.0",
38
+ ]
39
+
40
+ [project.urls]
41
+ Homepage = "https://emem.dev"
42
+ Repository = "https://github.com/Vortx-AI/emem"
43
+ Documentation = "https://emem.dev/agents.md"
44
+ Issues = "https://github.com/Vortx-AI/emem/issues"
45
+
46
+ [tool.hatch.build.targets.wheel]
47
+ packages = ["src/emem"]
48
+
49
+ [tool.hatch.build.targets.sdist]
50
+ include = ["src/emem", "README.md", "LICENSE"]