OperateOrchestrator Private Preview
Policy in.
Placement out.
The Fantasti Orchestrator is the control plane under every product. It checks each request against your policy, finds capacity and quota, places the work on one fabric, recovers it after a spot stop and meters it onto one statement. Every placement leaves a record of where it landed and why.
placement: { fabric: infiniband, regions: ["us-*"] } fx.clusters.create(gpu="H100:8", nodes=8,
capacity=fantasti.OnDemand()) | Pool | Region | Fabric | Free | Result |
|---|---|---|---|---|
| pool-b us-east · fabric b | us-east | InfiniBand · fabric b | 32 | Rejected: 32 free < 64 |
| pool-c us-west · no InfiniBand | us-west | No InfiniBand | 96 | Rejected: no InfiniBand |
| pool-d eu-west · fabric d | eu-west | InfiniBand · fabric d | 128 | Rejected: region not allowed |
| pool-e eu-central · fabric e | eu-central | InfiniBand · fabric e | 320 | Rejected: region not allowed |
| pool-f us-central · fabric f | us-central | InfiniBand · fabric f | 64 | Rejected: no on-demand capacity |
| pool-g us-east · fabric g | us-east | InfiniBand · fabric g | 128 | Rejected: other GPU type |
| pool-a us-east · fabric a | us-east | InfiniBand · fabric a | 96 | Placed |
placed · us-east · fabric a · 64×H100 SXM5 · one fabric
Change a constraint to see which pools qualify.
The request was 64 × H100 SXM5 · InfiniBand · us-* · on-demand. 7 pools were checked. pool-b in us-east, fabric b was rejected: 32 free < 64. pool-c in us-west, no InfiniBand was rejected: no InfiniBand. pool-d in eu-west, fabric d was rejected: region not allowed. pool-e in eu-central, fabric e was rejected: region not allowed. pool-f in us-central, fabric f was rejected: no on-demand capacity. pool-g in us-east, fabric g was rejected: other GPU type. The job was placed in us-east, fabric a: 64 H100 SXM5 GPUs on one InfiniBand fabric.
Constraints, written once.
A policy sets what a team can run, where, on which capacity and at what price. It applies to every request from that team, whether it comes from a person, a pipeline or an agent.
- placementGPU types, the fabric and the regions
- capacityon-demand, spot and reserved, with your ceilings
- limitsGPUs, sandboxes and monthly spend
- cost_centerthe statement line a request bills to
# policy.yaml
# applies to every request from team "research"
team: research
placement:
gpus: [H100, H200, B200]
# multi-node jobs stay on one fabric
fabric: infiniband
regions: ["us-*"]
capacity:
allow: [on_demand, spot, reserved]
spot:
# USD per GPU-hour, your ceilings
max_price: { H100: 2.40, H200: 3.10 }
limits:
gpus: { H200: 32 }
sandboxes: { concurrent: 200, max_ttl: 60m }
spend: { monthly_usd: 40000 }
cost_center: research-llm Set the ceiling. The Broker works the market.
The Broker is the part of the Orchestrator that buys capacity for your work. It reads availability and spot prices across the regions, GPU types and fabrics of the capacity layer, and places each request where it fits under the max price you set.
What it reads
- 01 Availability How much capacity of each GPU type is free in each region and fabric, and whether a request of your size fits on one fabric.
- 02 Spot price Where the current spot price sits, and how it has moved.
- 03 Reclaim history How often spot capacity of that type has been reclaimed recently, from the Orchestrator's own records.
- 04 Your job GPU count, fabric requirement, checkpoint interval, deadline and budget.
Three ways to run on spot.
-
Follow the market.
No ceiling. You pay the spot price for each interval.
fantasti.Spot(max_price="follow") -
Set a max price.
You choose the most you will pay per GPU-hour. Above it, those nodes stop.
fantasti.Spot(max_price=3.10) -
Let the Broker manage it.
PlannedGive the Broker a ceiling per GPU-hour and a budget for the run. It sets the max price each time your nodes start, at or below your ceiling, and waits when the market is above it. You pay the spot price, never the max and never more than your budget.
fantasti.Spot(max_price="auto", ceiling=3.10)
import fantasti
fx = fantasti.Client()
run = fx.batch.create(
input="s3://acme-evals/prompts.jsonl",
gpu="H200:8",
# never above 3.10 per GPU-hour
capacity=fantasti.Spot(max_price="auto", ceiling=3.10),
budget=fantasti.Budget(usd=1800, deadline="72h"),
# optional: finish on on-demand, inside the budget
fallback=fantasti.OnDemand(),
start=False,
)
plan = run.broker.plan() # nothing has started
print(plan.fits, plan.outlook, plan.windows)
run.start() { "capacity": { "mode": "spot", "max_price": "auto", "ceiling": "3.10",
"currency": "USD", "unit": "gpu_hour" },
"budget": { "amount": "1800.00", "currency": "USD", "deadline": "72h" },
"fallback": { "mode": "on_demand" } } fantasti.broker_plan { "gpu": "H200:8", "ceiling": "3.10",
"budget": "1800.00", "deadline": "72h" } Output · illustrative
fits: true · outlook: low, low, medium · windows: 3 -
run.broker.plan()Before anything starts, the Broker shows its plan: the windows it expects to run in, the outlook for each, and whether the run fits your budget and deadline. If it does not fit, it says so and starts nothing.
-
max_price="auto"A max price on running nodes changes at a restart from a checkpoint, never in the middle of a step.
-
fallback=fantasti.OnDemand()If you allow it, the Broker finishes on on-demand capacity when spot cannot meet your deadline. On-demand hours count against the same budget.
Interruption outlook.
Planned
For each GPU type, region and fabric, the Broker publishes an outlook for the coming hours: low, medium or high. It is an estimate from availability, price pressure and reclaim history. It is not a guarantee, and work under a low outlook can still be interrupted.
Use it to pick a window or to size your checkpoints, or let the Broker decide.
- Scope
- us-east · fabric a
- Job
- H200:8
- Selected
- 14 h in 3 windows
- Outlook
- Low · Low · Medium
- Plan
- Fits
| GPU type | Now | +1 h | +2 h | +3 h | +4 h | +5 h | +6 h | +7 h | +8 h | +9 h | +10 h | +11 h | +12 h | +13 h | +14 h | +15 h | +16 h | +17 h | +18 h | +19 h | +20 h | +21 h | +22 h | +23 h |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| B300 | High | High | High | High | Medium | Medium | Low | Low | Low | Low | Low | Medium | Medium | High | High | High | High | High | Medium | Low | Low | Low | Low | Medium |
| B200 | Medium | Medium | Low | Low | Low | Low | Low | Low | Medium | High | High | High | Medium | Medium | Low | Low | Low | Low | Low | Low | Medium | Medium | High | High |
| H200 SXM | Low, selected | Low, selected | Low, selected | Low, selected | Low, selected | High | High | High | Low, selected | Low, selected | Low, selected | Low, selected | High | High | Medium, selected | Low, selected | Medium, selected | Medium, selected | Low, selected | High | High | High | Low | Low |
| H100 SXM5 | Low | Low | Low | Low | Low | Low | Low | Low | Medium | Medium | Low | Low | Low | Low | Low | Low | High | High | Medium | Low | Low | Low | Low | Low |
| RTX PRO 6000 | Low | Low | Medium | Low | Low | Low | Low | Low | Low | Low | Low | Low | Low | Medium | Medium | Low | Low | Low | Low | Low | Low | Low | Low | Low |
Illustrative series, not Fantasti market data. Outlook for us-east · fabric a over the coming 24 hours, in three bands: low, medium, high. B300: high for 4 h, medium for 2 h, low for 5 h, medium for 2 h, high for 5 h, medium for 1 h, low for 4 h, medium for 1 h. B200: medium for 2 h, low for 6 h, medium for 1 h, high for 3 h, medium for 2 h, low for 6 h, medium for 2 h, high for 2 h. H200 SXM: low for 5 h, high for 3 h, low for 4 h, high for 2 h, medium for 1 h, low for 1 h, medium for 2 h, low for 1 h, high for 3 h, low for 2 h. H100 SXM5: low for 8 h, medium for 2 h, low for 6 h, high for 2 h, medium for 1 h, low for 5 h. RTX PRO 6000: low for 2 h, medium for 1 h, low for 10 h, medium for 2 h, low for 9 h. For a job on H200:8 that needs 14 hours under a ceiling of 3.10 per GPU-hour, the Broker selects 3 windows, 14 hours in all, with outlooks low, low, medium. The plan fits. An outlook is an estimate, not a guarantee.
Every choice, with its reason.
The Broker record sits beside the placement record. A written rule makes each choice. A language model writes the sentence that explains it.
Planned
- Job
- H200:8
- Ceiling
- 3.10 USD per GPU-hour
- Budget
- 1,800 USD
- Deadline
- 72h
- 01. Running.
- Signal
- Outlook low · spot under ceiling
- Decision
- Start · max set under ceiling
- Rule
- Allowed: inside ceiling 3.10
- 02. Waiting.
- Signal
- Spot above ceiling
- Decision
- Wait
- Rule
- Not allowed: above ceiling
- 03. Stopped.
- Signal
- Reclaim notice
- Decision
- Checkpoint, stop
- Rule
- Notice received
- 04. Running.
- Signal
- Outlook medium · spot under ceiling
- Decision
- Resume from checkpoint
- Rule
- Allowed: inside ceiling
- 05. Held.
- Signal
- Budget nearly used
- Decision
- No new starts
- Rule
- Budget guard
Illustrative. The Broker record of one spot run of H200:8, with a ceiling of 3.10 USD per GPU-hour, a budget of 1,800 USD and a deadline of 72h. 5 decisions in order. 1: signal, Outlook low · spot under ceiling; decision, Start · max set under ceiling; rule, inside ceiling 3.10. 2: signal, Spot above ceiling; decision, Wait; rule, above ceiling. 3: signal, Reclaim notice; decision, Checkpoint, stop; rule, Notice received. 4: signal, Outlook medium · spot under ceiling; decision, Resume from checkpoint; rule, inside ceiling. 5: signal, Budget nearly used; decision, No new starts; rule, Budget guard.
- Sheet
- 01 / 03
- Title
- Broker record
- Scope
- One spot run
- Stamp
- Illustrative
One job, one fabric.
InfiniBand does not cross fabrics. The Orchestrator places every multi-node job inside a single fabric, rejects pools that cannot hold the whole job, and never presents two fabrics as one. Data moves between fabrics over object storage, and the placement record says so.
- pool-aus-east · fabric a. 96 GPUs free, 64 needed. Placed.
- pool-bus-east · fabric b. Passed over: 32 free < 64.
- pool-cus-west. Passed over: no InfiniBand.
Illustrative. A request for 64 H100 SXM5 GPUs, 8 nodes of 8, on one InfiniBand fabric. It is placed on pool-a in us-east, fabric a, where 96 GPUs are free: all 8 nodes sit inside that one fabric. pool-b, fabric b in us-east, is passed over: 32 free < 64. pool-c in us-west is passed over: no InfiniBand. The fabrics are joined only by object storage. InfiniBand does not cross from one fabric to another. Connections: 8 nodes, 64 GPUs to Leaf and spine switches, 8 links; pool-b to Leaf and spine, 4 links; InfiniBand to Object storage; Pool c to Object storage.
8 GPUs per node
- pool
- pool-a
- free
- 96
- needs
- 64
- result
- placed
8 nodes on one fabric- Free 32Needs 64
32 free < 64 - fabric
- none
no InfiniBand
8 GPUs per node
- pool
- pool-a
- free
- 96
- needs
- 64
- result
- placed
8 nodes on one fabric- Free 32Needs 64
32 free < 64 - fabric
- none
no InfiniBand
8 GPUs per node
- pool
- pool-a
- free
- 96
- needs
- 64
- result
- placed
8 nodes on one fabric- Free 32Needs 64
32 free < 64 - fabric
- none
no InfiniBand
- The placed job
- Data only, never InfiniBand
- Passed over
Your quota grows with you.
On most clouds a quota increase is a form and a wait. On Fantasti it is a calculation the Orchestrator runs before you need the answer.
A quota is a control on pay-as-you-go accounts. Prepaid credit has no instance quota: it is limited by its balance and by available capacity. Enterprise quotas are set by contract.
Early access
Three different limits
- 01 Account quota On pay-as-you-go, how much of each GPU type you can run at once. Granted by Fantasti. It grows automatically, in steps. You can cap it or turn growth off.
fx.quotas.list() - 02 Team limits Set by your admins. Automation never raises them. Agents and API keys act inside them.
gpus: { H200: 32 } - 03 Spend controls Spend caps, credit balance and spend threshold are separate. A larger quota does not raise what you may spend.
monthly_usd: 40000
How an increase happens.
- At review
- quota 16peak 13headroom 3
- Now
- quota 24peak 18headroom 6
Decisiondec_4k9t…
Hiro Quota analystAI agent
raised · 16 → 24desk · inside the limits
Illustrative. Demand for H200 GPUs on the account acme rises in steps toward its quota of 16. A dashed review line sits under the quota. When demand reaches the review line, at a peak of 13, the quota is raised one step to 24 and a decision record is written. Demand passes the old quota later and never reaches a ceiling.
- A quota is permission, not a reservation. It does not guarantee that capacity is free at the moment you ask. To guarantee capacity, reserve it.
- A refusal or a reduction always goes to senior review.
- Every change is in your audit log with its decision record.
Who decides.
A high-stakes decision goes to senior review, on the orchestrator tier. The reviewer is a different agent from the one that proposed the decision, and it records its reasoning. Everything else, agents decide inside their playbooks and log.
Up to the limits of the Direct plan there is no sales step. The Quota analyst raises your quota in steps and writes a decision record.
Illustrative. The Orchestrator compares peak use with the quota for each GPU type and opens a review near the limit. At the desk, Hiro · Quota analyst · AI agent reads usage, reservations, payments and account standing, and decides alone: quota increases in steps, up to the limits of the Direct plan. Leila · Capacity broker · AI agent decides alone: asking the capacity layer for availability and quotes. Senior review, by the orchestrator tier, is given by Ingrid · Head of Review · AI agent, and takes what they send up: increases above those limits; any refusal or reduction; a spend-threshold step outside the ladder; capacity requests. The reviewer is a different agent from the one that proposed the decision, and it records its reasoning. The owner sets the rules and the hard limits, and performs the few acts only a legal person can perform. Decision: Raise your account quota. Desk agent: Acts, in steps, up to the limits of the Direct plan. Senior review or the owner: Senior review, above those limits. Connections: Orchestrator to Hiro · Quota analyst; Orchestrator to Leila · Capacity broker; Hiro · Quota analyst to Ingrid · Head of Review; Leila · Capacity broker to Ingrid · Head of Review; Desk to The owner; Senior review to The owner.
- Peak use 13Quota 16
- review
- opened
- trigger
- usage near
- ceiling
- Usage
- Reservations
- Payments
- Standing
Decides alone: quota increases in steps,up to the limits of the Direct plan.
- files
- Decision record · per change
Decides alone: asking the capacity layerfor availability and quotes.
- files
- Capacity report · daily
- Increases above those limits
- Any refusal or reduction
- A spend-threshold step outside the ladder
- Capacity requests
The reviewer is a different agent from theone that proposed the decision, and itrecords its reasoning.
Hears every appeal.
- files
- Review record · per decision
- decision
- Raise your account quota
- decision
- Raise your account quota
- decision
- Refuse or reduce a quota
- decision
- Quote reserved capacity or a rack-scale system
- desk agent
- Acts, in steps, up to the limits of the Direct plan
- desk agent
- Acts, in steps, up to the limits of the Direct plan
- desk agent
- Never
- desk agent
- Drafts, and collects quotes from the capacity layer
- above it
- Senior review, above those limits
- above it
- Senior review, above those limits
- above it
- Senior review
- above it
- Senior review, for every reservation or capacity request
The rules and limits themselves, and the fewacts only a legal person can perform.Once the desks open, the owner does not workcases. Agents do, under the rules the ownersets.
- Peak use 13Quota 16
- review
- opened
- trigger
- usage near ceiling
- Usage
- Reservations
- Payments
- Standing
Decides alone: quota increases insteps, up to the limits of the Directplan.
- files
- Decision record · per
- change
Decides alone: asking the capacitylayer for availability and quotes.
- files
- Capacity report · daily
- Increases above those limits
- Any refusal or reduction
- A spend-threshold step outside the ladder
- Capacity requests
The reviewer is a different agent from the one that proposed the decision, and itrecords its reasoning.
Hears every appeal.
- files
- Review record · per decision
- decision
- Raise your account quota
- decision
- Raise your account quota
- decision
- Refuse or reduce a quota
- decision
- Quote reserved capacity or a rack-scale system
- desk agent
- Acts, in steps, up to the limits of the Direct plan
- desk agent
- Acts, in steps, up to the limits of the Direct plan
- desk agent
- Never
- desk agent
- Drafts, and collects quotes from the capacity layer
- above it
- Senior review, above those limits
- above it
- Senior review, above those limits
- above it
- Senior review
- above it
- Senior review, for every reservation or capacity request
The rules and limits themselves, and the few acts only a legal person can perform.Once the desks open, the owner does not work cases. Agents do, under the rules theowner sets.
- Peak use 13Quota 16
- review
- opened
- trigger
- usage near ceiling
- to
- Leila · Capacity broker
- Usage
- Reservations
- Payments
- Standing
Decides alone: quota increases in steps, up tothe limits of the Direct plan.
- files
- Decision record · per change
- to
- Ingrid · Head of Review
Decides alone: asking the capacity layer foravailability and quotes.
- files
- Capacity report · daily
- Increases above those limits
- Any refusal or reduction
- A spend-threshold step outside the ladder
- Capacity requests
The reviewer is a different agent from the onethat proposed the decision, and it records itsreasoning.
Hears every appeal.
- files
- Review record · per decision
- decision
- Raise your account quota
- decision
- Raise your account quota
- decision
- Refuse or reduce a quota
- decision
- Quote reserved capacity or a
- rack-scale system
- desk agent
- Acts, in steps, up to the
- limits of the Direct plan
- desk agent
- Acts, in steps, up to the
- limits of the Direct plan
- desk agent
- Never
- desk agent
- Drafts, and collects quotes
- from the capacity layer
- above it
- Senior review, above those
- limits
- above it
- Senior review, above those
- limits
- above it
- Senior review
- above it
- Senior review, for every
- reservation or capacity
- request
The rules and limits themselves, and the fewacts only a legal person can perform.Once the desks open, the owner does not workcases. Agents do, under the rules the ownersets.
- The traced decision
- A review opens
- Reads the rules
- Goes to senior review
-
Compare
The Orchestrator compares your recent peak use with your quota for each GPU type.
-
Read
Near the limit, the Quota analyst, an AI agent, reads your usage, reservations, payment history and account standing.
-
Raise
Up to the limits of the Direct plan there is no sales step. The Quota analyst raises your quota in steps and writes a decision record. You get a notice with the old value, the new value and the reason. The risk rules check every increase before it applies.
-
Review
Above those limits, the Quota analyst prepares the case and senior review decides. You see the analysis either way.
-
Capacity
Behind your quota, the Orchestrator requests capacity from the capacity layer ahead of demand, and places work where capacity is free. A reservation or a capacity request goes to senior review before it is placed.
One review, on record.
- Yours to set
- Spend caps and budgets belong to you. A quota review never raises them. Lock any quota and it will not change without you.
- Ask any time
- You can still request more. An agent answers with the analysis, not a queue number, and tells you what would change the result.
- Goes to senior review Planned
- The Capacity broker requests racks and reservations for a customer through a shared channel with the capacity layer, and lines up both sides. A reservation or a capacity request goes to senior review before it is placed.
- Leila Capacity brokerAI agent
The published billing-model rules still apply. They are on the Pricing page.
Read
- account
- acme
- resource
- gpu.h200
- trigger
- usage near ceiling
- commitment
- rsv_… · 6 months
- payments
- in good standing
- risk
- clear
Decided
- decision
- raised · 16 → 24
- decided by
- Hiro Quota analystAI agent
- level
- desk · inside the limits
- review
- none
- notice
- email · Slack
Illustrative. Quota review dec_4k9t for account acme, resource gpu.h200. Trigger: usage near ceiling, at a peak of 13 against a quota of 16. Commitment: a 6-month reservation. Payments: in good standing. Risk: clear. Decision: raised from 16 to 24, decided at the desk by Hiro · Quota analyst · AI agent, inside the limits. Senior review: not needed. Notice sent by email and Slack.
- Sheet
- 02 / 03
- Title
- Quota review record
- Record
- dec_4k9t…
- Stamp
- Illustrative
Cap it, lock it, or ask for more.
Read your quota, recent peak and headroom for each GPU type. Set a cap, turn automatic growth off, or request an increase with a reason. Each change emits an event your systems can listen for.
Events
quota.increasedquota.review_openedquota.request_decided
# quota, recent peak and headroom per GPU type
fx.quotas.list()
fx.quotas.auto_growth(
enabled=True,
cap={"H200": 64, "B200": 32},
)
fx.quotas.request(
gpu="B200", to=48,
reason="January fine-tuning run",
) Output · illustrative
quotas.list H200 · quota 24 · peak 18 · headroom 6
auto_growth on · cap H200 64 · B200 32
request B200 to 48 · review opened Limits people set and agents cannot raise.
Agents and API keys act inside these limits. Changing a limit requires an organization admin.
| Control | What it limits | Set by |
|---|---|---|
| Team GPU limitlimits.gpus | GPUs per type, per team | Organization admins |
| Sandbox capslimits.sandboxes | Concurrent sandboxes, maximum time-to-live, allowed GPU types | Organization admins |
| Spend caplimits.spend | Monthly spend per team or project | Organization admins |
| Max pricecapacity.spot.max_price | The most a team pays per GPU-hour on spot, per GPU type | Team policy |
| Agent key budget | What one agent key may spend before new launches stop | Whoever creates the key |
| Cost centercost_center | Which statement line a request bills to | Team policy |
One statement, split by cost center.
Every product on one statement, metered by the second, billed hourly. Each line names its cost center, listing, region and rate, so finance can reconcile without a spreadsheet.
Statement · Illustrative
| Cost center | Product | Listing | Pool | Metered GPU·s | Billed GPU·hr | Rate | Amount |
|---|---|---|---|---|---|---|---|
| cc-4102research | GPU Clusters, on-demand | H100 SXM5 | us-east | 21,024,000 | 5,840.00 | $5.40 | $31,536.00 |
| cc-4102research | GPU Instances, on-demand | H200 SXM | us-east | 1,843,200 | 512.00 | $5.94 | $3,041.28 |
| Subtotal cc-4102 | $34,577.28 | ||||||
| cc-2207evals | Batch Inference, spot | H100 SXM5 | us-central | 1,476,000 | 410.00 | $2.11 | $863.56 |
| cc-2207evals | Sandboxes | L40S | us-east | 301,968 | 83.88 | $1.86 | $156.02 |
| Subtotal cc-2207 | $1,019.58 | ||||||
| cc-3310serving | Serverless, on-demand | RTX PRO 6000 | us-central | 2,628,000 | 730.00 | $2.16 | $1,576.80 |
| Subtotal cc-3310 | $1,576.80 | ||||||
| Total | $37,173.66 | ||||||
| Cost center | Line | Billed GPU·hr | Rate | Amount |
|---|---|---|---|---|
| cc-4102 | GPU Clusters, reserved · B200 · rsv_7d2k | 11,680.00 | Order form | Per order form |
| account | Support plan · Direct | Monthly | Flat | $1,000.00 |
Identity
- 01 Early access
Single sign-on
SAML and OIDC connections per organization.
- 02 Early access
Role-based access
Roles per organization and project, applied to every product.
- 03 Private Preview
API and agent keys
Scoped, revocable and shown once at creation.
- 04 Planned
Audit log
Account, role, key and resource actions, with export.
- Sheet
- 03 / 03
- Title
- Limits, statement and identity
- Reviewed
- 2026-10-10
Questions about the Orchestrator.
Placement
Does the Orchestrator move running jobs?
Can I keep a workload in one region?
What happens when no pool qualifies?
placing until its timeout, then returns an error listing the closest pools and the constraint each one failed.The Broker
Does the Broker compete against other accounts for me?
Can the Broker spend more than my budget?
How accurate is the outlook?
Is a language model choosing my price?
Quota