> ## Documentation Index
> Fetch the complete documentation index at: https://docs.raziel.fun/llms.txt
> Use this file to discover all available pages before exploring further.

# Connect Telegram, Discord, GitHub, and Vercel to Teams

> Wire up messaging bots, source control, and deployment credentials to your Raziel team. All tokens are validated and encrypted before being stored.

Integrations connect your team to external services so agents can receive messages, push code, and deploy projects. Each token you provide is validated against the upstream API, encrypted at rest, and pushed into the VM environment only for the running process.

<Tip>
  You can add or update integrations at any time from the team dashboard. Navigate to your team and open the **Integrations** tab.
</Tip>

## Telegram

Your team replies in any conversation the bot is part of. Whitelist specific Telegram user IDs to control who can send messages.

<Steps>
  <Step title="Create a bot">
    Open Telegram and message [@BotFather](https://t.me/BotFather). Use `/newbot` to create a bot and copy the token it gives you.
  </Step>

  <Step title="Paste the token">
    In the dashboard, open your team → **Integrations** → **Telegram**. Paste the bot token.
  </Step>

  <Step title="Whitelist users">
    Enter the Telegram user IDs of accounts allowed to message the bot. Find a user ID by forwarding their message to [@userinfobot](https://t.me/userinfobot). Separate multiple IDs with commas.
  </Step>

  <Step title="Save">
    Click **Connect**. Raziel validates the token against Telegram's API, registers a webhook, and marks the integration as connected.
  </Step>
</Steps>

## Discord

Your team replies in any channel the bot is invited to. Whitelist Discord user IDs to restrict who can trigger responses.

<Steps>
  <Step title="Create a Discord application">
    Go to the [Discord Developer Portal](https://discord.com/developers/applications) and create a new application. Under **Bot**, add a bot user and copy the token.
  </Step>

  <Step title="Invite the bot to your server">
    Under **OAuth2 → URL Generator**, select the `bot` scope and the permissions your agent needs (at minimum: **Send Messages**, **Read Message History**). Open the generated URL to invite the bot.
  </Step>

  <Step title="Paste the token and whitelist">
    In the dashboard, open your team → **Integrations** → **Discord**. Paste the bot token and enter the Discord user IDs to whitelist.
  </Step>

  <Step title="Save">
    Click **Connect**. Raziel validates the token, pushes it into the VM environment, and marks the integration as connected.
  </Step>
</Steps>

## GitHub

Your GitHub Personal Access Token is stored via `gh auth login` inside the VM. Every shell session and agent process sees the credential without any extra environment wrangling.

<Steps>
  <Step title="Generate a PAT">
    Go to [github.com/settings/tokens](https://github.com/settings/tokens) and generate a Personal Access Token with the scopes your agent needs (typically `repo`, `read:user`). Fine-grained tokens work.
  </Step>

  <Step title="Paste the token">
    In the dashboard, open your team → **Integrations** → **GitHub**. Paste the token.
  </Step>

  <Step title="Save">
    Click **Connect**. Raziel validates the token, configures `gh` authentication inside the VM, and marks the integration as connected.
  </Step>
</Steps>

Once connected, your agent can clone, push, and open pull requests using `gh` or `git` without any additional setup.

## Vercel

Your Vercel token is stored via `vercel login` inside the VM. The `vercel deploy` command works without setting the `VERCEL_TOKEN` environment variable.

<Steps>
  <Step title="Generate a Vercel token">
    Go to [vercel.com/account/tokens](https://vercel.com/account/tokens) and create a new token. Give it a descriptive name like `raziel-team`.
  </Step>

  <Step title="Paste the token">
    In the dashboard, open your team → **Integrations** → **Vercel**. Paste the token.
  </Step>

  <Step title="Save">
    Click **Connect**. Raziel validates the token, runs `vercel login --token <token>` inside the VM, and marks the integration as connected.
  </Step>
</Steps>

## Token security

All integration tokens are encrypted before being stored. Plaintext credentials are injected into the VM environment only for the running process — they are not persisted in plaintext.

<Note>
  Raziel does not persist plaintext tokens in the database. If you rotate a token upstream, update it in the dashboard to push the new value into the VM.
</Note>
