clever

Get an AI line item that cannot exceed its ceiling — governed inference for teams shipping agentic features.

Built for engineering leads who want a budget they can defend. One API, a quality tier, and a hard ceiling enforced in code — no models to manage, no token rate card, no surprise invoice.

Loading the plan arithmetic…

The published range for AI subscription plans is 1.1× to 7.0×, and every plan here sits at the top of it. Every figure above comes from the same plan table the product bills from, so it cannot drift from what you pay.

Agent loops do not stop when your budget does

An agentic task burns 10–30× the tokens of a chat query, and a dashboard reports the spend after it happened. That is the arithmetic behind the reported market: 73% of organisations overran their AI budget, one company ran up a $500M month, and an audit of $34M in AI invoices found $1.7M in overcharges — so even the invoice could not be trusted.

Market figures are reported research, not our measurements.

The ceiling, in four parts

You buy a tier and an allowance

Never a model, never a per-token rate. A tier is a quality level — budget, balanced or max — and the allowance is monthly.

Every request is authorized before it runs

Past your allowance the request is refused, not billed. There is no overage anywhere in the product: you get a 429 with a reason you can read and a machine-readable upgradeRequired — the remedy is a bigger plan, not patience.

We route, and learn what suppliers charge

A supplier's price move becomes a routing change, not an outage. Your allowance is measured at vendor list rather than at what we pay for it, so a marketplace losing inventory can never lower what your dollars buy.

Permanent, not promotional

The ceiling is enforced on every request, and the table behind it is bounded by construction — not a discount campaign that can be withdrawn once it stops paying for itself.

Why now, with no countdown

Your un-capped AI spend compounds: reported bills rose ~320% while per-token prices fell ~98%, and unit prices moved 50–94% year over year — so next month's bill is a guess even when this month's volume is known. A ceiling fixes your worst case in both directions: the plan price is the most you can be charged, and falling prices buy you more inference, not less.

Nothing expires today. The only window in the product is the 14-day trial, and it starts when you start. The reason to act is the same every day.

What's your AI feature's worst case?

Pay-per-token vendors can't answer that — their worst case is unbounded, because the bill grows with the workload. Ours is a number, and the calculator works it out from the same plan arithmetic the product enforces.

Four sizes, one rate

Moving up buys a larger allowance and a higher tier — never a cheaper price per unit of inference. If a month runs long, a pack stacks on top without committing you to a bigger plan.

Loading plans…

The Ceiling Guarantee

Your invoice never exceeds your plan price. There is no overage, anywhere — a request beyond your allowance is refused before it runs, not billed after. No claim to file. No fine print. The ceiling is enforced in code, on every request, for as long as you subscribe.

And before you pay anything: 14 days free, no card, $2.80 of inference. Bring your own key if you would rather evaluate on your own provider.

The worst case is the price you already agreed to. The best case is that the margin stays yours.

What this is

The model is an implementation detail

Name a tier and you get a quality level we can keep our promise on. You never have to pick a model, and you never have to keep up with what is new.

We are bounded too

The same design that caps your spend bounds what serving it can commit us to — which is why the ceiling is permanent rather than promotional.

Built to stay up

We route every request across multiple providers. If one is slow, overloaded, or unavailable, the request goes elsewhere instead of failing.

Your key, your account

Keys are tied to your account, so one account can never spend another one's allowance. Revoke a key at any time and it stops working straight away.

Questions

What happens when I hit my allowance?

The request is refused before it runs, with a 429 and a reason you can read. Nothing is billed after it.

Do I pick a model?

No. You pick a tier and the model is an implementation detail. A request that names a model is refused rather than silently substituted, so what served you is never a guess.

What if a month runs long?

A prepaid pack stacks on top for 30 days. It costs more per unit of inference than a plan does, on purpose — it is a convenience, not a cheaper plan.

Is there an SLA?

No. We do not ship one, so we will not claim one. What exists is self-service: clever doctor, a usage dashboard, and a durable usage ledger.

Why is there no free tier?

There is a trial: 14 days free, no card, worth $2.80 of inference. After it you subscribe or inference stops, which is what keeps the trial safe to run for everybody.

Can I bring my own provider key?

Yes. In BYOK mode you pay your provider directly and your key never reaches us.

Start the free 14-day trial

Free for 14 days, no card, $2.80 of inference — then subscribe or inference stops. Or work out your worst case first: the calculator uses the same arithmetic the product enforces.

