Skip to content
noullama

DOCUMENTATION / Developers

Local API

Connect to the local gateway with native System One requests or the OpenAI-compatible adapter.

Find your endpoint

The gateway prefers http://127.0.0.1:11435. If occupied, Noullama chooses a nearby free port, skips its private runtime port, and saves the replacement as its preferred port for future launches.

Copy the actual endpoint from Local API. A one-time notice appears when it changes. All examples here assume the default port. Changing your preferred port takes effect after restarting Noullama.

The managed llama-server uses 11436. Both services bind to localhost. Connect integrations to the gateway, not the private runtime port.

Available endpoints

POST /v1/systemone
Native decision request containing state and questions.
POST /v1/chat/completions
OpenAI-compatible adapter for a native decision request.
GET /v1/models
Model listing for clients.
GET /health
Gateway health endpoint.

Native System One request

Load a decision model before sending a request. The state describes the input and the questions define what to decide.

terminal
curl http://127.0.0.1:11435/v1/systemone \
  -H 'Content-Type: application/json' \
  -d '{
    "state": "I was charged twice. Please refund the duplicate payment.",
    "questions": {
      "team": {
        "type": "choice",
        "instructions": "Which team should handle this?",
        "criteria": {"billing": "Charges and refunds", "technical": "App errors"}
      },
      "refund": {"type": "noul", "instructions": "Is the customer asking for a refund?"}
    }
  }'

Use the OpenAI adapter

With the OpenAI Python SDK installed, point the client at your gateway’s /v1 base URL. Send one user message containing the JSON object with state and questions. The assistant message contains the native decision result as JSON.

Python
import json
from openai import OpenAI

client = OpenAI(base_url="http://127.0.0.1:11435/v1", api_key="local")
request = {
    "state": "I was charged twice. Please refund the duplicate payment.",
    "questions": {
        "refund": {"type": "noul", "instructions": "Is the customer asking for a refund?"}
    },
}
response = client.chat.completions.create(
    model="noullama",
    messages=[{"role": "user", "content": json.dumps(request)}],
    stream=False,
)
print(json.loads(response.choices[0].message.content)["answers"])

The SDK accepts api_key="local" as a placeholder. The gateway itself does not require an API key for local SDK or curl clients.

Local access

The gateway accepts requests addressed to 127.0.0.1 or localhost on its active port and rejects foreign browser origins. It is not a remote public endpoint.

The private llama-server uses a temporary key generated for each model load. Keep your integration on the gateway address shown in Local API.

Limits and image input

  • The adapter does not support chat history, tools, streaming or arbitrary chat prompts. Use stream=False.
  • Multi-select, extraction, estimates, boxes and video are not supported by this integration.
  • Requests through the gateway are limited to 16 MB.
  • Native clients may supply an images array of base64 image data URLs when the model is loaded with its projector.

Base64 adds overhead to the original image size. Keep the complete JSON request within the gateway limit, even though the desktop app has different image limits.