You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Auth / SDK errors
- Add AuthenticationError for 401/403; was misreported as ConnectionError
- _raise_for_status() helper replaces bare raise_for_status() everywhere
- AsyncRemoteClient._post also intercepts 401/403 before wrapping as ConnectionError
- Export AuthenticationError from valoricore.__init__
SDK / cluster parity
- Add 8 missing /v1/* routes to cluster_server.rs (memory upsert/search,
list nodes, version, timeline, snapshot save/restore/download)
- Fix broken SDK: all /v1/ paths now exist on both standalone and cluster
Search dimension validation
- engine.search_l2 / search_l2_ns reject wrong-dim queries with clear error
- Cluster path checks locked_dim() before converting to FxpVector
- Integration test added: test_search_dim_validated
Audit page JS crash
- API route returns [] (not error object) when node unreachable
- Client guards with Array.isArray before .map()
verify_log() in-process FFI
- Extract replay logic from valori-verify/main.rs into lib.rs as pub fn
- Expose verify_log_file() PyO3 function in valoricore-ffi
- verify_log() tries FFI first; falls back to subprocess with clear message
- pip users never need the valori-verify binary on PATH
Version unification
- pyproject.toml: dynamic = ["version"]; maturin reads from Cargo workspace
- Single source of truth: bump root Cargo.toml version, both server and
wheel stay in sync automatically
UI / DX
- npm ci everywhere (CONTRIBUTING, README, dev-setup.sh) for lockfile-exact installs
- Add ui/Dockerfile (3-stage: deps/builder/runner with standalone Next.js output)
- docker-compose: add valori-ui service
- Suppress urllib3 LibreSSL warning on import (cosmetic, not a real error)
E2E test + engine bug fixes
- e2e-test.yml: maturin develop (no glob), add Cargo cache, split steps
- Fix create_edge committer path: edge_id from live_state not engine.state
- Fix search committer path: read live_state not engine.state
- Both bugs caused MemoryClient graph ops and search to silently fail
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: README.md
+35-18Lines changed: 35 additions & 18 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -104,6 +104,10 @@ Every byte of state is recovered from the append-only, BLAKE3-chained event log
104
104
105
105
> **New contributor?**`bash dev-setup.sh` — one script installs Rust, the wasm32 target, Python SDK, and UI deps with OS detection and version gates. See [Build from Source](#build-from-source) and [CONTRIBUTING.md](CONTRIBUTING.md).
106
106
107
+
**Not writing code?** → [Option 2 — Web dashboard](#option-2--web-dashboard-no-code-60-seconds) is the fastest path. Point-and-click project management, no terminal after the first `docker compose up`.
108
+
109
+
**Writing code?** Pick a client:
110
+
107
111
**Which client should I use?**
108
112
109
113
| Client | Install / import | Use when |
@@ -191,7 +195,27 @@ print(db.get_state_hash())
191
195
192
196
The Rust kernel runs inside your Python process via PyO3 — no server, no Docker, no Rust toolchain needed.
### Option 2 — Web dashboard (no code, ~60 seconds)
199
+
200
+
The fastest path if you're not writing code — a full point-and-click UI over your Valori node.
201
+
202
+
```bash
203
+
docker compose up -d # start the node (port 3000)
204
+
cd ui && npm ci npm install && npm run devnpm install && npm run dev npm run dev # start the dashboard (port 3001)
205
+
# open http://localhost:3001
206
+
```
207
+
208
+
**What you get:**
209
+
-**Project manager home** — create named, isolated workspaces; each project gets its own node, port, and data directory under `~/.valori/projects/<name>/`
210
+
-**Persistent state** — opening a project auto-starts its node and restores all data; closing it writes a final snapshot and locks files at rest
211
+
-**Live activity** — count-up stats (records, nodes, edges), an activity heatmap, and a timeline of every committed event
212
+
-**No URL hardcoding** — the UI proxies to the node through Next.js API routes, so there's nothing to configure
213
+
214
+
The UI talks to the node server-side (Next.js API routes → node HTTP), so the node port never needs to be exposed to the browser directly. Safe to use behind a firewall.
### Option 6 — Web dashboard with persistent projects
288
-
289
-
```bash
290
-
cd ui && npm install && npm run dev # http://localhost:3001
291
-
```
292
-
293
-
Each **project** is an isolated, persistent workspace: its own node, port, and
294
-
data dir under `~/.valori/projects/<name>/`. The Home screen lists every project
295
-
(even when its node is stopped); opening one auto-starts its node and restores
296
-
state, and closing it writes a snapshot and locks the files at rest — they can
297
-
only be deleted from the UI. → [`docs/phases/phase-6-persistent-projects.md`](docs/phases/phase-6-persistent-projects.md)
298
311
299
312
---
300
313
@@ -327,11 +340,15 @@ Requires Rust 1.80+. For the Python FFI extension: `pip install maturin && matur
327
340
328
341
## Documentation
329
342
343
+
**[docs/README.md](docs/README.md)** — start here. Routes you by use case (trying it out / building an app / deploying / verifying / contributing) before listing the full reference index.
344
+
345
+
Key docs directly:
346
+
330
347
| Doc | What it covers |
331
348
|---|---|
332
-
|[docs/getting-started.md](docs/getting-started.md)|Full quickstart for all deployment modes |
333
-
|[docs/api-reference.md](docs/api-reference.md)| Complete HTTP API reference |
334
-
|[docs/python-reference.md](docs/python-reference.md)| Full Python SDK reference |
349
+
|[docs/getting-started.md](docs/getting-started.md)|First insert, search, collections, auth — all deployment modes |
350
+
|[docs/api-reference.md](docs/api-reference.md)| Complete HTTP API reference (all `/v1/` endpoints) |
351
+
|[docs/python-reference.md](docs/python-reference.md)| Full Python SDK reference — all four clients |
0 commit comments