> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.jambonz.org/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.jambonz.org/_mcp/server.

# Krisp Turn-Taking

The [agent](/verbs/verbs/agent) verb supports [Krisp](https://krisp.ai/) for two features:

* **Turn detection** — Krisp's acoustic end-of-turn model analyzes speech patterns (not just silence) to determine when a user has finished speaking. This produces more natural conversations where users can pause mid-thought without the agent interrupting.
* **Noise isolation** — Krisp's voice isolation removes background noise from the caller's audio, improving STT accuracy in noisy environments.

## Licensing Requirement

> **Krisp API License Required**
>
> Krisp features require a **separate Krisp API license key** for self-hosted jambonz deployments. This license is **not included** with the jambonz software license and must be obtained separately.
>
> **This requirement does not apply to jambonz.cloud customers** — Krisp features are included with all jambonz.cloud plans at no additional cost.

## Obtaining a Krisp License

Contact [support@jambonz.org](mailto:support@jambonz.org) to obtain a Krisp API key for your self-hosted deployment. We will provide:

1. Pricing information based on your expected usage
2. Your Krisp API key
3. Configuration instructions for your deployment

## Configuration

Once you have obtained your Krisp API key, configure it on your jambonz system using one of the methods below.

### New Deployments

When deploying jambonz via **AWS CloudFormation** or **Terraform**, provide your Krisp API key as a parameter or input variable during installation. The deployment scripts will configure the system automatically.

### Existing Deployments

For systems already deployed, add the Krisp API key to the mediajam environment file on the feature-server or mini. As of jambonz 11, mediajam is the media server and reads its configuration from `/etc/default/mediajam` — the key no longer belongs in the FreeSWITCH systemd unit.

1. Edit the mediajam environment file:
   ```bash
   sudo vi /etc/default/mediajam
   ```

2. Set the `KRISP_API_KEY` variable to your API key (the file ships with an empty value):
   ```ini
   KRISP_API_KEY=your-api-key-here
   ```

3. Restart mediajam:
   ```bash
   sudo systemctl restart mediajam
   ```

> **Note**
>
> Krisp is initialized only when `KRISP_API_KEY` is non-empty at startup, and licensing is validated against `sdkapi.krisp.ai`, so the media server needs outbound HTTPS to that host.

### Verify Configuration

Once configured, you can use Krisp features in the agent verb:

```js
session.agent({
  llm: { vendor: 'openai', model: 'gpt-4.1-mini', /* ... */ },
  turnDetection: 'krisp',           // Enable Krisp turn detection
  noiseIsolation: 'krisp',          // Enable Krisp noise isolation
  // ...
}).send();
```

## Alternatives Without Krisp

If you don't have a Krisp license, you can still build effective voice agents using these alternatives:

### Turn Detection Alternatives

| Option              | Configuration                                     | Notes                                                    |
| ------------------- | ------------------------------------------------- | -------------------------------------------------------- |
| STT-based (default) | `turnDetection: "stt"`                            | Uses your STT vendor's native end-of-utterance detection |
| Deepgram Flux       | Use `vendor: "deepgramflux"` for STT              | Built-in acoustic + semantic turn detection              |
| AssemblyAI          | Use `vendor: "assemblyai"` with `u3-rt-pro` model | Native turn-taking support                               |
| Speechmatics        | Use `vendor: "speechmatics"` for STT              | Built-in turn detection                                  |

### Noise Isolation Alternative

| Option  | Configuration               | Notes                            |
| ------- | --------------------------- | -------------------------------- |
| RNNoise | `noiseIsolation: "rnnoise"` | Open-source, no license required |

## Usage in the Agent Verb

### Turn Detection

```js
// Krisp turn detection with custom threshold
session.agent({
  turnDetection: {
    mode: 'krisp',
    threshold: 0.5  // 0.0-1.0, lower = more aggressive
  },
  earlyGeneration: true,  // Enable speculative LLM prompting
  // ...
}).send();
```

### Noise Isolation

```js
// Krisp noise isolation with custom settings
session.agent({
  noiseIsolation: {
    mode: 'krisp',
    level: 80,           // 0-100, higher = more aggressive
    direction: 'read'    // 'read' (caller audio) or 'write' (outbound)
  },
  // ...
}).send();
```

See the [agent verb reference](/verbs/verbs/agent) for complete documentation of these parameters.