# Integrations

Connect Aurora Inference to coding agents, chat applications, and libraries through
its OpenAI-compatible Chat Completions API. Choose a guide below, or use the shared
connection settings to configure another compatible client.

## Choose an integration

### Coding tools and agent harnesses

| Integration | Use it for |
| --- | --- |
| [OpenCode](https://docs.aur.lu/docs/inference/sdks/inference-opencode) | Terminal coding agent with custom providers |
| [Pi](https://docs.aur.lu/docs/inference/integrations/pi) | Extensible terminal coding harness |
| [Hermes Agent](https://docs.aur.lu/docs/inference/integrations/hermes) | Persistent agent sessions, tools, and messaging |
| [OpenClaw](https://docs.aur.lu/docs/inference/integrations/openclaw) | A personal assistant with a local gateway and agent workspace |
| [Aider](https://docs.aur.lu/docs/inference/integrations/aider) | Pair programming and editing files in a Git repository |
| [Continue](https://docs.aur.lu/docs/inference/integrations/continue) | Chat, edits, and agent workflows in your IDE |
| [Cline](https://docs.aur.lu/docs/inference/integrations/cline) | Agentic coding in VS Code |

### Chat applications

| Integration | Use it for |
| --- | --- |
| [Chatbox AI](https://docs.aur.lu/docs/inference/integrations/chatbox) | Desktop chat with your own Aurora token |
| [Open WebUI](https://docs.aur.lu/docs/inference/integrations/open-webui) | A self-hosted chat interface |

### SDKs and libraries

| Integration | Use it for |
| --- | --- |
| [OpenAI Python](https://docs.aur.lu/docs/inference/sdks/inference-python) | Python applications and scripts |
| [OpenAI JavaScript / TypeScript](https://docs.aur.lu/docs/inference/integrations/openai-javascript) | Node.js and server-side TypeScript applications |
| [Vercel AI SDK](https://docs.aur.lu/docs/inference/integrations/vercel-ai-sdk) | Text generation and streaming in JavaScript applications |
| [LangChain Python](https://docs.aur.lu/docs/inference/integrations/langchain) | Composable prompts and chat model workflows |
| [LiteLLM](https://docs.aur.lu/docs/inference/integrations/litellm) | A common Python interface across model providers |

## Shared connection settings

> Available Inference endpoint: `https://ai.aur.lu/v1` (Aurora).

1. Create an API token with `execute:inference:requests` permission in the
   [Aurora Portal](https://portal.aur.lu/). See [Getting started](https://docs.aur.lu/docs/inference/getting-started).
2. Copy the selected base URL below. It already includes `/v1`.
3. Choose a model from the public catalog and keep its **complete ID**.

```text
https://ai.aur.lu/v1
```

| Setting | Value |
| --- | --- |
| API / provider type | OpenAI-compatible **Chat Completions** |
| API key | Your Aurora API token, without the `Bearer ` prefix |
| Model ID used in these guides | `deepseek/deepseek-v4-flash` |
| Chat endpoint path | `/chat/completions`, appended to the base URL |

Most clients append the chat endpoint themselves. Do not add a second `/v1` or
put `/chat/completions` in a base URL field unless the guide explicitly asks for it.

For terminal and SDK examples, set the token in the shell that launches the client:

```bash
export AURORA_API_TOKEN="<your-token>"
```

These shell examples use Bash/Zsh syntax. In PowerShell, use
`$env:AURORA_API_TOKEN = "<your-token>"`. Applications launched from a desktop icon
or as a service may not inherit terminal environment variables. Use their credential
settings or service environment instead. Keep tokens and secret files out of Git;
server-side application tokens must not be bundled into browser code.

### Discover models and verify authentication

List models (this endpoint is public):

```bash
curl --fail-with-body https://ai.aur.lu/v1/models
```

A successful model listing does **not** verify your token. Test a chat request:

```bash
curl --fail-with-body https://ai.aur.lu/v1/chat/completions \
  -H "Authorization: Bearer $AURORA_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek/deepseek-v4-flash",
    "messages": [{"role": "user", "content": "Say hello in one sentence."}]
  }'
```

Expect a JSON response with text in `choices[0].message.content`. Availability can
change; replace the example model everywhere in your client configuration if needed.
See [Models and pricing](https://docs.aur.lu/docs/inference/models-and-pricing) for current availability and costs.

## API and feature compatibility

Aurora supports model discovery, Chat Completions, and text Completions. Streaming
uses server-sent events (SSE). Compatibility is limited to the operations in the
[API reference](https://docs.aur.lu/docs/inference/api-reference).

- Select **Chat Completions** when a client offers multiple API modes. Aurora does
  not implement OpenAI Responses or Anthropic Messages.
- Tool calling, reasoning controls, structured output, and image input depend on
  the selected model. A client's capability toggle does not enable a server feature.
- For coding agents, choose a model suited to tool use and check a complete
  file-read → tool-result → answer cycle before starting a larger task.
- Context-window and output-limit settings tell the client how to budget tokens;
  they do not increase the model's server-side limits. Copy limits for the selected
  model rather than reusing another provider's defaults.
- Embeddings, speech, and image generation are not documented Aurora endpoints.
  Configure separate services for application features that need them.
- Agents may make additional calls for titles, summaries, or helper models. Check
  those assignments too. Client cost estimates may be absent or inaccurate for
  custom models; use the Aurora Portal to monitor billed usage.

### What about Claude Code and Codex?

A custom base URL alone does not translate API protocols. Claude Code's
[gateway integration](https://code.claude.com/docs/en/llm-gateway) requires its
supported gateway protocols, and current Codex provider configuration uses the
Responses API (see the [configuration reference](https://developers.openai.com/codex/config-reference/)).
Neither is a direct Chat Completions integration. Use one of the coding harnesses
above for a direct Aurora connection. A protocol-translating gateway would be a
separate integration with its own compatibility requirements.

## Troubleshooting

| Symptom | What to check |
| --- | --- |
| `401` or invalid API key | Use an Aurora token, remove surrounding whitespace, and ensure the application can read the credential. |
| `403` or permission denied | Check the token's `execute:inference:requests` permission and the error details. |
| `404` on a request | Check the full requested path for duplicate `/v1`, a repeated `/chat/completions`, or unsupported `/responses` or `/messages`. |
| Model not found | Copy the exact catalog ID, including its author prefix (for example `deepseek/`). Add client routing prefixes only where the guide shows them. |
| Models appear but chat fails | Discovery is public. Run the authenticated chat check above. |
| `400` after enabling a feature | Check model support and the error body; remove unsupported reasoning, tool, image, or structured-output options. |
| Rate limit or capacity error | Reduce parallel requests and retry with backoff; inspect the error before retrying authentication or validation failures. |
| Context-limit error | Start a new session, reduce attachments/tool output, or correct the client's context budget. |
| Text appears all at once | Verify streaming is enabled and that your reverse proxy or application does not buffer SSE. |

The guides describe upstream configuration interfaces and include checks you can
run against your account. They are not a guarantee that every feature of every
client works with every Aurora model.
