# Debian Inference Portal

> Source: <https://inference.debian.net/doc>
> Published: 2026-09-23 20:57:32+00:00

The Debian Inference Portal is a self-service way for Debian contributors to use shared LLM
inference. You log in with your **Salsa** account, create API keys, and track your spend — all
through your browser. The portal provisions you on a shared, OpenAI-compatible inference
proxy, so any tool that speaks the OpenAI API can use your key.

It is a **shared, fair-use service** funded by a fixed monthly pool of credits. Your weekly
budget is a **soft limit, in place for safety reasons**: it paces usage so the shared pool
lasts for everyone, and you can renew it from the dashboard once it is spent. Please still
avoid long or very heavy workloads.

[**Scaleway**](https://www.scaleway.com) is a European cloud provider owned by the
[Iliad Group](https://en.wikipedia.org/wiki/Iliad_SA) (the parent of Free),
delivering public cloud, bare metal, AI and managed services. Among those services is
[**Generative APIs**](https://www.scaleway.com/en/generative-apis/), a serverless,
OpenAI-compatible API for serving LLMs — you pay per token and don't manage any
infrastructure. The models below are served through it: requests are proxied to
`api.scaleway.ai`, and you don't need your own Scaleway account — the service holds the
provider credentials and forwards your calls.

This service is possible thanks to **Scaleway**, which kindly sponsors the Debian project with
a monthly allocation of credits to cover the inference costs for contributors.

| Model ID (use this in `model` ) | Model | 
|---|---|
| `scaleway/glm-5.2` | Zhipu AI's GLM-5.2, a general-purpose model | 
| `scaleway/deepseek-v4-flash-0731` | DeepSeek's V4 Flash, a fast, lightweight model | 

Both models are in **preview** at Scaleway. They are billed by token, but note
that GLM-5.2 currently does not differentiate cached (input) tokens, so
re-reading long context is charged at the full rate and can get comparatively
expensive. Re-reading long context is typical in the context of agentic software
development (agents re-read the accumulated conversation on every step), so this
adds up quickly. **DeepSeek V4 Flash is recommended** for most uses.

The list above is not exhaustive — run the models endpoint with your key to see exactly what is currently exposed:

```
curl -s https://inference.debian.net/v1/models -H "Authorization: Bearer $DEBIAN_INFERENCE_KEY"
```

`bubblewrap`

```
bwrap \
  --ro-bind /usr /usr \
  --symlink usr/bin /bin \
  --symlink usr/lib /lib \
  --symlink usr/lib64 /lib64 \
  --ro-bind /etc/ssl /etc/ssl \
  --ro-bind /etc/resolv.conf /etc/resolv.conf \
  --ro-bind $HOME/.gitconfig $HOME/.gitconfig \
  --bind $HOME/.config/opencode $HOME/.config/opencode \
  --bind $HOME/.cache/opencode $HOME/.cache/opencode \
  --bind $HOME/.opencode $HOME/.opencode \
  --bind $HOME/.local/share/opencode $HOME/.local/share/opencode \
  --bind $HOME/.local/state/opencode $HOME/.local/state/opencode \
  --proc /proc \
  --dev /dev \
  --tmpfs /tmp \
  --bind $(pwd) $(pwd) \
  --chdir $(pwd) \
  --unshare-all \
  --share-net \
  --die-with-parent \
  /path/to/opencode "$@"
```

This is not a full containment: the sandboxed process still has the terminal and can reach local sockets that don't go through the filesystem (abstract Unix sockets, TCP sockets, and so on).

`nm.debian.org`.
Things to know about keys:

The proxy speaks the [**OpenAI API**](https://en.wikipedia.org/wiki/OpenAI): the classic
**Chat Completions** interface (`POST /v1/chat/completions` with a `messages` payload) and the
newer **Responses API** (`POST /v1/responses`). The examples below use Chat Completions, which
is the most widely supported. Use your key as a `Bearer` token and set `model` to one of the
exposed models (e.g. `scaleway/deepseek-v4-flash-0731`).

```
export DEBIAN_INFERENCE_KEY="sk-your-key"

# List the models available to you
curl -s https://inference.debian.net/v1/models \
  -H "Authorization: Bearer $DEBIAN_INFERENCE_KEY"

# A simple chat completion
curl -s https://inference.debian.net/v1/chat/completions \
  -H "Authorization: Bearer $DEBIAN_INFERENCE_KEY" \
  -H "Content-Type: application/json" \
  -d '{
        "model": "scaleway/deepseek-v4-flash-0731",
        "messages": [{"role": "user", "content": "Hello!"}]
      }'
python
import os
import requests

key = os.environ["DEBIAN_INFERENCE_KEY"]
resp = requests.post(
    "https://inference.debian.net/v1/chat/completions",
    headers={"Authorization": f"Bearer {key}"},
    json={
        "model": "scaleway/deepseek-v4-flash-0731",
        "messages": [{"role": "user", "content": "Hello!"}],
    },
)
resp.raise_for_status()
print(resp.json()["choices"][0]["message"]["content"])
```

Add a custom OpenAI-compatible provider to your `opencode.json` (project-level, or the global
`~/.config/opencode/opencode.json`):

```
{
  "model": "debian-inference/scaleway/deepseek-v4-flash-0731",
  "provider": {
    "debian-inference": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "Debian Inference",
      "api": "https://inference.debian.net/v1",
      "env": [
        "DEBIAN_INFERENCE_KEY"
      ],
      "models": {
        "scaleway/deepseek-v4-flash-0731": {
          "name": "DeepSeek V4 Flash 0731",
          "family": "deepseek-flash",
          "release_date": "2026-07-31",
          "attachment": false,
          "reasoning": true,
          "temperature": true,
          "tool_call": true,
          "cost": {
            "input": 0.4,
            "output": 0.8,
            "cache_read": 0.08
          },
          "limit": {
            "context": 256000,
            "output": 16384
          },
          "modalities": {
            "input": ["text"],
            "output": ["text"]
          },
          "interleaved": true
        },
        "scaleway/glm-5.2": {
          "name": "GLM-5.2",
          "family": "glm",
          "release_date": "2026-06-13",
          "attachment": false,
          "reasoning": true,
          "temperature": true,
          "tool_call": true,
          "cost": {
            "input": 1.8,
            "output": 5.5
          },
          "limit": {
            "context": 256000,
            "output": 16384
          },
          "modalities": {
            "input": ["text"],
            "output": ["text"]
          }
        }
      }
    }
  }
}
```

Then start OpenCode, use `/connect`, search for `Debian Inference`, and enter your API key. The example config above sets DeepSeek V4 Flash 0731 as the default model — use `/models` to switch to GLM-5.2 if you prefer it. Then make your first prompt.

[Pi](https://pi.dev) is a minimal, extensible agent harness. Add a custom
OpenAI-compatible provider to your `~/.pi/agent/models.json` to use the service:

```
{
  "providers": {
    "debian-inference": {
      "baseUrl": "https://inference.debian.net/v1",
      "api": "openai-completions",
      "apiKey": "$DEBIAN_INFERENCE_KEY",
      "models": [
        {
          "id": "scaleway/deepseek-v4-flash-0731",
          "name": "DeepSeek V4 Flash 0731",
          "reasoning": true,
          "contextWindow": 256000,
          "maxTokens": 16384,
          "cost": {
            "input": 0.4,
            "output": 0.8,
            "cacheRead": 0.08,
            "cacheWrite": 0.4
          }
        },
        {
          "id": "scaleway/glm-5.2",
          "name": "GLM-5.2",
          "reasoning": true,
          "contextWindow": 256000,
          "maxTokens": 16384,
          "cost": {
            "input": 1.8,
            "output": 5.5,
            "cacheRead": 1.8,
            "cacheWrite": 1.8
          }
        }
      ]
    }
  }
}
```

The file reloads each time you open `/model`. Set `DEBIAN_INFERENCE_KEY` to your
key (for example via `/login` for the provider, or exporting the env var) and
pick a model with `/model`.

Active Debian Developers and Debian Maintainers. Access is granted on sign-in, based on your
status on `nm.debian.org`.

Use it for work that benefits the Debian project — for example packaging, bug triage and fixes, tooling, documentation, or anything else you're doing as a contributor. It isn't for unrelated personal tasks. The underlying resources are provided free of charge by sponsors, so please be prepared to describe, in a short report, what you used it for if asked — such reports help make the case to sponsors for continuing and growing the service.

Nothing directly — the service is provided for the Debian project and funded by a fixed monthly pool of credits from its sponsors. Spending is tracked per user over a weekly window that resets automatically, with defaults tiered by status:

| Status | Default weekly budget | 
|---|---|
| Debian Developer (DD) | $25 | 
| Debian Maintainer (DM) | $10 | 

This weekly budget is a **soft limit, in place for safety reasons** — not a hard cap on what
you may use. It exists to pace usage so the shared monthly pool isn't drained by a few heavy
users, which would leave nothing for everyone else. The limits are somewhat arbitrary and
intended as a starting point; they may evolve over time as we learn how the service is used.
Your current spend and the next automatic reset time are shown on the dashboard.

Budgets are enforced by the proxy at the user level, so the total spend across all of your keys counts toward your limit. Once you reach it, new requests fail until you renew your credits (below) or the weekly window resets. Hitting the limit is normal for intensive work — it isn't a sign that you've done something wrong.

Yes — renewing is the normal way to keep working once you've spent your weekly credits. The
**Renew credits** button on the dashboard resets your weekly spend to 0, giving you a fresh
window without changing your allowance. You can renew as soon as your credits are spent,
subject to a safety check: because everyone shares one monthly pool, a renewal is only allowed
while the predicted organization-wide monthly spend still fits comfortably inside the pool
(with a safety margin). The dashboard shows whether a renewal is currently available and the
predicted monthly spend; when it is, use the **Renew credits** button. If it isn't available,
wait for the weekly reset or [contact the team](https://salsa.debian.org/inference-team/inference-support/-/work_items/new?type=Issue).

`scaleway/deepseek-v4-flash-0731` is the recommended default: it's fast, lightweight, and
cheaper than GLM-5.2 because it differentiates cached tokens. `scaleway/glm-5.2` is a strong
general-purpose model, but it's in preview and currently charges cached input at the full
rate. Use `/v1/models` to see what's currently available.

Keys are shown only once at creation. Revoke it on the dashboard and create a new one.

Check the expiry date on the dashboard and renew if needed. If you've exceeded your budget, renew your credits from the dashboard, or wait for the weekly reset.

Yes — any tool that lets you set a custom base URL (`https://inference.debian.net/v1`) and a
Bearer token can use your key (see the examples above).

Outputs generated by the service belong to you. Scaleway does not claim any copyright or ownership over generated content.

Scaleway applies a **Zero Data Retention Policy**: prompt content is not stored, and is
explicitly not used for training, retraining, or improving the base models. Data is not
accessible to the LLM creators or to third parties. Only anonymized metadata (token counts,
HTTP status codes) is retained for up to 6 months for performance monitoring. Data is hosted
in Paris, France, and as a European company Scaleway is not subject to extraterritorial laws
such as the US Cloud Act. See Scaleway's
[Generative APIs privacy policy](https://www.scaleway.com/en/docs/generative-apis/reference-content/data-privacy/)
and [Specific Conditions for AI Services](https://www.scaleway.com/en/terms/) for the full
details.

Questions, feedback, or problems? Contact the Debian AI team by filing an issue at
[inference-support](https://salsa.debian.org/inference-team/inference-support/-/work_items/new?type=Issue).