Pricing

Four sizes, one rate. Every plan is a monthly AI allowance at a quality level, and moving up buys a larger allowance and a higher tier — never a cheaper price per unit. Prices are per month in US dollars: there is no per-request charge on top, and no overage anywhere in the product.

Loading…

Every plan includes the command-line harness: the model can read, edit and run things in your project, with every write and every command shown and confirmed first. Tool rounds are ordinary requests — they spend the same allowance, and each one says what it used.

What's your worst case?

Pick the row that covers what you spend today. The worst case is the plan price — a number you agree to before the month starts — and the last column is what that buys at the published rate.

Loading the plan arithmetic…

A workload larger than the top row is a conversation — the Enterprise card above is where to start. And if a single month runs long, a pack stacks on top without changing plan.

Every figure here comes from the same plan table the product bills from, so it cannot drift from what you pay.

The Ceiling Guarantee

Your invoice never exceeds your plan price. There is no overage, anywhere — a request beyond your allowance is refused before it runs, not billed after. No claim to file. No fine print. The ceiling is enforced in code, on every request, for as long as you subscribe.

And before you pay anything: 14 days free, no card, $2.80 of inference.

Extra capacity

A pack is extra capacity for a fixed number of days — for a mid-cycle spike, without committing to a bigger plan. It never runs out early, is not transferable, has no cash value, and cannot be withdrawn.

It costs more per unit of inference than a plan does, on purpose. It is a convenience, not a cheaper way to buy.

Loading…

Questions

What happens when my allowance runs out?

The request is refused before it runs, with a 429 and a reason you can read. Nothing is billed after it. A pack, or a bigger plan, is how you go further.

Do I pay per request on top?

No. The plan price is the whole bill: there is no per-request charge and no overage anywhere in the product.

Which plan should I pick?

Whichever row above covers what you spend today — and if you are unsure, the calculator works it out from the same arithmetic the product enforces.

Do the plans differ in capability?

No. Every plan can use every modality — text, images, audio and video. The rungs differ in how much inference your allowance buys and in which service tier serves it.

Is the trial really free?

Yes — 14 days, no card, $2.80 of inference. After it you subscribe or inference stops.

Start the free 14-day trial

14 days, no card, $2.80 of inference. Or work out your worst case first — the calculator uses the same arithmetic the product enforces.

What's your AI feature's worst case?

A pay-per-token vendor cannot answer this: their worst case is unbounded, because the bill grows with the workload. This one works it out in about 30 seconds, from the same plan arithmetic the product enforces.

Your workload

The arithmetic runs in your browser. The plan numbers come from the public plan list, and nothing you type here is sent anywhere.

Your ceiling

Enter your workload to see the number.

Get the full breakdown

We'll email the calculator and the method behind it, so you have the number and the reasoning. No card, no sales call, and your email is never sold or shared — you can unsubscribe in one click, because "no spam" has to be true, not copy.

See the plans and the packs

Install the client

One command puts clever where your shell will find it: ~/.local/bin, with no node_modules created anywhere. You need Node 22 or newer.

curl -fsSL https://clever.diy/install.sh | sh

That installs clever and clever-mcp, and clever upgrade replaces them from the same place later. Then:

clever login          # opens the keys page and stores one token, 0600
clever doctor         # says what is missing, if anything is
clever chat balanced "summarise this repository"

Point an agent at it

clever-mcp speaks MCP over stdio, so any client that can start a command can use it. It reads the same credentials the CLI does and exposes the same five tools.

Let it edit files

In a conversation the client can read and write files and run commands for you — list_files, read_file, write_file, edit_file and run_command. Reads are automatic; every write and command is shown to you in full and runs only on your yes. The tools are on in a conversation, and a tool that is not a terminal gets refused rather than answering a confirmation nobody can see.

Other ways in: the quickstart takes the API directly.

Documentation

One base URL, one key, and a tier instead of a model name.

Quickstart

Base URL
https://api.clever.diy/v1

An OpenAI client works by changing this and the key — the tier goes where the model name does, because a tier is what this API promises.

from openai import OpenAI

client = OpenAI(base_url="https://api.clever.diy/v1", api_key=os.environ["CLEVER_TOKEN"])
client.chat.completions.create(
    model="balanced",  # the tier, where a model name would otherwise go
    messages=[{"role": "user", "content": "Hello"}],
)
curl https://api.clever.diy/v1/infer \
  -H "authorization: Bearer $CLEVER_TOKEN" \
  -H "content-type: application/json" \
  -d '{"tier":"balanced","messages":[{"role":"user","content":"Hello"}]}'

