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

# Integrate skill

> Migration skills that move an existing LiveKit, Pipecat, or custom agent onto SLNG hosted speech models and the Context Router.

The migration skills in `slng-ai/skills` move an existing voice agent onto SLNG.
Hand one to your coding agent and it discovers your current wiring, swaps speech
to text and text to speech for SLNG hosted models, and can point the language
model at the Context Router. The rest of your pipeline stays as it is.

These skills back the assisted path in the framework guides: in the dashboard you
choose your Listen, Think, and Speak models, copy the generated prompt, and the
coding agent installs the matching skill and applies the change. For the core
skills that call the API directly, see the
[Agent skill](/integrations/skills/agent-skill).

## Install

The `skills` CLI needs Node 18 or later. Install a single migration skill by
name:

```bash theme={null}
npx skills add slng-ai/skills livekit-migration
```

Target one coding agent with `-a` (`claude-code`, `codex`, or `gemini-cli`), and
add `-g` to install for every project. Re-run the command any time to update.

## Set up your key

The migration skills read your key from `SLNG_API_KEY`:

```bash theme={null}
export SLNG_API_KEY="your-slng-api-key"
```

Create a key at [app.slng.ai](https://app.slng.ai/api-keys), or see
[Create your API key](/guides/get-started/quickstart#create-your-api-key).

<Note>
  The core skills use `VOICEAI_API_KEY` and the migration skills use
  `SLNG_API_KEY`. Set both to the same key if you install skills from each group.
</Note>

## Migration skills

| Skill               | What it does                                                                | Guide                                  |
| ------------------- | --------------------------------------------------------------------------- | -------------------------------------- |
| `livekit-migration` | Move a LiveKit agent onto SLNG speech models and the Context Router.        | [LiveKit](/guides/integrate/livekit)   |
| `pipecat-migration` | Move a Pipecat bot onto SLNG speech models and the Context Router.          | [Pipecat](/guides/integrate/pipecat)   |
| `custom-migration`  | Move a custom voice project onto the Context Router and SLNG speech models. | [Custom LLM](/guides/integrate/custom) |

## How a migration runs

Once the skill is installed, describe the migration to your coding agent:

```text theme={null}
Migrate my LiveKit agent to SLNG hosted speech to text and text to speech.
```

The skill guides the agent to:

1. Discover the entry point, package manager, environment loading, and current
   speech to text, text to speech, and language model wiring before editing.
2. Establish a rollback point with a clean git tree.
3. Validate `SLNG_API_KEY` without printing it.
4. Install the framework plugin and replace the speech to text and text to speech
   constructors with the SLNG equivalents.
5. Point the language model at the Context Router where you chose to.
6. Verify one spoken turn that completes speech to text, the language model, and
   text to speech.

## Next steps

<CardGroup cols={3}>
  <Card title="LiveKit" icon="https://mintcdn.com/slng-new-docs/fgzHSTXC7k7AhIuF/images/providers/livekit.svg?fit=max&auto=format&n=fgzHSTXC7k7AhIuF&q=85&s=e53c2d53e583f755d2d8245d3f6ff051" href="/guides/integrate/livekit" width="256" height="256" data-path="images/providers/livekit.svg">
    Run the assisted or manual migration for a LiveKit agent.
  </Card>

  <Card title="Pipecat" icon="https://mintcdn.com/slng-new-docs/fgzHSTXC7k7AhIuF/images/providers/pipecat.svg?fit=max&auto=format&n=fgzHSTXC7k7AhIuF&q=85&s=1b96dea4b4529733e291debc612674f2" href="/guides/integrate/pipecat" width="80" height="80" data-path="images/providers/pipecat.svg">
    Run the assisted or manual migration for a Pipecat bot.
  </Card>

  <Card title="Custom LLM" icon="code" href="/guides/integrate/custom">
    Route a custom stack through the Context Router.
  </Card>
</CardGroup>
