Use casesData and engineering

RAG over private corpora

embed and the rag/db surface, with capability isolation between the retrieval layer and everything else.

The problem

Retrieval-augmented generation needs chunking, embedding, storage, and a guarded generation step. Teams often split retrieval (Python + pgvector) from generation (Node + OpenAI SDK), which complicates secret handling and makes "this component never saw the raw document" hard to argue.

Why Ecko

embed builtin
Embed text with the same provider configuration as ai, without a separate embedding client library.
rag and db packages
Vector search and document storage as first-class packages, composable with the same grant model as everything else.
Split grants
Retrieval with grant [net, fs:read]; answer synthesis with grant [] reading only returned chunks.

In practice

ask.ecko
import retrieve grant [net, fs:read]
import answer grant []

fn ask(q: str) -> str {
  chunks = retrieve.search(q)
  answer.from_chunks(chunks)
}

Further reading

Try it on your workload.