nnesly

Add an AI model to your app with one command — no GPU to rent, no API account elsewhere, no key to paste.

nesly runs open models on its own GPUs, in the same region as your application. nesly addon add model qwen3-8b gives the project an OpenAI-compatible endpoint and a key; they arrive as environment variables, so the OpenAI SDK works with no arguments. Prompts and answers are not stored; only token counts are, for the bill.

app.ts
// nesly addon add model qwen3-8b --yes
import OpenAI from "openai"

const client = new OpenAI() // reads OPENAI_BASE_URL and OPENAI_API_KEY
const reply = await client.chat.completions.create({
  model: process.env.NESLY_AI_MODEL,
  messages: [{ role: "user", content: "Summarise this ticket in one line." }],
})
console.log(reply.choices[0].message.content)
113 tok/s
one request, decode speed
Qwen3 8B, one request at a time
2 586 tok/s
32 requests at once, total
83 tok/s per request while 32 run
0.14 s
time to first token, p95
at 32 concurrent requests

Measured on the platform, not quoted from a datasheet

How it works

  1. 1

    Add the model

    nesly models list shows the catalog, live capacity and price per million tokens in your currency. nesly addon add model qwen3-8b attaches one to the project.

  2. 2

    Deploy

    NESLY_AI_BASE_URL, NESLY_AI_API_KEY and NESLY_AI_MODEL reach the app on its next deploy, together with OPENAI_BASE_URL and OPENAI_API_KEY unless you set your own.

  3. 3

    Call it like OpenAI

    Chat completions, completions, streaming, tool calling: any OpenAI client works unchanged — the official SDKs, LangChain, LlamaIndex, the Vercel AI SDK, or plain HTTP.

What you get

OpenAI-compatible, nothing to learn

The endpoint speaks /chat/completions, /completions and /models with the OpenAI error shape. Switching back or forth is a base URL.

In the same region as your app

Inference runs where your application runs. No cross-border hop for your users' data, and a first token in well under a second under load.

Shared, kept warm

The models are always loaded; there is no cold start to wait for and no GPU hour to pay while you think. You pay for the tokens you use.

Keys the platform manages

One key per project, server-side only. nesly addon rotate model issues a new one and kills the old; addon rm model removes both key and access. Previews share production's key.

A bill you can cap

Every token is metered against your spend cap; at the cap model requests pause and your sites keep serving. A request that fails is not charged, and a stream cut short is not either.

Bigger models on request

Qwen3 32B, Llama 3.3 70B, gpt-oss 120B, Qwen3 235B and a BGE-M3 embedding model are in the catalog as "Request access". nesly models request <id> puts you on the list; it costs nothing.

Pricing

The model add-on is part of Pro (TRY 869 a month with VAT in Turkey, $18 without VAT elsewhere). Tokens are metered per million at $0.1 / TRY 4.825 in, $0.4 / TRY 19.3 out and $0.015 / TRY 0.7238 for embeddings, in your account's currency.

  • The monthly credit included in Pro covers tokens first; past it, usage counts toward the spend cap you set.
  • A request that fails is not charged; a stream that is cut before it finishes is not charged.
  • Models marked "Request access" have no price and cannot be billed; they are a list we read, not a product we sell yet.
See plans and allowances

Model catalog

ModelContextRuns onInput / 1M tokensOutput / 1M tokens
Qwen3 8Bqwen3-8b16kA30$0.1 / TRY 4.825$0.4 / TRY 19.3
Qwen3 32Bqwen3-32b32kA100Request access
Llama 3.3 70Bllama-3.3-70b128kH100Request access
gpt-oss 120Bgpt-oss-120b128kH100Request access
Qwen3 235B A22Bqwen3-235b-a22b128kH200Request access
BGE-M3bge-m3embedding8kA30Request access

Models marked "Request access" are not served yet and have no price; asking costs nothing and promises no date. We add one when enough accounts ask for it.

Use cases

Summaries, labels and drafts inside your product

Ticket summaries, product descriptions, support replies: one call per record, from the same codebase, with no third-party account to manage.

A chat feature that streams

stream: true returns tokens as they are written; 113 tokens a second is far above reading speed, so the answer feels instant.

Agents and tool calling

Qwen3 8B handles tool calls; your app's functions run where your data is, and nothing leaves the region.

Questions, answered

Which models can I add today?
Qwen3 8B for chat, code and tool calling, with a 16k context. Larger models and an embedding model are in the catalog as "Request access"; asking is free and we add one when enough accounts ask.
Are my prompts stored or used for training?
No. Prompts and answers are not logged; only the token counts are kept, for your bill.
Do I need a GPU or CUDA in my container?
No. Your app calls an HTTP endpoint. The driver, CUDA and the inference engine are the platform's job; your image stays as it is.
Is it available on the Free plan?
No. The model add-on is part of Pro. Upgrade, add the model, and the tokens are metered on your monthly bill.
How fast is it really?
Measured on the platform with Qwen3 8B: 113 tokens a second for a single request, 2 586 tokens a second in total with 32 running at once, and a first token within 0.14 s for 95 % of requests under that load.
Can I bring my own OpenAI key instead?
Yes, and nothing changes: if you set any OPENAI_* variable yourself, the platform does not inject its own, so your key goes to the URL you chose.

Related products

Give your app a model

nesly addon add model qwen3-8b --yes, deploy, and new OpenAI() just works.