Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,8 @@ jobs:
- uses: dtolnay/rust-toolchain@stable
- uses: astral-sh/setup-uv@v5

- name: Sync (base runtime + dev/embeddings/torch/mcp/langchain/llama-index/mem0/image extras)
run: uv sync --extra dev --extra embeddings --extra torch --extra mcp --extra langchain --extra llama-index --extra mem0 --extra image
- name: Sync (base runtime + dev/embeddings/torch/mcp/langchain/llama-index/mem0/image/cloud extras)
run: uv sync --extra dev --extra embeddings --extra torch --extra mcp --extra langchain --extra llama-index --extra mem0 --extra image --extra cloud

- name: Lint
run: uv run ruff check .
Expand Down
7 changes: 5 additions & 2 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,10 @@ tests/ local SDK suite + import-boundary guard
or pass `embedder=`). Built-in text embedding is opt-in: `[embeddings]` (`onnxruntime` +
`transformers`, torch-free) and `[torch]` (`sentence-transformers` — the PyTorch fallback, the
`clip` preset, and `device="mps"`); other extras are `[image]`, `[onnx-export]`, `[mcp]`,
`[langchain]`, `[llama-index]`, `[mem0]`, `[gpu]`, and `[all]`. The patched TurboVec core is
`[langchain]`, `[llama-index]`, `[mem0]`, `[gpu]`, `[cloud]` (the first-party managed-cloud
client `lodedb.cloud` + the `lodedb cloud` CLI, over the bundled native transfer core; the
extra adds only `httpx` + `pynacl`, both reached lazily and never on a plain import — the
extra is deliberately NOT part of `[all]`), and `[all]`. The patched TurboVec core is
vendored under `third_party/turbovec/` and bundled into the wheel as `lodedb._turbovec` — not a
PyPI dependency. The embedding runtimes load lazily (only when a preset/CLIP backend is built),
so a plain `import lodedb` must not import `onnxruntime` / `transformers` /
Expand Down Expand Up @@ -84,7 +87,7 @@ tests/ local SDK suite + import-boundary guard
## Develop

```bash
uv sync --extra dev --extra embeddings --extra torch --extra mcp --extra langchain --extra llama-index --extra mem0 # build venv (compiles TurboVec)
uv sync --extra dev --extra embeddings --extra torch --extra mcp --extra langchain --extra llama-index --extra mem0 --extra cloud # build venv (compiles TurboVec)
uv run pytest -q # run the suite
uv run ruff check . # lint (line-length 100)
```
Expand Down
30 changes: 30 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,36 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

### Added

- **The OreCloud managed-cloud client, first-party, as the `[cloud]` extra.**
`lodedb.cloud` ships in this package: `Client` (one credential, one bound
org/environment, per-user store handles), `connect`/`CloudStore` (one end
user's store over HTTPS, duck-typing the local verb surface), the transfer
verbs (`push`/`pull`/`sync`/`status`/`verify`/`keys`) on a native transfer
core bundled into the extension as `lodedb._turbovec.cloud` (one
commit-format implementation shared with the engine — the new
`crates/lodedb-cloud-core`, which also learns the 1.3.2 `tvvf` rescore
sidecar so rescore stores transfer completely), and the full `lodedb
cloud` CLI (login, tokens, store/environment/org management, transfer,
agent scaffolding). The extra installs only the client's dependencies
(`httpx`, `pynacl`); everything cloud resolves lazily, so a plain
`import lodedb` stays network-free (guarded by
`tests/test_import_boundary.py`). There is no separate cloud package.
- `LodeDB.cloud("user-42")` opens a managed-cloud store through the same
class as a local path, joining the `open_readonly`/`open_vector_store`
alternate-constructor family: a bare store id resolves its
org/environment from the credential (`token=`,
`ORECLOUD_TOKEN`/`ORECLOUD_HOST`, or `lodedb cloud login`), and the
`"org/environment/store"` triple and full `orecloud://` URLs are accepted
too. The call returns the cloud store handle (same
`add`/`search`/`get`/`remove` verbs over HTTPS). For config-driven code,
the plain constructor also dispatches the explicit URL form —
`LodeDB("orecloud://org/environment/store")` — through the same funnel.
Local-only construction options (`model=`, `read_only=`, ...) are rejected
on cloud targets with a targeted error, and a cloud target without the
`[cloud]` extra's dependencies raises the install hint.

## [1.3.2] - 2026-07-16

### Added
Expand Down
Loading
Loading