Model orchestration · BYOK
Pick model, temperature and response format per project. Bring your own key for any provider — OpenAI, Anthropic, Google and more. Keys stay yours; swap providers without a rewrite.
Model routing, retrieval, tools, memory, safety and observability — configured as data per project, never forked into branched code.
Pick model, temperature and response format per project. Bring your own key for any provider — OpenAI, Anthropic, Google and more. Keys stay yours; swap providers without a rewrite.
Ingest documents, chunk and embed with pgvector, and retrieve the right context automatically — scoped strictly to the tenant.
Register REST / GraphQL endpoints the LLM can call. Storm-protected with dedup, per-tool caps and transient-error retry.
Stateful threads with full turn history. Bring your own conversation id with externalThreadId — no UUID round-trips.
Prompt-injection detection, compliance guard and incident logging. Defense in depth — no single failure mode takes the system down.
Every row, read and cache key is scoped by tenant. There is no global data path that bypasses isolation.
Pluggable behaviour modules — cost, performance, eco-mode, safety — register on named lifecycle hooks without forking the core.
Versioned system prompts and per-project personality, composed into the right prompt for each intent.
Per-tenant quota and rate limiting keep noisy neighbours and runaway costs contained automatically.
A typed Node SDK, raw HTTP, streaming, and an MCP server for editor-native admin. Every response follows one envelope: { status, data } on success, a closed error enum on failure.
// Token-by-token streaming for await (const chunk of egoz.askStreamIter({ message: 'Check my order status', externalThreadId: 'conv:abc123', headers: { authorization: userToken }, })) { process.stdout.write(chunk.delta); }
# Any language, one endpoint curl -X POST https://api.egoz.dev/egoz/ask \ -H "X-API-Key: $EGOZ_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "tenantId": "...", "message": "Hi" }'
/askNothing touches data before EgoZ knows whose isolated path it's on.
Config, enabled tools, knowledge-base scope, prompt overrides, extensions.
Prior turns from the thread — by EgoZ id or externalThreadId.
vanilla / RAG / tools / RAG+tools — cheap, deterministic, language-agnostic.
History + retrieved chunks + tool catalog, exactly as the intent needs.
The right model and system prompt for the classified intent.
Dedup, per-tool caps, error classification, transient retry, iteration cap.
Message, token usage, intent and audit flags — then a rich response payload.