What your workspace costs
Goal: See what a part of your workspace is estimated to cost a month, and what a deploy adds to it, before you press Deploy.
You pay your cloud provider's own prices for your own resources. OpenX adds nothing to them. What OpenX does is ask each kind of part what it would cost at the provider's list price and put the answer where you decide.
How to read a figure
- An estimate, never a bill. Every figure says "estimate at list price". Your provider's invoice can differ: discounts, credits, taxes and how much you use are not in a list price.
- A figure that was not read is never a number. When a part could not be priced, it says "This bills." and why. It is never shown as $0, and it is not counted in a total. The total names how many parts it left out: "1 part could not be priced, so it is not counted."
- One currency at a time. If parts are priced in more than one currency, the window says so ("Parts are priced in more than one currency, so there is no one total.") and adds nothing together.
- Cost never blocks anything. Not a deploy, not a save, not an accept. It only describes.
- Read once when it is shown. A cost is asked for when a window opens or the canvas corner is drawn, and never on the canvas's regular health refresh. Opening a window again, or turning the canvas switch off and on, reads nothing new until you press Read again.
Cost in the Environment windows
The Environment windows that hold a part that bills each have a Cost section, under the window's health line: Data & IoT Fabric, Data Stores, Landing zone, Provenance and DNS & Domains. A window draws it only for a part that is stored in your workspace (saved or deployed).
- The figure. "About $X a month (estimate at list price)" for the part, and the lines it is made of: what is fixed each month plus what depends on use (the amounts it assumes are shown on the line), added up to the total.
- One expander holds what the figure leaves out or assumes: the lines that are not counted, hourly prices, the currency, the region, the date of the price list and where the price came from.
- A part that could not be priced says "This bills." and why. It is never shown as $0.
- Read once, then kept. The section reads when the window opens. Opening the window again shows what it already has. Press Read again to ask now. It is never refreshed by the canvas's regular health refresh.
- It describes, it does not decide. The section never blocks a save or a deploy.
- Your own amounts. Under a part whose estimate was read you can change the amounts it assumes. See Change the amounts an estimate assumes.
What each line says
The section has one block for each record in the window that bills. A record whose kind has no cost to show gets no block, and a window with none of them has no section at all.
| What you see | What it means |
|---|---|
| "About $X a month (estimate at list price)" | The record's estimate. A whole amount drops its cents ($25); a unit price keeps up to six places |
| One line for each part of the price | Its label, how it is priced (a fixed amount, or an amount at its unit price), and "$X a month". A free grant is named beside its line |
| "Fixed $X + usage $Y = about $Z a month" | Shown when the estimate has both a fixed part and a usage part |
| Not counted, and hourly | One expander: what is left out of the figure, each hourly price, the currency, the region ("Priced for ..."), the date the prices are from, and the source |
| "This bills." and a reason | The record could not be priced. It is never $0 and it is not counted |
| "The estimate could not be read just now." | The read failed. There is no number, and nothing else in the window is blocked |
| "Reading the estimate..." | The read is running |
- Change the settings and it reads again. Reopening with the record's saved settings unchanged shows the first answer; changed settings are a new question. A read that failed is not kept, so the next open tries again.
- Health first. The read asks for the record's health and its cost only, so no device or message figures ride along.
The Deploy checkout
The Deploy window reads like a checkout. Before you press Deploy it says what the deploy adds to your monthly estimate.
| Where | What it says |
|---|---|
| A New row | "About $X a month (estimate at list price)", or "This bills." and why when the part could not be priced |
| The summary under the rows | "This deploy adds about $X a month (estimate at list price)." and "Workspace estimate after it: about $Y a month." |
| A deploy that adds nothing | "Workspace estimate after this deploy: about $Y a month (estimate at list price)." |
| Stops billing when removed | The parts the deploy removes, named, with no figure |
| A New row, opened | Fixed + usage, and the amounts it assumes: each priced line, the sum, and the amounts you can change |
How the numbers are made:
- Only new rows carry a monthly figure. A row marked Changed says nothing about cost yet. Its change needs the deployed settings priced too, and that is not built. This page will say so when it is.
- A removal is never counted as a saving. What it saves depends on use and on when it goes, so a removed part is named on its own Stops billing when removed line and the estimate after the deploy simply does not include a part that will not be there.
- The "after" figure is the whole workspace. It is every costed part that will still be there, not only what this deploy touches.
- It reads the same cost once. The Deploy window shares its read with the canvas corner below, so opening both asks the provider's prices once.
Change the amounts an estimate assumes
A line that depends on use is priced at an amount it assumes, such as how much is stored. Each amount starts at the default its price model states. You can keep your own amounts for a part, and its estimate is then read at them.
- Where. In a window's Cost section, each part whose estimate was read has a list, "Amounts this estimate assumes", with one field for each line that depends on use. In the Deploy window, each New row whose estimate was read opens to "Fixed + usage, and the amounts it assumes": each priced line, the sum, and the same fields. A Changed row has none yet. A fixed line has no field, because it assumes nothing.
- Whose amount. Beside each field it says "your amount" when an amount is kept for the part, or "the default".
- Keep. Type an amount and press Keep these amounts. The button works once a typed amount differs from the one shown. Keeping one line keeps the part's other kept amounts too. The estimate is then read again at the amounts you kept.
- Only numbers. An amount is a number at 0 or above. Anything else is named, "An amount is a number, 0 or above." and the lines it applies to, and nothing is kept.
- Back to the defaults. When the part has kept amounts, press Back to the defaults and every line of the part goes back to its default.
- Kept with the part, for everyone. The amounts are kept with the part in the workspace, not in its settings, so everyone in the workspace sees the same ones. Another tab, or another person's window, takes the change without a reload. Keeping an amount needs no Save and no Deploy, and it never marks the part Changed in the Deploy window.
- An estimate that could not be read has no amounts to change, so a price that was not read never shows an amount, a figure or $0.
- Only a person keeps an amount. The one write is
POST /api/workspaces/cost-amounts, and it takes your own OpenX session only. An agent, an app, the MCP server or an API key is refusedCOST_AMOUNTS_PERSON_ONLY: "Only a person in OpenX keeps the amounts an estimate assumes. An agent's amounts are a what-if for the estimate, never kept." - Who may. For now, keeping amounts needs the right to deploy the workspace. Without it the window says "You do not have permission to change the amounts this workspace's estimates assume."
- When a keep fails the window says why in the server's words, or "The amounts could not be kept just now." when there is no answer. Nothing is kept, and nothing else in the window is blocked.
The canvas cost view
The canvas has a Costs switch on its toolbar, next to the map button. It starts on. Turn it off and the corner goes away, and the canvas reads no cost.
- Hover it: "Costs are shown. Click to hide them." or "Costs are hidden. Click to show them."
- Your choice is remembered in this browser, and is the same each time you open the workspace here. If your browser blocks storage, the switch stays on and forgets a change when the page closes.
The corner draws one line in the bottom right of the canvas, above the controls:
Environment (IoT fabric, landing zone): about $27.08 · in all about $27.08 a month
Estimate at list price.
- Environment is the shared parts of your workspace that bill (the IoT fabric, data stores, landing zone, provenance and DNS zones that you have), named in the brackets.
- in all is the Environment plus what each canvas part adds.
- While it reads, the corner says "Reading the estimate...". If the read fails it says "The estimate could not be read just now." and no number.
- A workspace with none of these parts draws no Environment line. The corner still shows the Thinky line below when Thinky has been used this month.
- Parts that could not be priced are named under the line ("1 part could not be priced, so it is not counted.") and are not in either figure.
Thinky this month
The same corner shows how much your workspace has used Thinky, the assistant, this calendar month (UTC):
Thinky this month: 12,400 tokens in, 3,100 out (yours: 9,800 in, 2,000 out)
Tokens in are what Thinky reads; tokens out are what it writes.
- Tokens are the pieces of text Thinky's model reads and writes. The first figures are everyone in the workspace together; yours is you alone. Nobody else is named.
- Only counted tokens. The figures are the counts the model reported for each reply. A reply that came with no count is named under the line ("1 reply had no token count, so it is not in these figures.") and never guessed. A call that failed adds no tokens.
- Its own rule. The Thinky line is drawn when Thinky has been used this month, whether or not the workspace has a part that bills. A month with no Thinky use draws no Thinky line. If the read fails, the corner says "Thinky's use this month could not be read just now." and no number.
- Read once when it is shown, like the Environment line. Turning the switch off and on reads nothing new; Read again reads both lines again. With the Costs switch off, nothing is read.
- It describes. The line only shows use; it does not stop or slow Thinky.
A small tag on each canvas part that owns a billed resource, and the figure after a deploy rather than before it, arrive with the first canvas part that bills. Until then "in all" is the Environment's figure.
Open points
These sections of the cost guide are written as each part is built.
- Cost in the inspector for a canvas part that bills: not built yet, it waits for a canvas part that bills.
- The price of each tier choice and tier presets: not built yet.
- An agent asking for an estimate at amounts of its own (a what-if): not built yet.
- The cost of a Changed Deploy row, and its amounts: not built yet.
- The cost of a proposal: not built yet.
- What was actually billed, how late it is and the projection: not built yet.
Next steps
- What the Deploy window shows -> Deploy
- Cost in a window -> Data & IoT Fabric