mirror of
https://github.com/fabro-sh/fabro.git
synced 2026-08-28 05:27:41 +00:00
Add Poolside as a built-in OpenAI-compatible provider and expose Laguna S 2.1 and XS 2.1 both directly and through OpenRouter. Include vault/env credential registration, secret redaction, live coverage, catalog tests, and user documentation.
139 lines
5.3 KiB
Text
139 lines
5.3 KiB
Text
---
|
|
title: "Poolside"
|
|
description: "Run Laguna coding models through Poolside's direct API or OpenRouter"
|
|
---
|
|
|
|
[Poolside](https://poolside.ai/) trains the Laguna family of agentic coding models. Fabro includes Poolside's OpenAI-compatible API as a built-in provider, with Laguna S 2.1 and Laguna XS 2.1 available through both Poolside directly and the opt-in [OpenRouter integration](/integrations/openrouter).
|
|
|
|
## Prerequisites
|
|
|
|
- A Poolside developer API key from [platform.poolside.ai](https://platform.poolside.ai/)
|
|
- A running Fabro server
|
|
|
|
Poolside Platform currently offers free developer access for a limited time. The built-in catalog records Poolside's published paid endpoint prices so Fabro can produce durable estimated cost telemetry when the preview ends or an account uses paid access.
|
|
|
|
## Configure direct access
|
|
|
|
The direct `poolside` provider is enabled in the built-in catalog. Store its key in the target Fabro server vault:
|
|
|
|
```bash
|
|
fabro provider login --provider poolside
|
|
|
|
# For a non-default remote server:
|
|
fabro provider login --server https://your-fabro.example --provider poolside
|
|
|
|
# Or set the vault token directly:
|
|
fabro secret set POOLSIDE_API_KEY
|
|
fabro secret --server https://your-fabro.example set POOLSIDE_API_KEY
|
|
```
|
|
|
|
Standalone SDK usage outside a Fabro server can use an env-backed credential source explicitly:
|
|
|
|
```bash
|
|
export POOLSIDE_API_KEY=<api-key>
|
|
```
|
|
|
|
The provider sends OpenAI-compatible Chat Completions requests to `https://inference.poolside.ai/v1` using bearer authentication.
|
|
|
|
## Included models
|
|
|
|
| Fabro model ID | Poolside API model ID | Context | Max output | Role |
|
|
|---|---|---:|---:|---|
|
|
| `laguna-s-2.1` | `poolside/laguna-s-2.1` | 1,048,576 | 131,072 | Provider default; aliases `laguna`, `laguna-s` |
|
|
| `laguna-xs-2.1` | `poolside/laguna-xs-2.1` | 262,144 | 32,768 | Small default and connectivity probe; alias `laguna-xs` |
|
|
|
|
Both models support text input, tool calling, native reasoning, streaming, and automatic prompt-cache usage reporting. They do not support image input.
|
|
|
|
## Use direct Poolside models
|
|
|
|
```bash
|
|
fabro model list --provider poolside
|
|
fabro model test --model laguna-xs-2.1 --deep
|
|
fabro run workflow.fabro --model laguna-s-2.1
|
|
```
|
|
|
|
In workflow stylesheets:
|
|
|
|
```dot title="workflow.fabro"
|
|
digraph Example {
|
|
graph [
|
|
model_stylesheet="
|
|
* { model: laguna-s-2.1; }
|
|
.quick { model: laguna-xs-2.1; }
|
|
"
|
|
]
|
|
|
|
start [shape=Mdiamond, label="Start"]
|
|
work [label="Implement", prompt="Implement and verify the requested change."]
|
|
exit [shape=Msquare, label="Exit"]
|
|
|
|
start -> work -> exit
|
|
}
|
|
```
|
|
|
|
## Reasoning behavior
|
|
|
|
Laguna S 2.1 and XS 2.1 support two thinking modes: off and max. Max thinking is enabled by default. These releases do not expose low, medium, or high reasoning-effort levels, so Fabro intentionally does not advertise typed `reasoning_effort` controls for them.
|
|
|
|
Fabro preserves Poolside's `reasoning_content` between assistant and tool messages. This is important for interleaved thinking across multi-step tool calls.
|
|
|
|
For direct API or SDK requests, disable thinking through `provider_options.poolside`:
|
|
|
|
```json
|
|
{
|
|
"model": "laguna-s-2.1",
|
|
"provider_options": {
|
|
"poolside": {
|
|
"chat_template_kwargs": {
|
|
"enable_thinking": false
|
|
}
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
## Use Laguna through OpenRouter
|
|
|
|
Enable OpenRouter and configure its separate API key as described in the [OpenRouter integration](/integrations/openrouter):
|
|
|
|
```toml title="settings.toml"
|
|
[llm.providers.openrouter]
|
|
enabled = true
|
|
```
|
|
|
|
The OpenRouter routes use vendor-namespaced model IDs so they can coexist with direct Poolside routes:
|
|
|
|
```bash
|
|
fabro model test --model poolside/laguna-xs-2.1 --deep
|
|
fabro run workflow.fabro --model poolside/laguna-s-2.1
|
|
```
|
|
|
|
OpenRouter returns authoritative in-band cost telemetry. Its current paid rates per million input, output, and cache-read tokens are:
|
|
|
|
| Model | Input | Output | Cache read |
|
|
|---|---:|---:|---:|
|
|
| `poolside/laguna-s-2.1` | $0.10 | $0.20 | $0.01 |
|
|
| `poolside/laguna-xs-2.1` | $0.06 | $0.12 | $0.03 |
|
|
|
|
The XS rate reflects OpenRouter's current promotional discount and can change. Fabro prefers OpenRouter's authoritative `usage.cost` over catalog estimates.
|
|
|
|
Fabro does not include promotional `:free` OpenRouter variants in the built-in catalog because their availability and limits can change. Add one as a custom model if you explicitly want that route.
|
|
|
|
## Troubleshooting
|
|
|
|
**"No API key configured"** — Store `POOLSIDE_API_KEY` on the target server with `fabro provider login --provider poolside`. The server runtime resolves the key from its vault, not from process env.
|
|
|
|
**Unknown model** — Direct Poolside routes use `laguna-s-2.1` and `laguna-xs-2.1`. OpenRouter routes include the `poolside/` prefix.
|
|
|
|
**Reasoning effort rejected** — Laguna's hosted endpoints support thinking off or max, not low/medium/high effort. Omit `reasoning_effort`; use the provider option above only when you need to disable thinking.
|
|
|
|
## Further reading
|
|
|
|
<Columns cols={2}>
|
|
<Card title="Poolside API" icon="code" href="https://docs.poolside.ai/api/overview">
|
|
Official API endpoints, authentication, model listing, and tool-use examples.
|
|
</Card>
|
|
<Card title="Laguna models" icon="microchip" href="https://poolside.ai/models">
|
|
Current model capabilities, weights, context windows, and release information.
|
|
</Card>
|
|
</Columns>
|