---
title: Integrations
description: Connect GitLab for code, Slack for conversations and Linear for issues.
---

The **Integrations** page shows the workspace's GitLab and Linear connections, and which factories use each one. Each factory connects its own Slack app and chooses its Linear teams under **Integrations** in its settings. Anyone signed in can connect and disconnect integrations.

## GitLab

GitLab is where factories get their code. The workspace has one GitLab connection. Connect it from **Integrations** or while creating a factory, by signing in to GitLab. Connecting again replaces it.

- Factories can work on any project that account is a member of. You pick a factory's project when you create it, and it can't change later.
- Commits and merge requests come from the connected account.
- Disconnecting takes away the agents' GitLab access and stops new factories from picking a repository. Factories keep their repository, so connecting again restores access.

See [Working in the sandbox](/agents#working-in-the-sandbox) for what the agents do with the code.

## Slack

Every factory has its own Slack app, named after the factory and appearing as Foreman's `@handle`.

To connect it, open the factory's **Settings**, select **Connect** next to Slack, and approve the app in Slack. You can also do this while creating the factory.

Once it's connected:

- **Mention `@handle` in a channel, or send it a DM,** to start a run. Mention it again in the same thread to continue that run.
- With **Auto-respond to thread replies** on, Foreman also answers replies in its threads that don't mention it. This is off by default.
- Foreman reacts with 👀 while it works and ✅ when it's done, posts its reply in the thread, and adds a **View this run in AINOX** link.
- A thread belongs to the factory that answered first. Mentioning another factory's `@handle` in it gets a reply asking you to start a new thread.

On the web, Slack runs have an **Open in Slack** button, and messages you send from the web are copied into the thread.

Disconnecting deletes the factory's Slack app, which leaves every channel.

:::note

If the Slack row on **Integrations** asks an admin to set `SLACK_CONFIG_REFRESH_TOKEN`, the server isn't set up for Slack yet.

:::

## Linear

The workspace has one Linear connection. Connect it from **Integrations**, or from a factory's settings, which then asks you to choose teams straight away.

Each factory chooses the Linear teams it handles under **Choose teams**. A team can belong to only one factory. If a team is missing from the list, add the app as a member of that team in Linear's team settings, then reopen the list.

Once it's connected:

- **Delegate an issue to the agent, or mention it on an issue,** to start a run in the factory that handles the issue's team. Further prompts in the same session go to the same factory.
- The reply appears in the issue's agent session with a **View run in AINOX** link. On the web, the run has an **Open in Linear** button.
- Adding a label doesn't start a run by itself, but it can trigger an [automation](/automations#linear-issue-labeled).

Agents ask for approval before deleting, merging or sharing anything in Linear. Approve in the place the run started: with the buttons in a Slack thread, or by replying in the Linear agent session.

Disconnecting from a factory stops its teams' issues from starting runs there. Disconnecting the workspace stops every factory receiving Linear issues and clears each factory's team choices.
