Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.openclaas.com/llms.txt

Use this file to discover all available pages before exploring further.

Tinker SDK Backend

The Tinker backend uses Tinker’s hosted inference and training APIs. No local GPU is required. Training runs against Qwen/Qwen3-30B-A3B via API credits.

Requirements

Installation

1

Clone and install

git clone https://github.com/kfallah/CLaaS.git
cd CLaaS
uv sync --extra tinker
2

Configure environment

cd docker
cp .env.tinker.example .env.tinker
Edit .env.tinker and set TELEGRAM_BOT_TOKEN and TINKER_API_KEY.
3

Start the stack

docker compose -f docker-compose.tinker.yml --env-file .env.tinker up --build
No model download needed. Inference and training happen remotely via Tinker.
4

Verify

curl http://localhost:8000/v1/models
curl http://localhost:8080/
curl http://localhost:8080/v1/lora

Services

ServicePortDescription
tinker-proxy8000OpenAI-compatible proxy backed by Tinker SDK
claas-api8080CLaaS feedback API in Tinker execution mode
openclaw18789OpenClaw gateway with Telegram bot
initOne-shot: creates LoRA via API + writes OpenClaw config

Configuration

These variables are set in .env.tinker.
VariableRequiredDefaultDescription
TELEGRAM_BOT_TOKENYesBot token from @BotFather
TINKER_API_KEYYesTinker SDK API key
MODELNoQwen/Qwen3-30B-A3BBase model (must use Tinker name)
FEEDBACK_BATCH_SIZENo4Samples per batch before distill
For the full Hydra config and all environment variables, see the Configuration Reference.

Known Gotchas

Tinker model naming: Tinker uses its own model identifiers that differ from HuggingFace names. For example, the HuggingFace model Qwen/Qwen3-Coder-30B-A3B-Instruct is Qwen/Qwen3-30B-A3B in Tinker. Sampling works with either name, but LoRA training init will reject the HuggingFace name with a 400 error. Always use the Tinker name.
CLAAS_TINKER_BASE_MODEL must match base_model: The proxy reads CLAAS_TINKER_BASE_MODEL to initialize its sampling client, and the eval config’s base_model is passed to the API for LoRA init. If they reference different models, scoring and training will target different models.