Categories of secret
1. Secrets you generate
Most things you create yourself — a personal access token, a third-party tool’s API key, a database credential — go straight into your own stores and are never sent to Gravity at all:- Values you generate as part of account setup are pasted directly into your own repository’s encrypted Actions secrets, or your own hosting provider’s environment variables.
- For these, Gravity never sees the plaintext value, never asks for it in a message, and never stores a copy anywhere.
- The golden rule: never put a password, API key, or token into email or Slack — even if asked. If a step ever seems to require this, treat it as unusual and confirm through this documentation or a direct conversation first.
- Encrypts every submitted value at rest immediately on write.
- Never redisplays a previously-submitted value — only confirms that something is set for that field, mirroring how GitHub Actions secrets and most hosting providers’ environment variables already work.
- Is reached only through your own authenticated setup link, the same mechanism used elsewhere in onboarding — never a public or guessable URL.
- Is decrypted only by Gravity’s own provisioning process, through an internal endpoint that customer-facing tools and chat sessions never touch.
2. Secrets Gravity provides
A small number of values — a Gravity-issued service credential, your deployed agents’ internal identifiers — are generated by Gravity as part of standing up your fleet. On this fully customer-managed tier, Gravity’s only access to your repository is a collaborator account with Write permission — enough to push agent code, but GitHub requires Admin permission to manage a repository’s Actions secrets, which Gravity’s collaborator account deliberately never has. So for these values:- Gravity gives you each value securely — through the same hosted intake channel described above, or live on a call — never over chat or email.
- You set it yourself, pasting it into your own repository’s encrypted Actions secrets, exactly like a secret you generated yourself.
- You can see the secret’s name under your repository’s own secrets settings at any time, and you can delete or rotate it yourself, whenever you want — Gravity has no standing access to change it later.
3. Secrets that stay entirely with Gravity
A third category never reaches you at all, on any tier: the enrichment APIs (HarvestAPI, You.com, Findymail) that some modules use for LinkedIn/company-data lookups run entirely on Gravity’s own accounts, including on the fully customer-managed tier. You never generate, hold, or see a key for these, and Gravity never asks you to — usage is simply tracked per customer. This is a separate, permanent exception on top of the per-component defaults described in the three deployment tiers — it applies no matter which of the four infra components you own.One-time logins happen live, never over a message
A few connections — email/calendar access, LinkedIn — require a real OAuth consent screen with your own login. These are always completed live, directly in your own browser, during setup or on a screenshare call:- The resulting access token goes straight from the OAuth provider into your own credential store — it never passes through Gravity, a message, or a document at any point.
- Each of these connections can be revoked instantly, at any time, from your own account settings (Google, Slack, LinkedIn, etc.) — no coordination with Gravity required.
What this means in practice
- Nothing sensitive is ever emailed, Slacked, or pasted into a shared document. Every path above either stays entirely inside your own accounts or moves through an encrypted, purpose-built hosted page.
- Config changes are separate from credentials. The self-serve config MCP server reads and writes ordinary settings (channel IDs, schedule times, thresholds) — it never handles a credential, and its own onboarding tools explicitly defer every credential to the hosted intake page described above rather than asking for one directly.
- You can always verify. Repository and hosting secret lists show
names, never values. Your change history (via
get_change_history) shows every configuration edit made through the config server, accepted or rejected. Nothing about your deployment’s credential state is opaque to you.
Next steps
- Getting started — the onboarding conversation and account-setup steps where each of these secrets first gets created
- Onboarding reference — the precise field-by-field detail behind that conversation
- Self-serve configuration — the ongoing, credential-free way to manage your settings
- Available integrations & modules — what each integration requires, and who manages it
- Agent reference — what each module does, reads, and writes, module by module