Cua daemon

cua.daemon.v1: the local cua daemon API for sandboxes, local runtimes, Spaces, its identity and the media bridge.

The local cua daemon API (a Unix socket on the host, not cua-spacesd): sandbox lifecycle across locations, the local runtimes and images it orchestrates, Spaces and the machines that provide them, its identity (GetInfo) and the loopback media bridge for webviews.

Source: libs/cua/proto/cua/daemon/v1/sandboxes.proto, libs/cua/proto/cua/daemon/v1/runtime.proto, libs/cua/proto/cua/daemon/v1/spaces.proto, libs/cua/proto/cua/daemon/v1/daemon.proto.

SandboxService#

cua.daemon.v1.SandboxService

Sandbox lifecycle across providers (Fleet, local VMM, direct).

Sandboxes are daemon-agnostic: nothing here assumes cua-spacesd is installed in the guest.

SandboxService.ListSandboxes#

/cua.daemon.v1.SandboxService/ListSandboxes, unary: ListSandboxesRequest to ListSandboxesResponse.

Lists sandboxes known to the daemon.

SandboxService.CreateSandbox#

/cua.daemon.v1.SandboxService/CreateSandbox, unary: CreateSandboxRequest to CreateSandboxResponse.

Creates a sandbox where location says (local by default), or connects to an existing machine (direct:<addr>).

SandboxService.CreateSandboxStream#

/cua.daemon.v1.SandboxService/CreateSandboxStream, server stream: CreateSandboxStreamRequest to CreateSandboxStreamResponse.

CreateSandbox, streaming what the create is doing: progress events (pulling the image with its bytes, creating, booting, waiting for the probes) in order, then exactly one result. A failed create ends the stream with its status. Closing the stream cancels the create, as for a CreateSandbox whose caller goes away.

SandboxService.CancelCreateSandbox#

/cua.daemon.v1.SandboxService/CancelCreateSandbox, unary: CancelCreateSandboxRequest to CancelCreateSandboxResponse.

Cancels a CreateSandbox of a named sandbox still running: the work in flight stops (an image download, a boot, a claim) and what the create made is deleted; a sandbox of that name that existed before is never touched. Finished image downloads stay cached. Returns once the clean-up is done. Idempotent: cancelled is false when no create of that name was running. A CreateSandbox whose caller goes away (a closed connection) is cleaned up the same way.

SandboxService.GetSandbox#

/cua.daemon.v1.SandboxService/GetSandbox, unary: GetSandboxRequest to GetSandboxResponse.

Returns one sandbox.

SandboxService.DeleteSandbox#

/cua.daemon.v1.SandboxService/DeleteSandbox, unary: DeleteSandboxRequest to DeleteSandboxResponse.

Deletes (or releases, or detaches from) a sandbox.

SandboxService.ConnectSandbox#

/cua.daemon.v1.SandboxService/ConnectSandbox, unary: ConnectSandboxRequest to ConnectSandboxResponse.

Reattaches to a sandbox by ref (a state file, a live cloud claim or an address) and keeps the handle in the daemon.

SandboxService.SuspendSandbox#

/cua.daemon.v1.SandboxService/SuspendSandbox, unary: SuspendSandboxRequest to SuspendSandboxResponse.

Suspends a sandbox (local: pause; Fleet: scale to zero).

SandboxService.ResumeSandbox#

/cua.daemon.v1.SandboxService/ResumeSandbox, unary: ResumeSandboxRequest to ResumeSandboxResponse.

Resumes a suspended sandbox.

SandboxService.RestartSandbox#

/cua.daemon.v1.SandboxService/RestartSandbox, unary: RestartSandboxRequest to RestartSandboxResponse.

Restarts a sandbox.

SandboxService.KeepAlive#

/cua.daemon.v1.SandboxService/KeepAlive, unary: KeepAliveRequest to KeepAliveResponse.

Extends a Fleet claim lease.

SandboxService.WaitReady#

/cua.daemon.v1.SandboxService/WaitReady, unary: WaitReadyRequest to WaitReadyResponse.

Waits until user-declared readiness probes pass.

SandboxService.ServiceRequest#

/cua.daemon.v1.SandboxService/ServiceRequest, unary: ServiceRequestRequest to ServiceRequestResponse.

Sends one HTTP request to a named service of a sandbox. Credentials (for example the Fleet bearer) stay in the daemon.

SandboxService.ForwardPort#

/cua.daemon.v1.SandboxService/ForwardPort, unary: ForwardPortRequest to ForwardPortResponse.

Forwards a daemon loopback port to a guest port.

SandboxService.CloseForward#

/cua.daemon.v1.SandboxService/CloseForward, unary: CloseForwardRequest to CloseForwardResponse.

Stops a forward started by ForwardPort.

SandboxService.GetEnvEndpoint#

/cua.daemon.v1.SandboxService/GetEnvEndpoint, unary: GetEnvEndpointRequest to GetEnvEndpointResponse.

Probes cua-spacesd in the sandbox and returns the daemon's loopback passthrough endpoint for it. cua.env.v1 calls sent there are proxied with the sandbox credentials attached by the daemon.

SandboxService.GetServiceEndpoint#

/cua.daemon.v1.SandboxService/GetServiceEndpoint, unary: GetServiceEndpointRequest to GetServiceEndpointResponse.

The daemon's loopback passthrough for a named service of a sandbox: any HTTP request (any method, streamed both ways, headers passed through) sent to url + path reaches that path on the service with the sandbox's route and credentials attached by the daemon. For MCP clients, SSE and anything else served over HTTP.

SandboxService.GetServiceUrl#

/cua.daemon.v1.SandboxService/GetServiceUrl, unary: GetServiceUrlRequest to GetServiceUrlResponse.

Returns a URL for a named service usable from this machine without credentials: the published loopback port locally, a signed service URL in the cloud.

SandboxService.CreatePublicUrl#

/cua.daemon.v1.SandboxService/CreatePublicUrl, unary: CreatePublicUrlRequest to CreatePublicUrlResponse.

Creates a shareable URL for a named service that expires: a signed service URL in the cloud; locally a loopback proxy URL with its own token, served by the daemon.

SandboxService.RevokePublicUrl#

/cua.daemon.v1.SandboxService/RevokePublicUrl, unary: RevokePublicUrlRequest to RevokePublicUrlResponse.

Revokes a URL created by CreatePublicUrl.

RuntimeService#

cua.daemon.v1.RuntimeService

Local runtime provisioning (cua runtime doctor|setup).

RuntimeService.Doctor#

/cua.daemon.v1.RuntimeService/Doctor, unary: DoctorRequest to DoctorResponse.

Inspects local runtimes (Lume, QEMU, container engine, runsc) without changing anything.

RuntimeService.Setup#

/cua.daemon.v1.RuntimeService/Setup, unary: SetupRequest to SetupResponse.

Installs or starts missing local runtime components. Every step is explicit and logged in the response.

RuntimeService.PullImage#

/cua.daemon.v1.RuntimeService/PullImage, unary: PullImageRequest to PullImageResponse.

Pulls an image into the local cache or container engine.

RuntimeService.BuildImage#

