AI release management

Ship AI changes without shipping code

Prompt, models and output contract live in one versioned Cube behind a single API call. The people who know the domain change what the AI does — eval-gated, one click from rollback — and nobody redeploys.

No credit card. 1,000 credits a month, forever.

drag to spin · click a face

POST/v1/completionsexample
{
  "prompt_id": "cbe_a1B2c3D4e5F6g7",
  "variables": { "message": "Where is my refund?" }
}
✓ 200 · 842 ms · schema valid · 1 credit
{
  "resolved": { "version_number": 14, "channel": "production" },
  "content": {
    "category": "refund",
    "urgency": "high",
    "reply": "I can help with that refund…"
  }
}

That's the whole integration — the prompt, the model stack and the schema resolve server-side.

1,284,507
completions served
8,942,116
credits settled
31,208
runs rescued by fallback this month
1,474
models in the catalog
synced daily at 04:10 UTC

AI behaviour changes weekly. Your release process wasn't built for that.

Change the model on Tuesday. Rewrite the prompt on Friday. If those edits live in your codebase, each one is a branch, a review and a deploy — and the rollback plan is a revert commit at 2am.

AI behaviour in the codebaseAI behaviour on Cubic
Prompt strings in a constants file, model names hard-coded at every call sitePrompt, model stack, strategy and output schema in one versioned Cube
A copy tweak waits for a sprint, a review and a deployEdits publish through stagingproduction in minutes; callers update on the next request
"Who changed it?" is a git blame across three reposEvery version carries an author, a change note and a computed semver; every channel move records actor and reason
Quality is checked by vibesEvals judge every version; regressions pin to the exact edit
A provider outage is a 2am hotfixThe fallback stack answers; the incident is a row in Logs

The prompt is business logic. The codebase is the wrong place for it.

The object

A Cube is a fully-specified unit of LLM work — saved once, called forever.

PROMPT

PromptThe instructions and their {{variables}}. The words live here, not in your code.

MODELS

ModelsA ranked stack drawn from the whole provider catalog, called through one interface.

STRATEGY

StrategyHow the stack works together: take turns, answer all at once, or compete.

TOOLS

ToolsSearch and read the live web before the model answers; long runs deliver by signed webhook.

VALIDATION

ValidationA JSON Schema every response is held to — checked server-side, every run.

VERSIONING

VersioningEvery publish is a computed semver you can diff, pin and roll back.

 

The prompt, the model stack, the strategy, the tools, the output contract and the version history were never six products. They were always six faces of one object — and treating them as one is what makes the whole thing versionable, priceable and safe to hand to the entire team.

Your code sends {{message}}. Everything around it is now safely editable by people who never open the repo.
Read the concepts →

Define it once. Improve it forever.

01

Define

Write the prompt in the editor, the API, the SDK — or hand the authoring guide to your coding agent. Declare typed variables and the output schema.

02

Release

Publishing computes the version for you. Promote it through staging to production; roll back by moving the pointer back.

03

Observe

Every run lands in Logs with its cost, latency and attempts. Wasted spend names the fallback rungs that failed.

04

Improve

Evals judge each version against saved tests. Outcome deltas show what your edit did to cost, p95 and pass rate.

Release management

Every change is a version. Every version is a promise.

Two runs of the same version cannot differ because someone edited the Cube in between. Pin version 12 and you get version 12's model stack — not today's.

  • Computed semverA 40% content change or a swapped rank-0 model is a major; every rule that fired is stored with the version.
  • Channelsproduction and staging are movable pointers. Promotion is one call, rollback is moving the pointer back — actor and reason recorded. Address one straight from a request: cbe_…@staging.
  • DiffsCompare any two versions: content lines, config fields, schema changes.
  • OutcomesCost per run, p95 latency, success rate and eval pass rate, per version, with deltas against the version before.
Explore release management →
Publish versionticket-triage · cbe_a1B2c3D4e5F6g7
2.3.03.0.0MAJOR

RULES THAT FIRED

content changed 46%rank-0 model swappedschema field added

CHANGE NOTE

Tightened the refund wording and moved Sonnet to rank 0.
PublishCancel
Model routing

One model is a single point of failure.

Every Cube carries a ranked stack of models and a strategy for using them. Reliability becomes a setting, not a project.

  • FallbackModels take turns until one succeeds. Retries within a run cost nothing extra, and your users never see the outage.
  • Broadcast & ContestAsk every model at once, or let them compete while a judge model picks the winner.
  • Model aliasesRe-point #fast-default once and every Cube naming it switches. A re-point that would break a Cube is blocked with a per-Cube conflict list — never forced.
  • Your keys54 providers, 1,474 models, on your own API keys: envelope-encrypted, and a failing key fails over to the next one.
Explore strategies →

FallbackRank 0 answers unless it can't. Every attempt lands in the trace with its own cost, and reordering the stack is a config change, not a deploy.

