Documentation

Start with the quickstart and keep the reference open.

The full reference lives at soriku.com/docs. The five-minute quickstart below covers ninety percent of what you do on day one.

In code

Drop-in for the OpenAI SDK.

Change the base URL and you are done. It works with any SDK that speaks the OpenAI API, from Cursor to your own scripts.

Model auto hands the choice to the capability map. Name a model instead and Soriku uses that one.

from openai import OpenAI

client = OpenAI(
    base_url="http://localhost:8765/api/v1",
    api_key="local",
)

reply = client.chat.completions.create(
    model="auto",
    messages=[{"role": "user", "content": "Summarise this contract"}],
)
API in detail

Everything your code needs to know.

Soriku runs a local server on port 8765 that speaks the OpenAI API. Point your SDK at it and every request goes through the capability map, unless you ask for a specific model.

Base URL
http://localhost:8765/api/v1

On a team server, use its address in your network instead of localhost. Soriku EU has its own URL per workspace.

Authentication
Bearer soriku-local

Locally any key works. On a server or Soriku EU you create keys per person or per app, and you can revoke them one by one.

Endpoints
/chat/completions · /models · /embeddings

Chat, the list of models with their measured scores, and embeddings for your own search. Streaming works as in the OpenAI API.

Who answered
response.model + x-soriku-route

The response names the model that answered. The header tells you why: the category, the score and the privacy rule that applied.

Privacy per request
x-soriku-zone: local | eu | any

Force a request to stay on this machine or in the EU, whatever the default is. A request that cannot be met is refused, not rerouted.

Tools and MCP
mcp://localhost:8765

Soriku is also an MCP server. Tools you connected are only available to models within your allowlist, and every call lands in the log.