That is the whole shape: a tier, and messages. There is no model parameter, because naming a model is the promise this API exists to replace.

Authentication

An API key in Authorization: Bearer. Issue and revoke keys from your keys page. A signed-in browser session works too — the cookie is set at sign-in and the same endpoints accept it, which is how this site works.

Tiers

A request names a tier, never a model. Three exist:

TierWhat it is for
budgetCheap and fast, for the routine calls that do not need more
balancedThe default for most work — the quality most features actually need
maxThe best available, for the traffic you care about most

Your plan decides which tier you may ask for. Asking above it is never refused: the request is served at your plan's own tier and x-clever-tier names the tier that actually ran — so the answer is never a guess, and never silent. Your tiers and how many models sit behind each are at GET /v1/me/tiers.

Inference

RouteCapabilityNotes
POST /v1/infertextStreaming with "stream": true
POST /v1/chat/completionstextThe same call in OpenAI's shape, so an SDK works by changing its base URL — model carries the tier
GET /v1/models—What a client asks for while you are wiring it up: the three tiers, which are the only names model accepts
POST /v1/decidedecisionsStructured output

Images, speech and video

RouteCapabilityNotes
POST /v1/imagesimageNeeds a size — a per-megapixel price has no denominator without one
POST /v1/speechaudioPriced per 1,000 characters; returns bytes
POST /v1/transcriptionsaudioNeeds maxDurationSeconds, or it is refused: a per-minute price cannot be authorized without the length
POST /v1/videosvideoAsynchronous — answers 202 and a Location, never the video
GET /v1/videos/:idvideoThe job's status, charge and result URL

What a response tells you

Every response carries which model served it and what is left of your monthly allowance, so you never have to guess.

HeaderMeans
x-clever-modelThe model that actually ran — a real id, not a tier name
x-clever-tierThe tier that actually ran. If you asked above your plan, this names the tier your plan gives you instead
x-clever-value-remaining-usdWhat is left of your monthly allowance
x-clever-trial-ends-atWhen the trial ends, on a trial

When something is refused

A refusal is a normal answer with a reason and, where it applies, a upgradeRequired flag.

CodeMeans
trial_expiredThe trial has ended. Add a plan.
spend_cap_exceededYou've reached today's limit. It resets daily.
value_limit_exceededThis month's allowance is used up. Resets monthly.
model_unavailable / tier_unavailableNothing able to serve it right now
upstream_errorEvery provider tried failed. Usually temporary.

Here is one in full, because a refusal should be readable without opening a support ticket. This is the answer to naming a model instead of a tier:

{
  "error": "model_not_addressable",
  "detail": "name a tier instead: budget, balanced or max",
  "tiers": ["budget", "balanced", "max"]
}

Every wall carries the same four things: which bound you hit, what the numbers were, how much is left, and whether buying fixes it. upgradeRequired is that last one — a refusal that says "wait" when the remedy is a plan change is a refusal that wastes an afternoon.

What happens when you reach your limit

Each plan includes a monthly allowance. It is yours for the whole month, and it resets on the first of the month — not 24 hours after you signed up.

When a request would exceed it

The request is refused, not billed. You get a 429 and a reason you can read. Nothing is charged beyond what you have already used, and there is no overage on your next invoice.

Three ways forward, and none of them is waiting:

What we will never do

The other limit

There is also a requests-per-minute figure, to stop a runaway loop from taking the service down for everyone. It is not a spending limit and you are very unlikely to reach it. If you do, the error says so and asks you to slow down.

Managing your account

The same key, on your own account.

RouteDoes
GET /v1/me/usageWhat you have used this month, what is left, and your packs
GET /v1/me/tiersThe tiers your plan may use, with quality floors and availability
GET /v1/me/tokensThe keys on your account — a short prefix each, never the key
POST /v1/me/tokensMint a new named key. Shown once and unrecoverable after; revoke it with DELETE
POST /v1/me/checkoutSubscribe to a plan
POST /v1/me/packs/checkoutBuy a prepaid pack
POST /v1/me/portalThe billing page for your rail. PayPal has no hosted portal, so this answers 503 there — that rail is managed at paypal.com

Bring your own provider

