# Connect an integration

Connecting a service to Speedwave follows the same shape for every [integration](/docs/integrations/): you turn it on for a project, Speedwave builds an isolated worker for it, and from then on Speedwave reaches that service only through its own worker.

## Enable the integration

1. Open the project you want to connect the service to, and go to its integrations list.
2. Turn on the integration. Office is the one beta integration: it only appears once you turn on **Beta features** in the Speedwave tray menu. Slack, GitHub, and Atlassian are regular integrations and show up without that toggle.
3. Wait for the containers to restart. Enabling an integration for the first time builds its worker image on demand, and that first build takes longer for heavier images (web automation pulls Chromium, Office pulls LibreOffice and a Python environment). Later toggles reuse the cached image and are near-instant.

<DesktopFrame screen="integrations" />

Some integrations need no sign-in at all: Office, [web automation (Playwright)](/docs/integrations/web-automation/), and Context7 work without credentials, though Context7 accepts an optional API key for higher rate limits. Web automation carries a **BETA** badge in the integrations list too, but unlike Office it isn't hidden behind the Beta features toggle. Everything else needs its credentials in place before Speedwave can use it.

## Where credentials go

Whatever sign-in a service requires happens outside Claude's reach. The credentials that come out of it land in a per-project, per-service folder that only that service's worker can read, mounted read-only. Claude and [the Tool Gateway that routes its tool calls](/docs/under-the-hood/tool-gateway/) never hold or see these credentials themselves. For the full picture of where these files live on disk and why, see [how credentials are handled](/docs/security/credentials/).

## Confirm it worked

If the toggle stays on after the containers restart, the worker built and the integration is enabled, and if the build fails instead, the row reverts to disabled and you can try again.

A working toggle isn't quite the same as a working connection: some services also need a valid sign-in behind that worker. Ask Claude to use the integration to confirm it can actually reach the service.
**Note:** If a previously working integration suddenly can't reach its service, for example SharePoint failing with "cannot reach oauth worker", restarting the project from Speedwave Desktop usually fixes it.