Security
Two systems, two security models.
AI17Z is software you run on your own machine. Studio is this website: an optional service with a database of its own. They protect different things, so they are described separately.
Trust domains
Where the boundary is, and which way calls go.
Your agent runs entirely inside the local trust domain. The installation calls out when it needs something. Nothing outside connects in, and if Studio is unreachable AI17Z keeps running.
OwnerYouowner account on your machine
Local AI17ZAPI · worker · interface · Postgres, in Docker
- 01Characterpersona · voice · rules
- 02Memorysix scopes · explainable
- 03Modelgateway · fallback chain
- 04Browseryour own Chrome
- 05Toolspacetyped capabilities · plugins
- Model provideronly if remote — with Ollama nothing leaves the machine
- AI17Z Studioaccount · marketplace · entitlements · Tool Gateway — only if you link
What crosses each boundary
Your browser to Studio
- Crosses
- A sealed session id and same-origin form posts.
- Never crosses
- Secrets, or tokens that belong to an installation.
Your installation to Studio
- Crosses
- Its public key, its name, platform and AI17Z version, and requests signed with that key.
- Never crosses
- Memory, prompts, provider keys, cookies or files.
Studio to A publisher’s backend
- Crosses
- Validated input, a per-plugin pseudonym, a signature, and the publisher’s own sealed credential.
- Never crosses
- Your identity, your installation id, or anything from your agents.
Studio to The chain
- Crosses
- Read-only requests.
- Never crosses
- Keys, signing or transactions.
Studio to GitHub
- Crosses
- Public release facts for the install page.
- Never crosses
- Anything about you.
AI17Z core, on your machine
- Provider API keys and plugin credentials are sealed with AES-256-GCM under a master key kept only in your
.env. - The owner account is local and stored as a scrypt hash; there is no sign-up anywhere else.
- Every capability is typed, permissioned per agent by you, checked at ingest and again at execution, and audited.
- Outbound requests go through one bounded layer that refuses private addresses, re-judges redirects, pins DNS and caps response size.
- Installed plugins are declarations, never downloaded code.
Read the core security architecture and how to report a vulnerability.
AI17Z Studio, this service
Accounts
- Passwords are hashed with bcrypt (cost 12). Sign-in answers the same way for an unknown email and a wrong password.
- Sessions are server-side records referenced by a sealed, HttpOnly, SameSite cookie. Every sign-in creates a new session; you can see and revoke each one, and changing your password signs out every other session.
- Sign-in, sign-up and other sensitive actions are rate limited with counters held in the database.
- Every form submission is a same-origin server action; cross-site submissions are refused.
- Suspension takes effect immediately and ends every session.
Linked installations
- Linking follows the OAuth 2.0 Device Authorization Grant (RFC 8628): one-time codes, a 10-minute expiry, polling limits, and one decision per code.
- Each installation generates its own key pair; Studio stores only the public key. Tokens are bound to that key with DPoP (RFC 9449), last ten minutes, and are useless if copied. Proofs cannot be replayed.
- Revoking an installation takes effect on its next request.
- Older AI17Z builds that speak only Plugin Registry protocol v1 can use a registry key instead: stored as a hash, shown once, read-only, revocable.
Plugins and the Tool Gateway
- Publishers are verified by an admin; every version is reviewed; published versions are immutable at the database level.
- Manifests are served byte-for-byte with their SHA-256, so AI17Z can refuse anything altered in transit.
- The gateway re-checks the installation, entitlement, seat, plugin and version on every call, validates input and output against the manifest, bounds time and size, and never lets a request choose the backend address.
- Publisher credentials are sealed in Studio and never sent to a customer’s installation.
Payments
- Access is granted only after Studio reads the chain itself and finds an exact transfer — right token, amount, payer and recipient — at finality, still canonical, and never used before.
- A browser saying “sent” grants nothing. Studio never holds funds. Trading moves no funds through Studio either: an owner approves every order on their own broker or wallet, and Studio neither signs nor custodies.
What is not in place yet
- Third-party sign-in (GitHub, Google, Discord) and password reset by email are not offered, rather than offered half-built.
- Passkeys can sign you in instead of a password; a second factor required on top of a password is not yet available.
- Paid checkout stays off until it is switched on deliberately for production.
Found something? Please report it privately through the repository’s security advisories. See also Privacy.