Concepts
Agents and Deployments
Understand how AgentClash turns a build plus runtime/provider resources into a concrete deployment that can be scheduled into a run.
A deployment is the workspace-scoped runnable target that AgentClash can attach to a run.
Why a deployment exists at all
AgentClash is stricter than a typical playground because it has to compare like with like. A model name by itself is not enough. The scheduler needs a concrete object that says:
- which build is being run
- which build version is current
- which runtime policy applies
- which provider credentials or model mapping are attached
That concrete object is the deployment.
The current creation contract
The current API schema for CreateAgentDeploymentRequest requires:
nameagent_build_idbuild_version_idruntime_profile_id
It also supports these optional fields:
provider_account_idmodel_alias_iddeployment_config
The OpenAPI description also says only ready build versions can be deployed.
flowchart LR
AB[Agent build] --> BV[Ready build version]
RP[Runtime profile] --> D[Deployment]
PA[Provider account] --> D
MA[Model alias] --> D
BV --> D
D --> R[Run]
Runtime profiles are the execution envelope
A runtime profile defines how aggressive or constrained execution should be. In the current API and web types, a runtime profile carries fields like:
execution_targettrace_modemax_iterationsmax_tool_callsstep_timeout_secondsrun_timeout_secondsprofile_config
That last field matters. The native executor reads runtime-profile sandbox overrides from profile_config, including things like filesystem roots and allow_shell or allow_network toggles.
The clean mental model is:
- the challenge pack defines what the workload wants
- the runtime profile defines execution ceilings and local overrides
- the deployment binds those choices to a runnable target
Provider accounts are how credentials enter the system
A provider account is a workspace resource with:
provider_keynamecredential_reference- optional
limits_config
The important detail is how credentials are stored.
If you create a provider account with a raw api_key, the infrastructure manager stores that value as a workspace secret and rewrites the credential reference automatically to:
workspace-secret://PROVIDER_<PROVIDER_KEY>_API_KEY
So the product already prefers indirection over plaintext credentials on the resource itself.
Model aliases are not just display sugar
The user question usually comes out as “provider alias” or “model alias.” In the current product surface, the real resource is model alias.
A model alias maps a workspace-friendly key to a model catalog entry, and can optionally be tied to a provider account. The current fields are:
alias_keydisplay_namemodel_catalog_entry_id- optional
provider_account_id
That gives you a stable name inside the workspace even if the underlying provider model identifier is ugly or if you need multiple account-specific mappings.
A deployment is where these pieces come together
A good way to think about the chain is:
- agent build version: what logic is being deployed
- runtime profile: how it is allowed to execute
- provider account: which credentials or spend limits back external model calls
- model alias: which model selection the deployment should use consistently
- deployment: the runnable handle used by runs
This is why the docs should not collapse deployment into “selected model.” The object is richer than that.
What the UI and CLI expose today
The current repo already exposes the resource model across multiple surfaces:
- CLI
deployment createanddeployment list - workspace pages for runtime profiles, provider accounts, model aliases, deployments, secrets, and tools
- run creation UI that asks for challenge pack and deployment selection separately
That separation is deliberate. A run is an execution event. A deployment is reusable infrastructure state.
What is stable versus still moving
The stable part is the dependency chain and the API surface. The still-moving part is how richly each resource is edited in the UI and how much automation exists around them.
So the right docs posture is:
- document the current fields and flows precisely
- avoid pretending the deployment UX is fully polished
- treat the resource model itself as real and important