Connections
Connect a service once, run an automatic test, and choose which apps and agents may use it.
A connection holds one grant to an outside service. Apps and agents share it, and neither one ever sees the credential.
Status today: the catalog and the Connect flow work, and they are tested against a synthetic provider only. No real provider is live yet. Built-in email is built and tested against a file sink, and it shows as live only once Fermium has configured a sender (see below). Slack, Google Sheets and Drive, Stripe and PDF generation show "Coming" in the catalog and have no Connect button.
Connect a service
- Open Connections in the app. The catalog lists each provider.
- Press Connect on a live provider and give the connection a name. Handlers use that name.
- For a provider with its own sign-in, continue to its consent screen. For a provider that takes a key, paste the key. The key is not shown again.
- Fermium makes one read-only test call. The connection shows "Test call passed", or the reason it failed.
- Copy the handler snippet, for example
const demo = context.connections.demo;. It holds the name only, never a value.
A new connection grants nothing. Nobody and nothing may use it until the grant step names an app or an agent.
Start from chat
An agent can call list_connections, start_connection and connection_status. start_connection returns a link. You open it in your browser to consent or paste a key. The agent cannot finish the consent, read a credential, or grant itself access.
Who may do what
- Folder permissions decide who can see and manage a connection.
- The grant list decides which apps and agents may call it.
- Every use is audited. A revoked connection fails with a named error, and no other person's grant is used instead.
Built-in email
Built-in email is the platform's own sender. It needs no Connect step and no grant, and it counts against your plan's monthly quota.
- A send names up to five recipients, one subject line and a text body, with an optional HTML body.
- Each accepted recipient counts once toward the month. At the limit the call is refused with
quota_exceeded, which names the limit and the date it resets. Mail is never dropped silently. - A daily ceiling, set for the whole platform, stops a loop from using the month in one run.
GET /api/connections/email/quotareturns your limit, what you used, what remains and the reset date.- A plan with no quota number set refuses with
quota_not_set. The quota numbers are not published yet.
Not yet true: a handler cannot call context.connections.email.send today. The API route the executor will call exists and is tested. The typed client inside the handler waits for the App Runtime review of the guest capability. No test send to a real inbox has been made, and no sender domain exists yet.