If you would rather run on your own provider account and your own key, two calls connect it and use it. Your Clever allowance is not involved at all: you are paying that provider directly, so there is nothing here for us to spend.

# 1. Connect the provider. The key is held in memory for a TTL, then gone.
curl https://api.clever.diy/v1/me/sessions \
  -H "authorization: Bearer $CLEVER_TOKEN" \
  -H "content-type: application/json" \
  -d '{"baseUrl":"https://api.openai.com/v1","apiKey":"$YOUR_PROVIDER_KEY"}'

# 2. Infer through it. Here you *do* name a model: it is your provider and your key.
curl https://api.clever.diy/v1/me/infer \
  -H "authorization: Bearer $CLEVER_TOKEN" \
  -H "content-type: application/json" \
  -d '{"sessionId":"ses_...","model":"your-providers-model-id","messages":[{"role":"user","content":"Hello"}]}'

The harness

The command line is not only a chat: it works on the project you run it in. Run clever in a folder, ask for a task, and the model can list and read files, write and edit them, and run commands — on your machine, in the directory you started it in. There is nothing to switch on; --plan is the one flag that takes the write tools away.

You see everything first. Listing and reading are automatic — except a credential, which asks first, because its contents would become part of the conversation and the transcript; a write or a command is shown in full — the diff, or the exact command and where it would run — and runs only when you say so. Answering always remembers that exact command, or that exact file, for that project, and the list lives outside your repository, under ~/.local/state/clever/permissions/.

It stays in the project. A path outside the directory you started in is refused, symlinks included, and --allow-outside is the explicit way to say otherwise. A command's output is capped and the process is killed after a timeout, so a build log cannot become the next prompt.

Bring your own tools. If you use MCP servers, their tools are offered to the model beside Clever's own five — and they ask the same way: the whole call is shown before it runs.

Your files go nowhere but the prompt. A tool result is a message to the model on the same channel your own question uses, under the same allowance — no upload, no index, no telemetry. The loop runs on your machine, and the server never executes anything.

clever chat --tools balanced "add a --quiet flag to src/cli.ts and run the tests"
    clever chat --tools balanced --continue "and document it in the README"

Included with every plan, because tool rounds are ordinary requests: the metering line after each one says what it used. --plan is the same turn read-only, for looking around without changing anything.

Status

Checks that ran just now, against our live endpoints.

CheckStateRound tripDetail

What each refusal means, and what fixes it

Sign in

Forgot your password? · Create an account

Create an account

Start working in about a minute. You get a 14-day trial, no card, and nothing to install.

We don't need a confirmed email to let you work — the confirmation link is there so nobody else can claim your address.

Already have one? Sign in

Reset your password

Enter the address you signed up with and we'll send a link to set a new one.

We send the same answer whether or not an account exists on that address. If it's on file, the email is already on its way.

Choose a new password

Pick something you haven't used before. At least 10 characters — a short phrase you can recall beats a mangled word.

Setting a new password signs out every device, including any session someone else might be holding. That is on purpose.

Email confirmation

Back to your dashboard

Your account

Where your allowance stands and what you've been using.

Signed in as —

Send requests to https://api.clever.diy/v1

Your allowance

What you've been using

TierRequests this monthValue used

Last requests

WhenTierValue

Plans

A payment is confirmed by the processor and can take a moment to appear here.

Extra capacity

Playground

A real request against your own allowance, streaming as it arrives. This is the same endpoint your key calls, so whatever it costs is charged to your plan.

Advanced: system prompt and output format

Members

Everyone here shares one allowance and one bill. Invite a colleague with the address they will sign in with.

An invitation is a link that works once and expires in seven days. Joining puts them on this workspace — their requests come out of the same allowance as yours.

An address that already has a Clever account belongs to one workspace and cannot join another, so this is for someone who does not have one yet.

People

Pending invitations

Back to your dashboard

Join a workspace

Choose a password and you are in. You will be signed in straight away, on the account that invited you.

API keys

Create a key for each place you use Clever — one for production, one for local development — so revoking a leaked key doesn't take everything down with it.

A key is shown once and cannot be read again. If you lose it, revoke it and create another; nobody, including us, can recover it. Your key is scoped to your account, so one account cannot spend another's allowance.

Send requests to https://api.clever.diy/v1

A name is what makes a list revocable later: “production” tells you what would break, and an unnamed key tells you nothing.

Back to your dashboard