EERRAA // SECURITY

Secrets stay secret.

Here is how EERRAA handles keys, identity, and actions. Facts about how the system works, not badges we have not earned. When something matters to you, you can read the code and host it yourself.

EERRAA is in beta. This page describes real mechanisms in the software, not a formal certification. If you need a security review, a DPA, or on-prem, talk to us.

HOW IT WORKS

01SECRETS ENCRYPTED AT REST

Model keys and every per-user credential are encrypted with Fernet before they touch the database. They are decrypted only in memory, at the moment a tool call needs them.

02THE VAULT NEVER REACHES THE MODEL

Per-user credentials are injected into tool auth as placeholders. The raw secret is substituted server-side, at call time. The model sees the placeholder, never the value.

03BRING YOUR OWN MODEL KEY

Your model provider key is yours. EERRAA never sees your model spend and never proxies your tokens through a shared account. No working key means chat is refused, not silently rerouted.

04SSRF-GUARDED WEBHOOKS

Custom tools call out over HTTP through an SSRF guard that blocks internal and link-local addresses, so a crafted tool target cannot reach into your private network.

05SIGNED PER-USER IDENTITY

In signed mode, each user context is HMAC-SHA256 signed over canonical JSON with a fresh timestamp and a 5-minute window. It is tamper-proof, and it gates private uploads, the vault, per-user OAuth, and the tasks panel.

06STRICT PER-ORG ISOLATION

One install runs many agents across many orgs and projects. Data, keys, knowledge, and sessions are scoped per org. Tenants do not see across the boundary.

07WRITE ACTIONS PAUSE FOR APPROVAL

Tools that change state can require an explicit Approve or Cancel before they fire. The confirmation surfaces in the widget, so nothing destructive happens without a human saying yes.

08RATE LIMITS AND A BUDGET STOP

Per-project rate limits and a per-user chat throttle blunt abuse. A monthly token budget is a hard stop: once it is hit, chat returns a budget error instead of spending more.

AUTH AND PROVISIONING

MCP OAuth 2.1

Remote MCP servers connect over OAuth 2.1 with authorization_code and PKCE. Connect once as admin (shared), or let each end user connect their own account from the widget (per-user).

Server-to-server provisioning

Credentials can be provisioned from your backend with a signed identity over PUT /v1/credentials. The secret arrives server-side and is encrypted immediately, never exposed to the browser or the model.

LIMITS THAT PROTECT YOU

Credential caps

50 credentials per user, 8 KB per value. Names constrained to a safe character set.

Knowledge caps

PDF, TXT, and MD only, up to 50 MB, 20 documents per user, processed and scoped per audience.

Signature window

A signed identity is valid for 300 seconds. Expired or altered signatures are rejected.

The strongest control is ownership.
Self-host EERRAA and every byte stays on your infrastructure.