Least data we need
We keep the stack, runtime, command, and error code. We do not want payment cards, government IDs, health records, or secrets you cannot afford to log. If it does not help you fix the failure, it should not be in the probe.
Security
SDK teams trust us with the ugliest hour of an evaluation — the stack still on screen. We designed AethelLayer so that moment is useful to you and boring to an attacker: hashed identity, org-scoped keys, RLS, and drafts that wait.
Identity
Hashed developer identifiers
Tickets
You hit send
SOC 2 Type II
Program in progress — not a badge yet
Trust pack
Questionnaire answers at /trust
Security pages that only list logos are ads. This one is an operating manual. If a control is not live, we say so.
We keep the stack, runtime, command, and error code. We do not want payment cards, government IDs, health records, or secrets you cannot afford to log. If it does not help you fix the failure, it should not be in the probe.
Developer identifiers are hashed. We cluster failures so you can see fourteen people hit ERR_DOCKER_OOM — not so we can build a profile of a person. You keep the customer relationship.
GitHub and Linear drafts wait for you. Playbooks can reply in-thread for known clusters. They do not open public issues on their own. If a product writes tickets without you, it is not a teammate.
One line in the CLI, SDK, or middleware. We sit in the failure. We do not become your auth surface, your status page, or a new hot path in production traffic.
See the Acceptable Use Policy and DPA. InfoSec questionnaire: Trust pack.
The inbox is not a public dump of every stack on the internet. Ingest is keyed. Reading is membership. Writing tickets uses your GitHub or Linear token, not ours, unless you never connect them.
Supabase Auth with email and password. Workspace membership is mapped in Postgres. Session cookies follow the authenticated App Router path. Demo workspaces stay local until you sign in for real.
Org members only read their workspaces. Conversations, events, Memory Graph nodes, playbooks, and watch rules are gated by is_org_member. Ingest does not use a logged-in browser session.
Each organization has a live ingest key (aethel_live_…). Eval-mode keys add a time-boxed probe bonus for sales PoCs without opening Growth. Rotate from SDK setup. Treat keys like production secrets.
POST /api/v1/probes and POST /api/v1/graph/ingest require Bearer aethel_live_… keys. ingest_probe is a security-definer RPC: unknown keys fail closed, monthly limits live in the database. Graph writes are scoped to the org on that key.
TLS in transit on hosted paths. You remain responsible for how your CLI and SDKs store AETHEL_API_KEY. We do not ship keys in public blog snippets as live credentials.
Connect GitHub or Linear with a token you control. Preview first. confirm:true creates the issue. The conversation stores the URL. Nothing auto-files.
If you set OPENAI_API_KEY, summaries and inbox replies may leave our boundary to that provider. If you do not, templates stay in-product. You choose.
Watch alerts, sales leads, and Monday churn digests send only when Gmail SMTP, generic SMTP, or Resend is configured. Recipients are the workspace notify address you save in Settings.
Honest status
We are building access reviews, change evidence, vendor inventory, and incident process. We will not claim certification until an auditor says so. Forward-looking statements are not warranties — see the Disclaimer.
Enterprise SSO, SCIM, audit log export, and VPC or dedicated region are scoped on a call. They are not hiding behind a self-serve toggle on Starter.
Infrastructure we use to run the product. Optional rows only apply if you turn that integration on.
Supabase
Auth, Postgres, RLS, Realtime, Storage (avatars)
Vercel
Hosting, Analytics, Speed Insights, cron
OpenAI-compatible APIs
Optional summaries and replies — only if you bring a key
Resend or Google SMTP
Optional outbound email — only if you configure it
PostHog
Optional product analytics on our marketing site, if the project token is set
Privacy policy: /legal/privacy. Cookies: /legal/cookies.
Email security@aethellayer.com. We ask for coordinated disclosure: reasonable time to patch before public write-ups, no exfiltration of customer stacks, no attacks on production ingest with stolen keys that are not yours. We will acknowledge, triage, and tell you when a fix is live.
Please do not file customer error payloads in public GitHub issues as “PoCs.” That is the opposite of the product.
No. We are preparing for SOC 2 Type II. That is a controls and evidence program, not a badge you can buy in an afternoon. We will not put a fake seal on this page.
No. Probes send error codes, stacks, endpoint paths, taxonomy, and metadata you choose. Do not dump repositories into metadata.
Members of your organization, for that workspace. Service ingest cannot list other orgs. The public SDK health badge shows aggregated path status, not stacks or identities.
Growth, Scale, and Enterprise. Nodes and edges remember clusters (error ↔ runtime ↔ fix). They are not a people graph for advertising. Starter does not include the atlas.
Enterprise is scoped on a call: SSO, SCIM, audit log, custom taxonomy, dedicated region or VPC if required. Those are not self-serve toggles.
Longer pieces on hashed identity, ingest keys, and why we refuse fake compliance theater.
Early access
Paste npx --yes @aethellayer/sdk run -- false and read the drafted issue in your terminal. Book a call when you want the probe in your CLI.