Research-Stack/4-Infrastructure/infra/ene-rds
allaun e6e241746c fix(deps): audit-driven updates across npm, pnpm, cargo, pip
JavaScript lockfiles:
- bezier-kit: vitest 3.2.4→3.2.6, @babel/core 7.29.0→7.29.7,
  esbuild 0.27.7→0.27.2, vite 6.4.2→6.4.3
- parametric-learn: vite 8.0.10→8.0.16, form-data 4.0.5→4.0.6
- lytenyte-storage + cluster-dashboard/frontend: vite 6.4.2→6.4.3

Cargo lockfiles:
- leechy-py: pyo3 0.28.3→0.29.0 (RUSTSEC-2026-0176/0177)
- stract: rkyv 0.7.45→0.7.46 (RUSTSEC-2026-0001)
- rs-surface, ene-rds, ene-session-sync: postgres updates
- shared-data/namidb: aws-lc-sys 0.37.1→0.41.0

Python:
- whoogle-search: cryptography 46.0.7→48.0.1 (GHSA-537c-gmf6-5ccf)

Remaining blocked advisories documented in commit body metadata;
require upstream releases or source-level migrations.
2026-06-20 19:00:38 -05:00
..
crates refactor(infra): decommission AWS deployment artifacts 2026-06-19 22:42:34 -05:00
systemd fix(infra): point default RDS host to neon server Tailscale IP 2026-06-18 23:28:46 -05:00
Cargo.lock fix(deps): audit-driven updates across npm, pnpm, cargo, pip 2026-06-20 19:00:38 -05:00
Cargo.toml Stabilize ENE API and context shim 2026-05-25 21:06:46 -05:00
README.md refactor(infra): decommission AWS deployment artifacts 2026-06-19 22:42:34 -05:00

ENE RDS — Rust workspace replacing the Python RDS stack

Workspace structure

Crate Purpose Replaces
ene-rds-core Shared PostgreSQL client, DSN builder, vec_to_pgtext, receipts ene_rds_* base connection logic
ene-rds-wiki Wiki CRUD + full-text search + revision tracking ene_rds_wiki_layer.py
ene-rds-ephemeral EphemeralNode thermal zones, tasks, receipts, scars, metrics ene_rds_ephemeral_node.py
ene-rds-chat Chat session ingestion, keyword/semantic search ene_rds_chat_log.py
ene-api Axum HTTP server mounting all surfaces on :3000 ene_chat_api.py + FastAPI
ene-sync Polls opencode.db SQLite → upserts into RDS chat tables ene_claw_sync.py

Build

cd 4-Infrastructure/infra/ene-rds
cargo build --release

Run

Initialize schema only

export RDS_PASSWORD=...
./target/release/ene-sync init-schema

One-shot sync

./target/release/ene-sync sync --embed

Watch mode (polls every 60s)

./target/release/ene-sync watch --interval 60 --embed

API server

./target/release/ene-api
# → http://0.0.0.0:3000/health
# → http://0.0.0.0:3000/sessions
# → http://0.0.0.0:3000/search?q=thermal+zone
# → http://0.0.0.0:3000/wiki/search?q=compression
# → http://0.0.0.0:3000/ephemeral/nodes?zone=hot

Environment variables

Variable Default Purpose
RDS_HOST localhost PostgreSQL host
RDS_PORT 5432 PostgreSQL port
RDS_USER postgres PostgreSQL user
RDS_PASSWORD Password or IAM token
RDS_DB postgres Database name
OLLAMA_HOST http://localhost:11434 Ollama embedding endpoint
OLLAMA_EMBED_MODEL nomic-embed-text Embedding model

What changed from Python

  • No psycopg2 runtime dependency — single static binary
  • tokio-postgres with with-serde_json-1 feature for native JSONB support
  • pgvector vectors passed as '[0.1,0.2,...]'::vector text format
  • Ollama embeddings via reqwest instead of requests
  • SQLite source via rusqlite with bundled bindings
  • Axum replaces FastAPI for the API server

Python bridge (optional)

The standalone bridge_wrapper.py still exists for calling legacy Python modules that have not been ported. The Rust surfaces do not depend on it.