Conduct — Sizing & Capacity Planning
5 min read
Target Audience
IT decision makers and infrastructure owners budgeting for the Unique AI Conduct execution environment.
Summary
Conduct infrastructure cost scales with concurrent users — people actively running agent turns at the same moment — not total licensed users. Sandboxes shut down after 10 minutes idle, so typical daily active users translate to far fewer concurrent users than you might expect.
Three cost drivers:
Warm pool — pre-started sandboxes that guarantee instant access and can optionally scale to zero outside configured business hours.
Peak capacity — additional nodes are added on demand when active users exceed the warm pool and removed when no longer needed.
Baseline services — small support components that run on your existing infrastructure. Negligible cost.
Ballpark under the current operating model: roughly $50–90 per concurrent user per month on Azure list prices, with the lower end at scale when dynamic capacity is enabled.
Cost Scenarios
Estimates use a Standard_D8s_v5 node (8 vCPU / 32 GiB) at Azure PAYG list price (~$0.50/hour, ~$370/month always-on, ~$85/month business-hours only at ~170 hours). Your actual rate depends on region, VM family, and any Enterprise Agreement or committed-use discounts.
Scenario | Concurrent users | Dedicated nodes | Est. monthly cost (current autoscaling) | Est. monthly cost (static 24/7) | Cost per concurrent user |
|---|---|---|---|---|---|
Baseline only | 0 | 0 | Negligible † | Negligible † | — |
Small | 4 | 1 always-on | ~$370 | ~$370 | ~$93 |
Medium | 8 | 1 always-on + up to 1 on demand | ~$455 | ~$740 | ~$57 / ~$93 |
Large | 40 | 4 always-on + up to 6 on demand | ~$1,990 | ~$3,700 | ~$50 / ~$93 |
Current autoscaling adds capacity when active users exceed the warm pool and removes the additional nodes when demand falls. The estimates shown assume the warm pool remains available continuously and do not include savings from scheduled scale-to-zero. At the Large scenario, scaling only this variable capacity saves roughly 45% compared with provisioning peak capacity 24/7.
Static 24/7 provisions the full peak permanently. This is typical for on-prem deployments without a cluster autoscaler.
† Baseline services (gateway, storage, controller, router) are small and run on your existing general-purpose node pools — a fraction of one node — not on the dedicated secure-VM pool.
Cost levers you control
Lever | Effect |
|---|---|
Warm pool size | Larger pool = faster user onboarding, higher fixed monthly cost. Default: half of expected concurrent users. The configured pool can optionally scale to zero outside configured business hours. |
Idle timeout | User sandboxes terminate after 10 minutes idle. Longer timeout = fewer cold starts, more temporary capacity cost. It does not change the configured warm-pool schedule. |
Dynamic vs static capacity | Current autoscaling removes capacity added above the warm pool when demand falls. Static capacity pays for the full peak 24/7. |
VM pricing / discounts | EA or committed-use pricing can reduce node cost below list price. Same with Reservations or Savings Plans. |
Scheduled warm-pool scale-to-zero
The warm pool can optionally scale to zero outside configured business hours. This reduces fixed warm-pool cost during nights and weekends.
Active sandbox sessions are unaffected.
Sandbox claims outside business hours require a cold start.
Scaling back up depends on the required Azure VM capacity being available.
The estimates above assume a continuously available warm pool and do not include these additional savings.
What You're Paying For
Isolated sandboxes per user. Each active user gets a dedicated, VM-grade execution environment — not a shared container. This is the security model: agent code runs in hardware-isolated microVMs on a dedicated node pool. Budget ~10% node overhead for VM management.
Warm pool = instant start. Pre-created idle sandboxes eliminate the wait when a user starts an agent turn. Each warm sandbox consumes the same resources as an active one. The pool can remain continuously available or scale to zero outside configured business hours.
Baseline services = rounding error. Gateway, checkpoint storage, controller, and routing components are small pods on your standard infrastructure. They do not require dedicated nodes.
What's Not in This Number
Budget these larger cost positions separately:
LLM token consumption — billed via your model provider (Azure OpenAI, etc.), typically the largest variable cost
Core platform orchestrator (
assistants-core) — sized as part of the main Unique AI platform, not Conduct
Technical Sizing Reference
For infrastructure admins deploying Conduct.
Sizing at a Glance
What | Value |
|---|---|
One sandbox pod | 0.5 vCPU request → 2 vCPU limit, 4 GiB memory (fixed), +2 GiB ephemeral |
Baseline services (always on) | ~1.3 vCPU / ~2.4 GiB requested (4 vCPU / 3.75 GiB at limits) |
Total sandbox pods needed | concurrent users + warm pool |
Recommended warm pool | ½ of expected concurrent users, ceiled; may optionally scale to zero outside configured business hours |
Packing reference | ~6 sandbox pods per 8 vCPU / 32 GiB node |
Shared storage | 100 GiB ReadWriteMany PVC (checkpoint store) |
Sizing Formula
sandbox pods = expected concurrent users + warm pool
warm pool = ceil(concurrent users / 2)Concurrent users = users actively running agent turns at the same time, not total licensed users. User sandboxes self-terminate after 10 minutes idle (
SANDBOX_IDLE_TTL_SECONDS).Warm pool = pre-created idle pods for instant sandbox access. The ½-of-users ratio is a starting recommendation — raise it for burst-heavy usage, lower it to save cost. The configured warm pool can remain continuously available or optionally scale to zero outside configured business hours.
Capacity Breakdown
Baseline services — always running, even with zero users:
Component | Replicas | Requests (per pod) | Limits (per pod) |
|---|---|---|---|
| 2 | 250m / 512 Mi | 1 vCPU / 1 Gi |
| 2 | 100m / 128 Mi | 500m / 256 Mi |
| 1 | 100m / 128 Mi | 500m / 256 Mi |
Sandbox router | 2 | 250m / 512 Mi | 250m / 512 Mi |
Total | ~1.3 vCPU / ~2.4 GiB | ~4 vCPU / ~3.75 GiB |
Sandbox pods — one long-lived pod per active user on the dedicated Kata node pool. Each pod: 0.5 vCPU request → 2 vCPU limit, 4 GiB memory. Memory is the binding resource; CPU bursts to the limit only during active turns.
Reference Scenarios (Infrastructure Detail)
Scenario | Concurrent users | Warm pool | Sandbox pods total | CPU cores (req → limit) | Memory GiB (req → limit) | Kata nodes — current autoscaling | Kata nodes — static 24/7 |
|---|---|---|---|---|---|---|---|
Baseline only | 0 | 0 | 0 | 1.3 → 4 | 2.4 → 3.75 | 0 | 0 |
Small | 4 | 2 | 6 | 4.3 → 16 | 26.4 → 27.75 | 1 always-on | 1 always-on |
Medium | 8 | 4 | 12 | 7.3 → 28 | 50.4 → 51.75 | 1 always-on + up to 1 on demand | 2 always-on |
Large | 40 | 20 | 60 | 31.3 → 124 | 242.4 → 243.75 | 4 always-on + up to 6 on demand | 10 always-on |
CPU/memory totals include baseline services. The table assumes always-on nodes supporting the warm pool; only additional demand-driven nodes scale down. Scheduled warm-pool scale-to-zero can remove those nodes outside configured business hours.
Node Pool Requirements
Requirement | Detail |
|---|---|
Dedicated Kata pool | Sandbox pods require nodes with Kata Containers ( |
Nested virtualization | Kata nodes need nested-virtualization-capable VMs (cloud) or bare-metal/VT-x hosts (on-prem). |
Per-node overhead | Each Kata pod is a microVM with its own guest kernel — budget ~10% node capacity for VM overhead and daemonsets. ~6 sandbox pods fit an 8 vCPU / 32 GiB node. |
General-purpose nodes | Baseline services run on standard node pools; no special runtime needed. |
Storage
Item | Size | Notes |
|---|---|---|
Checkpoint store PVC | 100 GiB, ReadWriteMany | Workspace checkpoints, capped at 100 MB compressed per chat |
Sandbox | 2 GiB per pod | Ephemeral (emptyDir), released with the pod |