Re-point alias3 Cubes affected
#fast-defaultgpt-4o-miniclaude-haiku-4-5

BLAST RADIUS

ticket-triage3 versions pinned
invoice-extractcurrent only
call-summariserneeds audio output
Re-point blockedResolve 1 conflict to continue.
Output contracts

Responses match the schema, or they don't ship.

Attach a JSON Schema and every response is validated server-side after the model answers — provider support is a bonus, not a dependency.

  • Self-repairOn a validation failure, the same model gets one retry with the errors fed back, before the stack falls through.
  • Evals, preview-firstAn eval is saved together with the exact run you reviewed, then judges every future version. 10 credits a run, judge included.
  • The regression trailA failed eval names the version; the version names the edit and its author.
  • Text, JSON or binaryA Cube's output kind — text, structured, image, audio — is part of its contract, fixed at creation.
Explore evals →
Eval history10 cr a run · judge included
PASS v2.1.0 · refund-policy-check
PASS v2.2.0 · refund-policy-check
FAIL v2.3.0 · refund-policy-check
The answer left out the refund window, which the test requires.
PASS v2.3.1 · refund-policy-check
Cost & observability

Cost per run, per version, per caller.

Every credit is attributed — to the Cube, the version, the application that called and the tag you gave the job.

  • The trace treeA batch, a Polycube and its nested calls roll up under one request in Logs.
  • Wasted spendSee what the failed fallback rungs and losing contestants cost, and which rung to reorder.
  • SlicesUsage by project, application and tag. Tag the nightly job; read its bill in the morning.
  • ExportThe filtered request list leaves as CSV. Same filters, one file.
Explore usage →
Usage → Cubeslast 30 days · CSV
CUBERUNSCREDITSWASTED
ticket-triage48,21048,2101,904
invoice-extract12,88416,1093,341
call-summariser3,10649,660612
A position

Not every AI feature needs an agent.

An agent discovers its context in a loop: call a tool, read the result, decide, call again. Powerful — and unbounded. You can't price a run before it happens, cache it, or promise when it ends.

A Cube declares its context instead. Variables arrive typed from your caller. Function markers pull in the rest before the model runs — search the web, read a document, query your knowledge base or your database — concurrently, each stage metered, and every stage's output passed upward as data, so scraped text can never mint a call.

<<TRANSLATE::<<READ::{{document_url}}>>::language=German>>

A document read and translated into prompt context. Two stages, priced per stage, no loop anywhere.

  1. 01Declared means bounded — the ceiling on a run is arithmetic.
  2. 02Bounded means priceable before it runs.
  3. 03Priceable means cacheable, and deadline-able.
  4. 04And all of it means versionable, and one click from rollback.
  5. An open loop can promise none of those.

Most production AI features are bounded transforms: triage the ticket, extract the schema, summarise against the knowledge base, translate the filing. For those, an agent is overkill — a Cube is the whole job.

Need more than two stages? That's deliberate.

Marker nesting caps at two, and past it the pipeline becomes a Polycube: Cubes chained on a visual canvas, one Cube's output flowing into the next one's variables, the whole graph running on the same single request and versioning like a Cube — publish, promote, roll back. The graph is validated acyclic at save. A Polycube cannot loop by construction.

Explore Polycubes →

And when you do run agents, hand them Cubes as tools: versioned, priced, schema-validated — and authorable by the agent itself. The authoring guide is written to be pasted straight into a system prompt.

Works with your stack. Leaves with your blessing.

Model providers
OpenAIAnthropicGoogle GeminiDeepInfraOpenRouterand 49 more
SDK

Python, sync and async clients, typed exceptions

API

REST with the OpenAPI reference at /docs; idempotent creation

Webhooks

HMAC-SHA256-signed deliveries, stable across retries, verify helper in the SDK

Export

Usage and changelog as CSV; completion records over the API

Leaving is a supported feature.

Your provider relationships are already yours.

Cubic runs on your keys at your rates — cancel tomorrow and your OpenAI account doesn't notice.

Your data exports.

Usage, logs and the changelog leave as CSV; completion records read back over the API.

Your inference can come home.

External execution renders any Cube's resolved prompt for you to run on your own infrastructure — Cubic still versions, prices and traces the run. The exit ramp and the on-ramp are the same endpoint.

Pricing

Start free. Grow when you're ready.

Free
For developers wiring Cubic into a real app.
$0 forever
  • 1,000 credits / month
  • 5 Cubes, 2 projects
  • All strategies, Polycubes & async callbacks
  • Marketplace: buy & sell (you keep 70%)
  • Free test mode & cached runs
Get started
Starter
For individuals shipping something real.
$9 per month
  • 12,000 credits / month + rollover
  • 50 Cubes, 10 projects
  • Credit top-ups & 10% grace buffer
  • Marketplace: you keep 80%
  • 30-day analytics retention