/cua.daemon.v1.RuntimeService/BuildImage, unary: BuildImageRequest to BuildImageResponse.

Builds an image from an images.cua.ai/v1alpha1 Image resource.

RuntimeService.PushImage#

/cua.daemon.v1.RuntimeService/PushImage, unary: PushImageRequest to PushImageResponse.

Copies an image (host architecture) to another registry reference.

SpaceService#

cua.daemon.v1.SpaceService

Spaces: sandboxes with Spaces features (cua-spacesd, streams, agents, teleport) that the user works in interactively. The daemon hosts one cua_spaces::Spaces runtime: the registry in ~/.cua/spaces.json (tokens in the 0600 spaces-credentials.json), Space creation in every location, hotspots, and the Spaces MCP server (CallSpaceTool, cua daemon mcp, /mcp).

Verbs: CreateSpace / DeleteSpace create and delete the sandbox; AddSpace / RemoveSpace register an existing machine and forget it without touching it.

SpaceService.AddSpace#

/cua.daemon.v1.SpaceService/AddSpace, unary: AddSpaceRequest to AddSpaceResponse.

Adds an existing machine as a Space by address (host:port, a direct http(s)://host:port, or a sandbox ref such as cloud:<name>) after a GetCapabilities handshake.

SpaceService.ListSpaces#

/cua.daemon.v1.SpaceService/ListSpaces, unary: ListSpacesRequest to ListSpacesResponse.

Lists registered Spaces.

SpaceService.RemoveSpace#

/cua.daemon.v1.SpaceService/RemoveSpace, unary: RemoveSpaceRequest to RemoveSpaceResponse.

Forgets a Space. Does not delete the underlying sandbox.

SpaceService.ResolveSpace#

/cua.daemon.v1.SpaceService/ResolveSpace, unary: ResolveSpaceRequest to ResolveSpaceResponse.

Resolves any accepted spelling (id, legacy id, URL, name) to a Space.

SpaceService.ClaimFleetSpace#

/cua.daemon.v1.SpaceService/ClaimFleetSpace, unary: ClaimFleetSpaceRequest to ClaimFleetSpaceResponse.

Deprecated.

Deprecated: use CreateSpace with location "cloud".

SpaceService.ProvisionLocalSpace#

/cua.daemon.v1.SpaceService/ProvisionLocalSpace, unary: ProvisionLocalSpaceRequest to ProvisionLocalSpaceResponse.

Deprecated.

Deprecated: use CreateSpace with location "local".

SpaceService.ReleaseSpace#

/cua.daemon.v1.SpaceService/ReleaseSpace, unary: ReleaseSpaceRequest to ReleaseSpaceResponse.

Deprecated.

Deprecated: use DeleteSpace.

SpaceService.CreateSpace#

/cua.daemon.v1.SpaceService/CreateSpace, unary: CreateSpaceRequest to CreateSpaceResponse.

Creates a Space (a sandbox, registered as a Space) where location says, with the same location / kind / runtime model as SandboxService.CreateSandbox.

SpaceService.CreateSpaceStream#

/cua.daemon.v1.SpaceService/CreateSpaceStream, server stream: CreateSpaceStreamRequest to CreateSpaceStreamResponse.

CreateSpace, streaming what the create is doing: progress events (pulling the image, booting, waiting for cua-spacesd, connecting) in order, then exactly one result. A failed create ends the stream with its status after the progress it made.

SpaceService.CancelCreateSpace#

/cua.daemon.v1.SpaceService/CancelCreateSpace, unary: CancelCreateSpaceRequest to CancelCreateSpaceResponse.

Cancels a create that is still running, found by the caller's create_id, the id the Space will have (every progress event carries it in space) or its name: the work in flight stops (an image download, a boot, a claim, a relay registration) and what the create made is removed (its VM or container and disks, its cloud claim, its relay machine, its registry entry). Nothing that existed before is touched; finished image downloads stay cached so the next create resumes. Returns once the clean-up is done; the create itself ends with DAEMON_ERROR_REASON_CANCELLED. Idempotent, and works for a create another process runs or one a daemon restart cut off.

SpaceService.GetGpuSupport#

/cua.daemon.v1.SpaceService/GetGpuSupport, unary: GetGpuSupportRequest to GetGpuSupportResponse.

The GPU options each runtime of a location offers on this host (the wizard's GPU row; gpu of CreateSpace).

SpaceService.DeleteSpace#

/cua.daemon.v1.SpaceService/DeleteSpace, unary: DeleteSpaceRequest to DeleteSpaceResponse.

Deletes a Space's sandbox and forgets it. A Space added by address (direct:, relay:) is only forgotten: cua did not create it.

SpaceService.ConnectSpace#

/cua.daemon.v1.SpaceService/ConnectSpace, unary: ConnectSpaceRequest to ConnectSpaceResponse.

Connects to a registered Space and returns a loopback env passthrough (<loopback>/v1/spaces/<key>/env) that carries the Space's credentials, so a client runs every cua.env.v1 call and media WebSocket through the daemon without seeing the Space's token.

SpaceService.ListSpaceTools#

/cua.daemon.v1.SpaceService/ListSpaceTools, unary: ListSpaceToolsRequest to ListSpaceToolsResponse.

Lists the Spaces MCP tools (tools/list result as JSON).

SpaceService.CallSpaceTool#

/cua.daemon.v1.SpaceService/CallSpaceTool, unary: CallSpaceToolRequest to CallSpaceToolResponse.

Calls one Spaces MCP tool (the same implementation cua daemon mcp and /mcp serve).

SpaceService.ListHosts#

/cua.daemon.v1.SpaceService/ListHosts, unary: ListHostsRequest to ListHostsResponse.

Your machines that provide Spaces (the account's relay hosts and the hosts added by their Tailscale or LAN address), each asked for its limits: what CreateSpace takes as on="host:<id>" (the New Space wizard's Run on menu). One that does not answer is listed offline when it provided a Space before.

SpaceService.GetSpaceThumbnail#

/cua.daemon.v1.SpaceService/GetSpaceThumbnail, unary: GetSpaceThumbnailRequest to GetSpaceThumbnailResponse.

The Space's latest thumbnail (a small JPEG of its primary display) from the daemon's cache, which every client on this machine shares: the cached image when it is younger than max_age, else a fresh capture through cua-spacesd (the cached one again, with its older captured_at, when the capture fails). Asking keeps the daemon refreshing running Spaces' thumbnails in the background for a while.

DaemonService#

cua.daemon.v1.DaemonService

The daemon itself: identity, the loopback bridge for webviews, shutdown.

DaemonService.GetInfo#

/cua.daemon.v1.DaemonService/GetInfo, unary: GetInfoRequest to GetInfoResponse.

Returns the daemon identity and its loopback endpoint.

DaemonService.OpenMediaBridge#

/cua.daemon.v1.DaemonService/OpenMediaBridge, unary: OpenMediaBridgeRequest to OpenMediaBridgeResponse.

Opens a media session in a sandbox and returns a loopback WebSocket URL that relays it. The URL carries a short-lived bridge ticket; the browser never sees the Fleet bearer or the spacesd token.

DaemonService.Shutdown#

/cua.daemon.v1.DaemonService/Shutdown, unary: ShutdownRequest to ShutdownResponse.

Stops the daemon after the response is sent.

Types in cua/daemon/v1/sandboxes.proto#

Sandbox#

A sandbox.

Field#TypeDescription
name1stringName (unique within its location; see id).
provider2SandboxProviderProvider.
state3SandboxStateState.
image4stringImage reference, for example "ghcr.io/trycua/linux:24.04".
endpoints5map of string to stringReachable endpoints by service name, for example {"env": "http://127.0.0.1:52011"&#125;.
labels6map of string to stringUser labels.
created_at7google.protobuf.TimestampCreation time.
error8stringFailure reason when state is SANDBOX_STATE_FAILED.
runtime_type9stringRuntime identifier as persisted in the state file (fleet, direct, docker, qemu, lume, ...).
ephemeral10boolTrue when the sandbox has no state file and is torn down on delete.
services11map of string to uint32Declared services: logical name to guest port (0 when only the name is known, for example on Fleet).
location12stringWhere the sandbox runs: "local", "cloud", "direct" (a machine reached by address) or "relay".
expires_at13google.protobuf.TimestampWhen the sandbox expires unless kept alive. Unset when unknown or never (cloud sandboxes held by the daemon are renewed while held).
provider_details14map of string to stringProvider internals for debugging (cloud: pool, namespace, claim; local: backend, container_id). Not part of the portable API.
id15stringQualified ref: "local:<name>", "cloud:<name>" or "direct:<host:port>". Every request's name accepts it (and a bare name when that name is unique across locations).
kind16stringWhat kind of machine it runs as: "container" or "vm"; empty when not known (an existing machine, or a cloud sandbox this daemon did not create).
runtime17stringThe engine that runs it: "gvisor", "runc", "qemu", "lume" or "kubevirt"; empty when not known.
stop_reason18stringWhy a local sandbox stopped without being asked to, in plain words: "out of memory", "killed", "exited" or "exited with code N". Empty otherwise, and once it is started again.

ReadinessProbe#

A user-declared readiness probe. With no probes a sandbox is ready as soon as its provider reports it running.

Field#TypeDescription
port1uint32Guest port to probe.
http_path2stringHTTP path. Empty means a TCP connect probe.
http_status3uint32Exact HTTP status to wait for. 0 accepts any 2xx.

Sidecar#

An extra container sharing a sandbox's network namespace: the sandbox reaches its ports on localhost, and services may name them. Local containers and cloud container (gVisor) sandboxes only.

Field#TypeDescription
name1stringName, unique within the sandbox (a DNS label other than main). Empty derives it from the image.
image2stringImage reference.
command3repeated stringargv replacing the image's entrypoint. Empty lets the image decide.
env4map of string to stringEnvironment (plain values, not secrets).
ports5repeated uint32Ports it listens on.

RegistrySecret#

Credentials for a private registry. Write-only: never logged, stored in state files or returned.

Field#TypeDescription
registry1stringRegistry host (ghcr.io, localhost:5000). Empty means the image's.
username2stringUser name (AWS for ECR tokens).
password3stringPassword or token.

ImageLayer#

One image build step, as in images.cua.ai/v1alpha1 recipes.

Field#TypeDescription
type1stringapt_install, pip_install, uv_install, run or app_install.
packages2repeated stringPackages (the install types).
command3stringShell command (run).
app_id4stringApp id (app_install).

BuildFile#

A local file copied into a built image.

Field#TypeDescription
source1stringPath on the daemon's machine.
destination2stringAbsolute path in the image.

ImageBuild#

Image layers built on top of the sandbox's image. Cloud: a remote build through the images API, cached by content.

Field#TypeDescription
layers1repeated ImageLayerSteps, in order.
env2map of string to stringImage environment.
ports3repeated uint32Ports the image exposes.
files4repeated BuildFileFiles copied into the image.
timeout5google.protobuf.DurationBuild budget. Unset uses one hour.

ListSandboxesRequest#

Request for SandboxService.ListSandboxes.

Field#TypeDescription
provider1SandboxProviderDeprecated. Deprecated: use location. Only sandboxes of this provider. Unspecified lists all.
include_cloud2optional boolAlso list the account's live Fleet claims (not only the ones this machine knows) when the provider filter allows cloud sandboxes. Unset means true. Without Fleet credentials nothing is added.
location3stringOnly sandboxes in this location: "local", "cloud" or "direct". Empty lists every location. Wins over provider.

ListSandboxesResponse#

Response for SandboxService.ListSandboxes.

Field#TypeDescription
sandboxes1repeated SandboxSandboxes.
warnings2repeated stringWhat the listing left out, for example "cloud sandboxes not listed: <reason>". The listing still succeeds.

CreateSandboxRequest#

Request for SandboxService.CreateSandbox.

Field#TypeDescription
name1stringDesired name. Empty lets the daemon generate one.
provider2SandboxProviderDeprecated. Deprecated: use location. Used only when location is empty.
image3stringImage reference (local and cloud sandboxes).
pool4stringCloud: claim from this existing pool (Fleets advanced API).
url5stringDeprecated: use location "direct:<addr>". The address of an existing machine.
token6stringAccess token for the direct provider's spacesd, if any.
labels7map of string to stringUser labels.
os8stringGuest OS: linux (default), macos or windows.
cpus9uint32vCPUs. 0 uses the provider default.
memory_mb10uint64Memory in MiB. 0 uses the provider default.
ports11repeated uint32Extra guest ports to publish (local) or expose as port-<n> services (Fleet).
services12map of string to uint32Named services: logical name to guest port. env defaults to 3211.
wait_for13repeated ReadinessProbeReadiness probes.
ready_timeout14google.protobuf.DurationTotal readiness budget. Unset uses the provider default.
env15map of string to stringGuest environment. Local: container environment or cloud-init; cloud: the template environment (hashed into the managed pool key).
fleet_runtime16stringDeprecated. Deprecated: use runtime. Cloud runtime (kubevirt, gvisor), used when runtime is empty.
fleet_replicas17uint32Deprecated: initial replicas of a new managed Fleet pool (> 0 means warm). 0 leaves it to fleet_warm.
fleet_ttl_seconds18uint32Fleet claim TTL in seconds after creation. 0 uses the default (managed pools: CUA_FLEET_CLAIM_TTL, renewed by the daemon while the sandbox is held).
fleet_warm19optional boolManaged Fleet pools (no pool): start a new pool with one warm replica. Unset uses CUA_FLEET_WARM. Existing pools are never resized.
fleet_max_pool_size20uint32Managed Fleet pools: autoscaling ceiling. 0 uses the default (CUA_FLEET_MAX_POOL_SIZE, 10).
command21repeated stringThe sandbox's command (argv), replacing the image's entrypoint. Empty lets the image decide. Local containers: ENTRYPOINT; local Linux VMs: run by cloud-init; cloud pod runtimes: the template command. Cloud VMs (KubeVirt) and macOS guests reject it.
sidecars22repeated SidecarSidecar containers sharing the sandbox's network namespace. Local containers and cloud container sandboxes; VMs reject them.
registry_secret23RegistrySecretCredentials for a private image (and sidecar images on its registry): local pulls use them; the cloud stores them as the sandbox's registry pull Secret. Never logged or returned.
build24ImageBuildImage layers built on top of image before the sandbox starts.
container_runtime25stringDeprecated. Deprecated: use runtime. Local container sandboxes: runc or gvisor, used when runtime is empty. Cloud sandboxes ignore it.
fleet_apply26boolWith pool: update that pool's template to the sandbox fields given here (image, command, env, services, sidecars, cpus, memory) instead of failing with POOL_SPEC_MISMATCH when they differ. Managed pools refuse.
owner_pid27uint32The client process that owns an ephemeral sandbox (no name). The daemon records it in the sandbox's lease, so a local ephemeral sandbox is reaped after its client dies even while the daemon runs. 0: the daemon itself owns it.
network28stringGuest network: empty or default gives outbound network (like a Docker container); none cuts egress while published ports still work. Only local QEMU VMs honour none; containers, Lume and cloud sandboxes reject it.
location29stringWhere it runs: "local", "cloud", "direct:<addr>" (an existing machine running cua-spacesd), or a registered provider (SANDBOX_PROVIDER_CONTRIB, e.g. "e2b"). Empty uses the default (default.on in the config, CUA_DEFAULT_ON, else "local"); clients resolve the default on their side and send it explicitly.
kind30stringWhat kind of machine: "auto" (empty), "container" or "vm". Auto decides from the image: macOS and Windows images are VMs, an image with a container rootfs is a container, a disk-only image is a VM.
runtime31stringWhich engine: "auto" (empty) or one the location offers for the kind. Local: "gvisor", "runc" (containers), "qemu", "lume" (VMs). Cloud: "gvisor" (containers), "kubevirt" (VMs). A registered provider offers its own engines. Anything else is DAEMON_ERROR_REASON_INVALID_PLACEMENT, listing the valid values.
keep_on_failure32boolKeep a named sandbox whose readiness check fails (its cloud claim, VM or container, and its record) for debugging. False: a failed create deletes what it made and releases the claim. Ephemeral sandboxes are always deleted.
gpu33stringA GPU option of the runtime it runs on (GetGpuSupport): "paravirtual" (a macOS VM on Lume: GPU acceleration, experimental), "virgl" (QEMU on Linux), "nvidia" (a runc container on Linux), a contrib provider's GPU type; "auto" picks the runtime's own. Empty: no GPU. An option the runtime does not offer here is DAEMON_ERROR_REASON_INVALID_ARGUMENT or _UNSUPPORTED, saying why.

CreateSandboxResponse#

Response for SandboxService.CreateSandbox.

Field#TypeDescription
sandbox1SandboxThe sandbox.

CreateSandboxStreamRequest#

Request for SandboxService.CreateSandboxStream.

Field#TypeDescription
create1CreateSandboxRequestThe create, as for CreateSandbox.

CreateSandboxStreamResponse#

One message of SandboxService.CreateSandboxStream.

Field#TypeDescription
progress1CreateSpaceProgress (oneof event)What the create is doing now (space is empty).
result2CreateSandboxResponse (oneof event)The created sandbox (the last message).

GetSandboxRequest#

Request for SandboxService.GetSandbox.

Field#TypeDescription
name1stringSandbox ref ("local:<name>", "cloud:<name>", "direct:<host:port>", a legacy id) or a name that is unique across locations.

GetSandboxResponse#

Response for SandboxService.GetSandbox.

Field#TypeDescription
sandbox1SandboxThe sandbox.

CancelCreateSandboxRequest#

Request for SandboxService.CancelCreateSandbox.

Field#TypeDescription
name1stringThe sandbox's name.

CancelCreateSandboxResponse#

Response for SandboxService.CancelCreateSandbox.

Field#TypeDescription
cancelled1boolA create of that name was running and was stopped.
message2stringWhat was removed and what stays, for people.

DeleteSandboxRequest#

Request for SandboxService.DeleteSandbox.

Field#TypeDescription
name1stringSandbox ref ("local:<name>", "cloud:<name>", "direct:<host:port>", a legacy id) or a name that is unique across locations.

DeleteSandboxResponse#

Response for SandboxService.DeleteSandbox.

No fields.

ConnectSandboxRequest#

Request for SandboxService.ConnectSandbox.

Field#TypeDescription
name1stringSandbox ref ("local:<name>", "cloud:<name>", "direct:<host:port>", a legacy id) or a name that is unique across locations.

ConnectSandboxResponse#

Response for SandboxService.ConnectSandbox.

Field#TypeDescription
sandbox1SandboxThe sandbox.

SuspendSandboxRequest#

Request for SandboxService.SuspendSandbox.

Field#TypeDescription
name1stringSandbox ref ("local:<name>", "cloud:<name>", "direct:<host:port>", a legacy id) or a name that is unique across locations.

SuspendSandboxResponse#

Response for SandboxService.SuspendSandbox.

No fields.

ResumeSandboxRequest#

Request for SandboxService.ResumeSandbox.

Field#TypeDescription
name1stringSandbox ref ("local:<name>", "cloud:<name>", "direct:<host:port>", a legacy id) or a name that is unique across locations.

ResumeSandboxResponse#

Response for SandboxService.ResumeSandbox.

No fields.

RestartSandboxRequest#

Request for SandboxService.RestartSandbox.

Field#TypeDescription
name1stringSandbox ref ("local:<name>", "cloud:<name>", "direct:<host:port>", a legacy id) or a name that is unique across locations.

RestartSandboxResponse#

Response for SandboxService.RestartSandbox.

No fields.

KeepAliveRequest#

Request for SandboxService.KeepAlive.

Field#TypeDescription
name1stringSandbox ref ("local:<name>", "cloud:<name>", "direct:<host:port>", a legacy id) or a name that is unique across locations.
duration2google.protobuf.DurationHow long to extend the lease by.

KeepAliveResponse#

Response for SandboxService.KeepAlive.

No fields.

WaitReadyRequest#

Request for SandboxService.WaitReady.

Field#TypeDescription
name1stringSandbox ref ("local:<name>", "cloud:<name>", "direct:<host:port>", a legacy id) or a name that is unique across locations.
probes2repeated ReadinessProbeProbes to wait for.
timeout3google.protobuf.DurationTotal budget.

WaitReadyResponse#

Response for SandboxService.WaitReady.

No fields.

HttpHeader#

One HTTP header.

Field#TypeDescription
name1stringHeader name.
value2stringHeader value.

ServiceRequestRequest#

Request for SandboxService.ServiceRequest.

Field#TypeDescription
name1stringSandbox ref ("local:<name>", "cloud:<name>", "direct:<host:port>", a legacy id) or a name that is unique across locations.
service2stringLogical service name, for example "env" or "server".
method3stringHTTP method. Empty means GET.
path4stringPath (and query) under the service.
body5bytesRequest body.
timeout6google.protobuf.DurationTimeout. Unset means 30 seconds.
headers7repeated HttpHeaderRequest headers (for example content-type, or accept and mcp-session-id for MCP). On Fleet the gateway bearer and claim header are added by the daemon and may not be set here.

ServiceRequestResponse#

Response for SandboxService.ServiceRequest.

Field#TypeDescription
status1uint32HTTP status.
headers2repeated HttpHeaderResponse headers.
body3bytesResponse body.

ForwardPortRequest#

Request for SandboxService.ForwardPort.

Field#TypeDescription
name1stringSandbox ref ("local:<name>", "cloud:<name>", "direct:<host:port>", a legacy id) or a name that is unique across locations.
port2uint32Guest port.

ForwardPortResponse#

Response for SandboxService.ForwardPort.

Field#TypeDescription
forward_id1stringForward id for CloseForward. Empty when no listener was started (the port is only reachable as url).
guest_port2uint32Guest port.
local_addr3stringLoopback host:port accepting connections, when a TCP forward runs.
url4stringURL to use (a loopback URL, or the Fleet gateway URL of the port's service).

CloseForwardRequest#

Request for SandboxService.CloseForward.

Field#TypeDescription
forward_id1stringForward id.

CloseForwardResponse#

Response for SandboxService.CloseForward.

No fields.

GetEnvEndpointRequest#

Request for SandboxService.GetEnvEndpoint.

Field#TypeDescription
name1stringSandbox ref ("local:<name>", "cloud:<name>", "direct:<host:port>", a legacy id) or a name that is unique across locations.
probe_timeout2google.protobuf.DurationProbe timeout. Unset uses the daemon default.

GetServiceEndpointRequest#

Request for SandboxService.GetServiceEndpoint.

Field#TypeDescription
name1stringSandbox ref ("local:<name>", "cloud:<name>", "direct:<host:port>", a legacy id) or a name that is unique across locations.
service2stringService name, for example "mcp".

GetServiceEndpointResponse#

Response for SandboxService.GetServiceEndpoint.

Field#TypeDescription
url1stringBase URL, for example "http://127.0.0.1:52011/v1/sandboxes/dev/svc/mcp". Append the path.
headers2repeated HttpHeaderHeaders every request needs (the daemon's loopback bearer).

GetEnvEndpointResponse#

Response for SandboxService.GetEnvEndpoint.

Field#TypeDescription
url1stringLoopback passthrough base URL, for example "http://127.0.0.1:52011/v1/sandboxes/dev/env". Append the gRPC path.
token2stringBearer token for the passthrough (the daemon's loopback token).
spacesd_version3stringspacesd version reported by the probe.

GetServiceUrlRequest#

Request for SandboxService.GetServiceUrl.

Field#TypeDescription
name1stringSandbox ref ("local:<name>", "cloud:<name>", "direct:<host:port>", a legacy id) or a name that is unique across locations.
service2stringLogical service name.

GetServiceUrlResponse#

Response for SandboxService.GetServiceUrl.

Field#TypeDescription
url1stringThe URL (no trailing slash).

PublicUrl#

A shareable, expiring URL of a sandbox service.

Field#TypeDescription
id1stringId for RevokePublicUrl.
url2stringThe URL.
expires_at3google.protobuf.TimestampWhen it stops working.
sandbox4stringSandbox name.
service5stringLogical service name.
provider_details6map of string to stringProvider internals (cloud: namespace, claim; local: upstream).

CreatePublicUrlRequest#

Request for SandboxService.CreatePublicUrl.

Field#TypeDescription
name1stringSandbox ref or unique name (with upstream_url, only recorded).
service2stringLogical service name.
ttl3google.protobuf.DurationLifetime, 60 s to 24 h. Unset means 1 h.
label4stringLabel shown in listings (cloud).
upstream_url5stringShare this loopback http:// URL instead of resolving name and service (an embedded SDK runtime asking the daemon to host its URL).

CreatePublicUrlResponse#

Response for SandboxService.CreatePublicUrl.

Field#TypeDescription
public_url1PublicUrlThe URL.

RevokePublicUrlRequest#

Request for SandboxService.RevokePublicUrl.

Field#TypeDescription
name1stringSandbox ref ("local:<name>", "cloud:<name>", "direct:<host:port>", a legacy id) or a name that is unique across locations.
id2stringPublicUrl.id.

RevokePublicUrlResponse#

Response for SandboxService.RevokePublicUrl.

No fields.

SandboxProvider#

Where a sandbox comes from. Deprecated: requests use the location string (local, cloud, direct:<addr>), which also names third-party providers; responses carry Sandbox.location.

Value#Description
SANDBOX_PROVIDER_UNSPECIFIED0Not set.
SANDBOX_PROVIDER_FLEET1Claimed from a Fleet pool.
SANDBOX_PROVIDER_LOCAL2Run locally through cua-vmm (Lume, QEMU, container).
SANDBOX_PROVIDER_DIRECT3An existing machine reached by URL and token.
SANDBOX_PROVIDER_CONTRIB4A contrib provider (third-party platform).

SandboxState#

Sandbox lifecycle state.

Value#Description
SANDBOX_STATE_UNSPECIFIED0Not reported.
SANDBOX_STATE_PROVISIONING1Being created or booted.
SANDBOX_STATE_RUNNING2Running and ready (per its readiness probes).
SANDBOX_STATE_STOPPED3Suspended or stopped; can resume.
SANDBOX_STATE_DELETING4Being deleted.
SANDBOX_STATE_FAILED5Failed; see Sandbox.error.

Types in cua/daemon/v1/runtime.proto#

RuntimeCheck#

One doctor check.

Field#TypeDescription
name1stringComponent, for example "lume", "qemu", "docker", "runsc".
status2CheckStatusStatus.
version3stringDetected version, when present.
detail4stringExplanation or remediation.

DoctorRequest#

Request for RuntimeService.Doctor.

No fields.

DoctorResponse#

Response for RuntimeService.Doctor.

Field#TypeDescription
checks1repeated RuntimeCheckChecks, in a stable order.
report_json2stringThe full host report (cua-vmm DoctorReport) as JSON.

SetupRequest#

Request for RuntimeService.Setup.

Field#TypeDescription
components1repeated stringComponents to set up. Empty means every installable component.
dry_run2boolReport the plan without changing anything.

SetupStep#

One setup step.

Field#TypeDescription
name1stringComponent.
status2CheckStatusStatus after the step.
detail3stringWhat was done, or would be done on a dry run.

SetupResponse#

Response for RuntimeService.Setup.

Field#TypeDescription
steps1repeated SetupStepSteps, in execution order.

LocalImage#

A local image.

Field#TypeDescription
reference1stringReference.
kind2stringcontainer or vm.
location3stringLocal disk path (VM images) or engine image reference (containers).
size_bytes4uint64Size in bytes, when known.

PullImageRequest#

Request for RuntimeService.PullImage.

Field#TypeDescription
reference1stringReference, with an optional backend prefix (container:, vm:).

PullImageResponse#

Response for RuntimeService.PullImage.

Field#TypeDescription
image1LocalImageThe pulled image.

BuildImageRequest#

Request for RuntimeService.BuildImage.

Field#TypeDescription
spec_json1stringimages.cua.ai/v1alpha1 Image resource as JSON.
base2stringBase image, with an optional backend prefix (container:, vm:, disk:).
push3stringPush the result to this reference. Empty keeps it local.

BuildImageResponse#

Response for RuntimeService.BuildImage.

Field#TypeDescription
result1stringreference@digest when pushed, else the local output directory.

PushImageRequest#

Request for RuntimeService.PushImage.

Field#TypeDescription
reference1stringSource reference.
destination2stringDestination reference.

PushImageResponse#

Response for RuntimeService.PushImage.

Field#TypeDescription
digest1stringPushed manifest digest.

CheckStatus#

Status of one local runtime component.

Value#Description
CHECK_STATUS_UNSPECIFIED0Not reported.
CHECK_STATUS_OK1Present and usable.
CHECK_STATUS_INSTALLABLE2Missing, but cua runtime setup can install it.
CHECK_STATUS_ERROR3Missing or broken and needs user action.
CHECK_STATUS_NOT_APPLICABLE4Not applicable on this host.

Types in cua/daemon/v1/spaces.proto#

Space#

A registered Space.

Field#TypeDescription
id1stringSpace id, for example "space://direct/10.0.0.5:3211".
name2stringDisplay name.
spacesd_version3stringspacesd version reported at the last handshake.
features4repeated stringSupported feature names reported at the last handshake.
added_at5google.protobuf.TimestampWhen it was added.
os6stringGuest OS family at the last handshake (GetCapabilities): "linux", "macos" or "windows"; empty when not reported.
services7repeated stringServices the Space declares (never "env"), for example "mcp". A Space without cua-spacesd has an empty feature list and reaches these through generic MCP (list_tools / call_tool with service).
os_name8stringGuest OS product or distribution at the last handshake (GetCapabilities os.name), for example "Ubuntu" or "macOS"; empty when not reported. The Spaces app picks the OS icon from it.
os_pretty_name9stringThe guest's full OS string at the last handshake (GetCapabilities os.pretty_name), for example "Ubuntu 24.04.3 LTS"; empty when the driver does not report one.
image10stringThe image the sandbox runs, as requested (local and cloud Spaces), for example "ghcr.io/trycua/linux:24.04"; empty when unknown (a Space added by address).
image_digest11stringThe digest of the variant that runs ("sha256:..."), when known.
kind12stringContainer or virtual machine: "container" or "vm" (the guest's runtime at the last handshake, else the local sandbox's record); empty when unknown.
arch13stringThe guest's CPU architecture: "arm64" or "amd64" (GetCapabilities arch at the last handshake, else the local sandbox's record); empty when unknown.
host14stringFor a Space a host provides (relay:<machine> created with on="host:<machine>"): the relay machine id of that host; for one a host added by its direct address created (direct:<addr>:<port>): that host's Space id (direct:<addr>:<port>); empty otherwise. Lists group these Spaces under their host.
host_name15stringThe display name of host, when known.
power16stringHow the Space turns off and on again (stop_space / start_space): "suspend" (its memory is kept), "stop" (its disk is kept), or empty when it cannot. Filled in when listed, not stored.
power_state17string"running", "suspended" or "stopped" as cua last recorded it; empty when unknown. Filled in when listed, not stored.
cloud18stringA Space in the owner's own cloud: the provider ("aws", "gcp", "modal"); empty otherwise.
cloud_place19stringWhere it runs, for people ("AWS · us-west-2"); empty otherwise.
cloud_delete20stringHow this device would delete it permanently: "here" (this cua home created it and records it), "host:<machine>" (ask the device that created it, through the relay) or "elsewhere" (only from the device that created it). Empty for other Spaces.
stop_reason21stringWhy a local Space stopped without being asked to, in plain words: "out of memory", "killed", "exited" or "exited with code N". Empty otherwise, and once it is started again. Filled in when listed, not stored.

AddSpaceRequest#

Request for SpaceService.AddSpace.

Field#TypeDescription
url1stringSpace URL.
token2stringspacesd token (direct Spaces).
name3stringDisplay name. Empty derives one.
service4stringWhen url is not a cua-spacesd but an MCP endpoint: the service name it is registered under. Empty means "mcp".

AddSpaceResponse#

Response for SpaceService.AddSpace.

Field#TypeDescription
space1SpaceThe Space.

ListSpacesRequest#

Request for SpaceService.ListSpaces.

No fields.

ListSpacesResponse#

Response for SpaceService.ListSpaces.

Field#TypeDescription
spaces1repeated SpaceSpaces.

RemoveSpaceRequest#

Request for SpaceService.RemoveSpace.

Field#TypeDescription
id1stringSpace id.

RemoveSpaceResponse#

Response for SpaceService.RemoveSpace.

No fields.

ResolveSpaceRequest#

Request for SpaceService.ResolveSpace.

Field#TypeDescription
space1stringId, legacy id, URL or display name.

ResolveSpaceResponse#

Response for SpaceService.ResolveSpace.

Field#TypeDescription
space1SpaceThe registered Space.

ClaimFleetSpaceRequest#

Request for SpaceService.ClaimFleetSpace.

Field#TypeDescription
image1stringImage. Empty uses the default Spaces image for the runtime.
runtime2stringFleet runtime (kubevirt, gvisor). Empty picks from the image.
name3stringDisplay name.
wait4optional boolWait for the claim to bind (default true when unset).
reuse5boolReuse a reachable registered Fleet Space for the same image first.
command6repeated stringEntrypoint override (pod runtimes). Empty keeps the image's.
env7map of string to stringGuest environment.
services8map of string to uint32Named services (name -> guest port), for example {"mcp": 8765}.
spacesd9optional boolWhether the image runs cua-spacesd. Unset: yes for the Spaces images, no for any other image.

ClaimFleetSpaceResponse#

Response for SpaceService.ClaimFleetSpace.

Field#TypeDescription
space1SpaceThe Space, once bound.
pending_json2stringWith wait = false: the pending claim as JSON ({namespace, claim, pool, ...}).
reused3boolA registered Space was reused.

ProvisionLocalSpaceRequest#

Request for SpaceService.ProvisionLocalSpace.

Field#TypeDescription
image1stringImage. Empty uses the default Spaces image.
name2stringName. Empty generates one.
cpus3uint32vCPUs (0 = 2).
memory_mb4uint64Memory in MiB (0 = 4096).
timeout5google.protobuf.DurationProvisioning budget (default 600 s).
command6repeated stringEntrypoint override. Empty keeps the image's.
env7map of string to stringGuest environment.
services8map of string to uint32Named services (name -> guest port), for example {"mcp": 8765}.
spacesd9optional boolWhether the image runs cua-spacesd. Unset: yes for the Spaces images, no for any other image.

ProvisionLocalSpaceResponse#

Response for SpaceService.ProvisionLocalSpace.

Field#TypeDescription
space1SpaceThe Space.

ReleaseSpaceRequest#

Request for SpaceService.ReleaseSpace.

Field#TypeDescription
space1stringSpace.

ReleaseSpaceResponse#

Response for SpaceService.ReleaseSpace.

Field#TypeDescription
message1stringWhat happened, for humans.

ConnectSpaceRequest#

Request for SpaceService.ConnectSpace.

Field#TypeDescription
space1stringSpace.

ConnectSpaceResponse#

Response for SpaceService.ConnectSpace.

Field#TypeDescription
space1SpaceThe Space.
env_url2stringenv passthrough base URL (speaks cua.env.v1, gRPC and gRPC-Web, and relays the /media and /tunnel WebSockets).
token3stringBearer for env_url (the daemon's loopback token).
capabilities4bytescua.env.v1.GetCapabilitiesResponse of the Space, protobuf-encoded.
services5repeated SpaceServiceEndpointThe Space's declared services through the daemon (same bearer as env_url). env_url is empty when the Space runs no cua-spacesd.

SpaceServiceEndpoint#

A declared service of a Space, reachable through the daemon.

Field#TypeDescription
name1stringService name, for example "mcp".
url2stringBase URL: requests to <url><path> reach <path> on the service.
mcp_path3stringIts MCP endpoint path, for example "/mcp".

ListSpaceToolsRequest#

Request for SpaceService.ListSpaceTools.

No fields.

ListSpaceToolsResponse#

Response for SpaceService.ListSpaceTools.

Field#TypeDescription
tools_json1stringMCP tools/list result as JSON.

CallSpaceToolRequest#

Request for SpaceService.CallSpaceTool.

Field#TypeDescription
name1stringTool name from the Spaces contract.
arguments_json2stringArguments as a JSON object. Empty means {}.

CallSpaceToolResponse#

Response for SpaceService.CallSpaceTool.

Field#TypeDescription
content_json1stringMCP content parts as a JSON array.
structured_json2stringMCP structured content as JSON, when present.
is_error3boolThe call failed as a tool error.
meta_json4stringThe result's _meta as JSON, when present (forwarded verbatim from an in-Space MCP service).

CreateSpaceRequest#

Request for SpaceService.CreateSpace.

Field#TypeDescription
image1stringImage. Empty uses the canonical Linux image.
location2stringWhere it runs: "local", "cloud" or a registered provider. Empty uses the default (default.on in the config, CUA_DEFAULT_ON, else "local"); clients resolve the default on their side.
kind3stringWhat kind of machine: "auto" (empty), "container" or "vm".
runtime4stringWhich engine: "auto" (empty), or one the location offers for the kind ("gvisor", "runc", "qemu", "lume" locally; "gvisor", "kubevirt" in the cloud).
name5stringName. Empty generates space-<hex>.
cpus6uint32vCPUs (0 = the default, 2).
memory_mb7uint64Memory in MiB (0 = the default, 4096).
timeout8google.protobuf.DurationReadiness budget (default 600 s).
wait9optional boolWait until the Space is ready (default true when unset). With false the response carries only its id and phase "starting".
reuse10boolReturn a reachable registered Space with the same image, location, kind and runtime instead of creating one (get-or-create).
command11repeated stringEntrypoint override. Empty keeps the image's.
env12map of string to stringGuest environment.
services13map of string to uint32Named services (name -> guest port), for example {"mcp": 8765}.
spacesd14optional boolWhether the image runs cua-spacesd. Unset: yes for the canonical images, no for any other image.
disk_gb15uint32Grow the VM's disk to this many GiB (local VMs only; 0 keeps the image's size). Lume grows the macOS APFS container before the first boot; Linux images grow their root partition at boot (cloud-init growpart).
gpu16stringA GPU option of the runtime the Space runs on (GetGpuSupport): "paravirtual" (a macOS VM on Lume: GPU acceleration, experimental), "virgl", "nvidia", a provider's GPU type; "auto" picks the runtime's own. Empty: no GPU. Kept with the Space.
create_id17stringThe caller's own key for this create (an app's pending row id), for CancelCreateSpace before the Space's id is known.

CreateSpaceResponse#

Response for SpaceService.CreateSpace.

Field#TypeDescription
space1SpaceThe Space (with wait = false: only its id).
phase2string"ready", or "starting" with wait = false.
reused3boolreuse returned an existing Space.

CreateSpaceStreamRequest#

Request for SpaceService.CreateSpaceStream.

Field#TypeDescription
create1CreateSpaceRequestThe create, as for CreateSpace. wait is ignored: the stream always runs until the Space is ready or the create fails.

CreateSpaceProgress#

What a create is doing.

Field#TypeDescription
phase1string"preparing", "pulling", "creating", "booting", "waiting_for_services", "connecting" or "ready", in that order.
fraction2optional doubleHow far through the phase, 0.0 to 1.0, when its size is known (an image pull).
detail3stringOne short line, for example the image being pulled.
bytes_done4optional uint64Bytes downloaded so far, when the step counts them (an image pull).
bytes_total5optional uint64Bytes the download has in all.
bytes_per_second6optional doubleSmoothed download rate, bytes per second.
space7stringThe id the Space will have (local:<name>), for CancelCreateSpace.

CreateSpaceStreamResponse#

One message of SpaceService.CreateSpaceStream.

Field#TypeDescription
progress1CreateSpaceProgress (oneof event)What the create is doing now.
result2CreateSpaceResponse (oneof event)The created Space (the last message).

CancelCreateSpaceRequest#

Request for SpaceService.CancelCreateSpace.

Field#TypeDescription
space1stringThe create's create_id, the id the Space will have, or its name.

CancelCreateSpaceResponse#

Response for SpaceService.CancelCreateSpace.

Field#TypeDescription
id1stringThe Space id the create had, when known.
state2string"cancelled", "not_creating" (nothing by that key is running) or "already_created" (it finished; delete it instead).
message3stringWhat was removed and what stays, for people.

GetGpuSupportRequest#

Request for SpaceService.GetGpuSupport.

Field#TypeDescription
location1string"local" (empty) or "cloud".

GpuOption#

One GPU option of a runtime.

Field#TypeDescription
id1stringWhat to pass as gpu.
label2stringHow a person names it ("GPU acceleration").
experimental3boolExperimental.
supported4boolWorks on this host (and account) now.
reason5stringWhy not, one short line.
learn_more6stringA page that explains it.
usd_per_hour7optional doubleEstimated cost per hour while it runs (cloud GPU types).

GpuSupport#

The GPU options of one runtime.

Field#TypeDescription
runtime1string"lume", "qemu", "container", "gvisor", "fleet", a provider's name.
options2repeated GpuOptionIts options; empty: none.
reason3stringWhy it has none.

GetGpuSupportResponse#

Response for SpaceService.GetGpuSupport.

Field#TypeDescription
runtimes1repeated GpuSupportOne entry per runtime of the location.

DeleteSpaceRequest#

Request for SpaceService.DeleteSpace.

Field#TypeDescription
space1stringSpace.

DeleteSpaceResponse#

Response for SpaceService.DeleteSpace.

Field#TypeDescription
message1stringWhat happened, for humans.

ListHostsRequest#

Request for SpaceService.ListHosts.

No fields.

SpacesHostLimit#

One limit of a host and how much of it is used.

Field#TypeDescription
resource1stringspaces (every Space it provides) or macos_vms (macOS VMs on that Mac).
used2uint32In use now.
limit3uint32The limit (0: none).
reason4stringWhy the limit exists, for people.

SpacesHost#

One of your machines that provides Spaces.

Field#TypeDescription
id1stringWhat on="host:<id>" takes: the relay machine id, or the name a direct host was added as.
name2stringIts name.
via3stringrelay or direct.
online4boolIt answered.
os5stringIts operating system (macos, linux, windows), when it answered.
limits6repeated SpacesHostLimitIts limits, when it answered.

ListHostsResponse#

Response for SpaceService.ListHosts.

Field#TypeDescription
hosts1repeated SpacesHostIn order: relay hosts, then direct ones.

GetSpaceThumbnailRequest#

Request for SpaceService.GetSpaceThumbnail.

Field#TypeDescription
space1stringSpace.
max_age2google.protobuf.DurationHow old a cached thumbnail may be (unset: any age; zero: always capture).

GetSpaceThumbnailResponse#

Response for SpaceService.GetSpaceThumbnail.

Field#TypeDescription
image1bytesEncoded image.
format2string"jpeg".
width3uint32Pixel width.
height4uint32Pixel height.
captured_at5google.protobuf.TimestampWhen it was captured.

Types in cua/daemon/v1/daemon.proto#

DaemonErrorInfo#

Structured error detail of daemon RPCs.

Field#TypeDescription
reason1DaemonErrorReasonReason.
message2stringHuman-readable message.
metadata3map of string to stringExtra context.

GetInfoRequest#

Request for DaemonService.GetInfo.

No fields.

GetInfoResponse#

Response for DaemonService.GetInfo.

Field#TypeDescription
version1stringcua-daemon version.
pid2uint32Process id.
socket_path3stringUnix socket path, when listening on one.
loopback_url4stringLoopback base URL (http://127.0.0.1:<port>) serving the same services, the env passthrough and the media bridge.
loopback_token5stringBearer token of the loopback listener.
features6repeated stringCompiled-in SDK features, for example "env", "fleet", "local".
started_at7google.protobuf.TimestampWhen the daemon started.
executable8stringThe daemon's executable (symlinks resolved), so a client bound to an app bundle can tell its own daemon from another app's. Empty from daemons that predate it.
build_id9stringThe executable's build as it was when the daemon started (version, size and modification time), so a client can tell a daemon whose executable was rebuilt or updated since. Empty from daemons that predate it.

OpenMediaBridgeRequest#

Request for DaemonService.OpenMediaBridge.

Field#TypeDescription
name1stringSandbox name.
open_media_json2stringcua.env.v1.OpenMediaRequest in canonical proto3 JSON. Empty opens the primary display with defaults.

OpenMediaBridgeResponse#

Response for DaemonService.OpenMediaBridge.

Field#TypeDescription
ws_url1stringLoopback WebSocket URL, for example "ws://127.0.0.1:52011/v1/bridge/media?ticket=...". Speaks rcdp wire v2 unchanged.
ticket2stringBridge ticket (also in ws_url).
expires_at3google.protobuf.TimestampWhen the bridge ticket stops accepting new attaches.
open_media_response_json4stringcua.env.v1.OpenMediaResponse in canonical proto3 JSON, with the upstream ticket removed.

ShutdownRequest#

Request for DaemonService.Shutdown.

No fields.

ShutdownResponse#

Response for DaemonService.Shutdown.

No fields.

DaemonErrorReason#

Why a daemon call failed. Packed as DaemonErrorInfo in the google.rpc.Status details of every daemon error.

Value#Description
DAEMON_ERROR_REASON_UNSPECIFIED0Unknown.
DAEMON_ERROR_REASON_INVALID_ARGUMENT1Bad input.
DAEMON_ERROR_REASON_NOT_FOUND2No such sandbox, forward or bridge.
DAEMON_ERROR_REASON_PROVIDER_NOT_CONFIGURED3The provider is not configured in the daemon (for example no Fleet credentials).
DAEMON_ERROR_REASON_UNSUPPORTED4The provider or build cannot do this.
DAEMON_ERROR_REASON_SPACESD_NOT_AVAILABLE5No cua-spacesd answered in the sandbox.
DAEMON_ERROR_REASON_TIMEOUT6A deadline elapsed.
DAEMON_ERROR_REASON_FLEET7Fleet API failure.
DAEMON_ERROR_REASON_RUNTIME8Local runtime failure.
DAEMON_ERROR_REASON_ENV9spacesd call failure.
DAEMON_ERROR_REASON_HTTP10HTTP failure talking to a sandbox service.
DAEMON_ERROR_REASON_INTERNAL11Daemon bug or I/O failure.
DAEMON_ERROR_REASON_UNAUTHENTICATED12Missing or wrong daemon token.
DAEMON_ERROR_REASON_CAPABILITY_MISSING13The Space's spacesd reports a feature the call needs as unsupported.
DAEMON_ERROR_REASON_HOST_CAPABILITY_MISSING14A host-side prerequisite (app-session providers, an operator display, a local runtime) is not available.
DAEMON_ERROR_REASON_TELEPORT_REFUSED15The teleport consent gate refused.
DAEMON_ERROR_REASON_POOL_SPEC_MISMATCH16A named cloud pool's template differs from the requested sandbox fields (pass apply to update it).
DAEMON_ERROR_REASON_CLAIM_SECRETS_NOT_DELIVERED17A claim bound but its per-claim secrets never reached the sandbox; the claim was released.
DAEMON_ERROR_REASON_AMBIGUOUS_SANDBOX18A bare sandbox name matches sandboxes in more than one location. The qualified candidates are in DaemonErrorInfo.metadata["candidates"] (comma-separated, for example "local:box,cloud:box").
DAEMON_ERROR_REASON_INSUFFICIENT_DISK19A pull, build or VM create would leave less than the configured minimum free disk space; nothing was written (cua cache prune frees space).
DAEMON_ERROR_REASON_INVALID_PLACEMENT20A location, kind or runtime that does not exist, or a combination of them (or with the image) that does not. The accepted values are in DaemonErrorInfo.metadata["valid"] (comma-separated, for example "auto,gvisor,runc") and the axis in metadata["axis"] ("on", "kind", "runtime" or "image").
DAEMON_ERROR_REASON_FLEET_ADMISSION_DENIED21Fleet's admission refused a write, for example a sandbox size over the account's limits. The message is Fleet's and names the limit.
DAEMON_ERROR_REASON_CLOUD_CREDIT_EXHAUSTED22The account is out of Cua Cloud credit (no credit left, and no card or plan): new cloud sandboxes are refused, running ones keep running. The message ends with the website billing page's URL.
DAEMON_ERROR_REASON_CANCELLED23The create was cancelled (CancelCreateSpace, or its caller went away); what it made is gone. The message says what was removed and what stays (finished image downloads stay cached).
DAEMON_ERROR_REASON_CLOUD24Your own cloud account (AWS, Google Cloud, Modal) refused or failed a call Cua made there: a missing permission, a quota, a region without the machine type. The message names the cloud's own error.