Start Starter
Most popular
Pro
For teams running Cubic in production.
$49 per month
  • 75,000 credits / month + rollover
  • Unlimited Cubes, projects & evals
  • Batch up to 1,000 items
  • Marketplace: you keep 90%
  • 5 seats included, 90-day analytics
Start Pro
Enterprise
For large orgs with custom needs.
Custom contact us
  • Custom credit volume & limits
  • SSO, roles, audit logs & SLAs
  • Private marketplace listings
  • Negotiated take-rate
  • Dedicated support
Contact sales
What's a credit?
1 cr — run a Cube1 crBOOKS8 crCALCULATE1 crCLINICAL-TRIALS1 crCOMPANY-LOOKUP4 crCRYPTO-PRICE3 crDB1 crEARTHQUAKES1 crECONOMIC-DATA1 crECONOMIC-SERIES1 crEXCHANGE-RATE3 crFETCH1 crFILINGS1 crGAMES1 crHOLIDAYS3 crKB1 crMUSIC1 crNUTRITION1 crPACKAGE-INFO1 crPAPERS1 crPODCASTS1 crPOSTCODE3 crREAD web pages1 crREGULATIONS3 crSCRAPE3 crSEARCH5 crSHARE-PRICE1 crSPACE3 crTRANSCRIBE5 crTRANSLATE1 crTRAVEL-ADVICE1 crVEHICLE-LOOKUP1 crVULNERABILITY3 crWEATHER1 crWIKI8 cr — SCRAPE full page10 cr/page — READ documents20 cr/page — READ rich documents15 cr/min — TRANSCRIBE audio10 cr — eval runfree — test mode & cache hits$1 — top-up per 1,000 cr

Questions engineers ask, and the ones their teammates do.

What is Cubic, in one paragraph?
Cubic turns each of your LLM calls into a Cube: one versioned object holding the prompt, a ranked model stack, a strategy for using it, optional live-context tools and a JSON output contract. Your application calls one endpoint with the Cube's id and gets a validated answer back. Everything about the call — the words, the models, the schema — is edited in a dashboard, released through channels, tested by evals, and rolled back in one click, without touching your code.
I'm a PM, not an engineer — can I use this without writing code?
Yes. After an engineer wires the one API call, everything that decides what the AI actually does lives in the dashboard. You edit the prompt in a working draft that never serves traffic, test it against real inputs, review the diff, and publish — Cubic computes the version number and records your change note. You promote it to production when you're ready, and roll it back if you were wrong. Evals run against every version, so you find out an edit broke something before a customer does. What stays with engineering is what should: wiring new variables into the application, and provider key setup.
What's a credit?
One credit runs one Cube once — that's the unit. Live-context functions add small flat fees on top: a web search is 3 credits, reading a document is 10 per page, transcribing audio is 15 per minute. An eval run is 10, judge included. Test mode and cache hits are free. Top-ups are $1 per 1,000 credits, and the full schedule above is served from the same source the billing system enforces — the page and the bill can't drift.
Why do I bring my own provider keys?
Because Cubic never marks up your tokens. Your runs use your own keys — OpenAI, Anthropic, Google, DeepInfra, OpenRouter and every other provider in the registry — at your own rates; credits meter Cubic's work, not the model's. Keys are encrypted at rest, never shown again after you save them, and the full security notes live in the docs. It also means your provider relationship survives us — see the next answer.
Will this lock us in?
Leaving is a supported feature. Your provider accounts are already yours. Usage, logs and the changelog export as CSV, and completion records read back over the API. And external execution lets you render any Cube's resolved prompt and run inference on your own infrastructure while Cubic keeps versioning and tracing it — which is also how you'd leave: take the rendered prompts and go.
What's the latency overhead?
We publish the measured p50/p95 gateway overhead in the docs — this audience measures it anyway. What the architecture guarantees: Cubic holds no database connection while a provider is responding, and resolved Cube definitions are cached, so the overhead is routing work, not queueing.
Do you support streaming?
Not yet. Cubic is built for backend features, pipelines and jobs — bounded runs with validated output — rather than token-by-token chat UIs. Long-running work goes async: the API returns 202 immediately and delivers the signed result to your webhook when it finishes.
Is Cubic an agent framework?
No. A Cube is a bounded completion: it declares its context — typed variables plus pre-flight functions — instead of discovering it in a loop, which is what makes runs priceable, cacheable and versionable. Reach for Cubic when the job is a transform. When the job genuinely needs a loop, run your agent and hand it Cubes as tools: versioned, priced, schema-validated, and authorable by the agent itself.
Can we self-host?
No — Cubic is hosted SaaS, and we'd rather say so than imply otherwise. What we promise instead: your inference already runs on your own provider keys, your data exports at any time, retention windows are published per plan, and external execution means even the model calls can run on your infrastructure.
CUBIC
CUBIC
CUBIC
CUBIC
CUBIC
CUBIC

Your prompt is now an API.

1,000 free credits a month, forever. No credit card. Your first validated completion is three minutes away.

Start freeRead the docs