Controller Reference
Protocol Documentation
Table of Contents
proto/composia/controller/v1/task.proto
proto/composia/controller/v1/system.proto
proto/composia/controller/v1/node.proto
proto/composia/controller/v1/repo.proto
proto/composia/controller/v1/service.proto
proto/composia/controller/v1/task.proto
CreateMigrationRollbackRequest
CreateMigrationRollbackRequest selects safe recovery actions for one migration task.
| Field | Type | Label | Description |
|---|---|---|---|
| task_id | string | task_id identifies the original migrate task. | |
| rollback_dns | bool | rollback_dns syncs DNS back to the source node. | |
| deploy_source | bool | deploy_source starts the service on the source node again. | |
| stop_target | bool | stop_target stops the service on the migration target node. | |
| cleanup_target | bool | cleanup_target is reserved for a future destructive cleanup workflow. |
FailLostTaskExecutionRequest
| Field | Type | Label | Description |
|---|---|---|---|
| task_id | string | ||
| error_summary | string |
GetTaskRequest
GetTaskRequest identifies one task by ID.
| Field | Type | Label | Description |
|---|---|---|---|
| task_id | string |
GetTaskResponse
GetTaskResponse describes one task, including step state and log metadata.
| Field | Type | Label | Description |
|---|---|---|---|
| task_id | string | ||
| type | TaskType | type identifies the controller task kind. | |
| source | TaskSource | source identifies what triggered the task. | |
| service_name | string | ||
| node_id | string | ||
| status | TaskStatus | status is the latest task status. | |
| created_at | google.protobuf.Timestamp | created_at is the task creation timestamp. | |
| started_at | google.protobuf.Timestamp | started_at is unset until task execution begins. | |
| finished_at | google.protobuf.Timestamp | finished_at is unset until task execution reaches a terminal state. | |
| repo_revision | string | repo_revision is the repo revision used when the task started. | |
| error_summary | string | ||
| steps | TaskStepSummary | repeated | steps lists recorded step state snapshots in execution order. |
| triggered_by | string | triggered_by identifies the actor that created the task. | |
| result_revision | string | result_revision is the repo revision produced by the task, when applicable. | |
| attempt_of_task_id | string | attempt_of_task_id links this task to the prior task it retried. | |
| execution_state | string | execution_state exposes offered, accepted, lease_lost, or completed for agent tasks. | |
| lease_expires_at | google.protobuf.Timestamp |
ListTasksRequest
ListTasksRequest filters task results by included and excluded values.
| Field | Type | Label | Description |
|---|---|---|---|
| status | TaskStatus | repeated | status includes only tasks matching one of these statuses. |
| service_name | string | repeated | service_name includes only tasks for these services. |
| page_size | uint32 | page_size is the requested page size. | |
| page | uint32 | page is the 1-based page number. | |
| node_id | string | repeated | node_id includes only tasks for these nodes. |
| type | TaskType | repeated | type includes only tasks of these types. |
| exclude_status | TaskStatus | repeated | exclude_status removes tasks matching these statuses. |
| exclude_service_name | string | repeated | exclude_service_name removes tasks for these services. |
| exclude_node_id | string | repeated | exclude_node_id removes tasks for these nodes. |
| exclude_type | TaskType | repeated | exclude_type removes tasks of these types. |
ListTasksResponse
ListTasksResponse returns one page of task summaries.
| Field | Type | Label | Description |
|---|---|---|---|
| tasks | TaskSummary | repeated | |
| total_count | uint32 |
ResolveTaskConfirmationRequest
ResolveTaskConfirmationRequest resolves a task in awaiting_confirmation state.
| Field | Type | Label | Description |
|---|---|---|---|
| task_id | string | ||
| decision | TaskConfirmationDecision | decision resolves the confirmation gate. | |
| comment | string |
RunTaskAgainRequest
RunTaskAgainRequest identifies the task to retry as a new task.
| Field | Type | Label | Description |
|---|---|---|---|
| task_id | string |
TailTaskLogsRequest
TailTaskLogsRequest identifies the task log stream to follow.
| Field | Type | Label | Description |
|---|---|---|---|
| task_id | string |
TailTaskLogsResponse
TailTaskLogsResponse carries one incremental log chunk.
| Field | Type | Label | Description |
|---|---|---|---|
| content | string |
TaskActionResponse
TaskActionResponse reports the async task created by a command RPC.
| Field | Type | Label | Description |
|---|---|---|---|
| task_id | string | ||
| status | TaskStatus | status is the initial status of the created task. | |
| repo_revision | string | repo_revision is the repo revision associated with the created task. |
TaskStepSummary
TaskStepSummary describes one recorded step within a task.
| Field | Type | Label | Description |
|---|---|---|---|
| step_name | TaskStepName | ||
| status | TaskStatus | status is the latest step status. | |
| started_at | google.protobuf.Timestamp | started_at is unset when the step has not started. | |
| finished_at | google.protobuf.Timestamp | finished_at is unset until the step finishes. |
TaskSummary
TaskSummary describes one task in list results.
| Field | Type | Label | Description |
|---|---|---|---|
| task_id | string | ||
| type | TaskType | type identifies the controller task kind. | |
| status | TaskStatus | status is the latest task status. | |
| service_name | string | ||
| node_id | string | ||
| created_at | google.protobuf.Timestamp | created_at is the task creation timestamp. |
TaskConfirmationDecision
TaskConfirmationDecision identifies how an operator resolved a confirmation gate.
| Name | Number | Description |
|---|---|---|
| TASK_CONFIRMATION_DECISION_UNSPECIFIED | 0 | |
| TASK_CONFIRMATION_DECISION_APPROVE | 1 | |
| TASK_CONFIRMATION_DECISION_REJECT | 2 |
TaskSource
TaskSource identifies what created a task.
| Name | Number | Description |
|---|---|---|
| TASK_SOURCE_UNSPECIFIED | 0 | |
| TASK_SOURCE_WEB | 1 | |
| TASK_SOURCE_CLI | 2 | |
| TASK_SOURCE_OTHERS | 3 | |
| TASK_SOURCE_SCHEDULE | 4 | |
| TASK_SOURCE_SYSTEM | 5 | |
| TASK_SOURCE_AUTO_DEPLOY | 6 |
TaskStatus
TaskStatus identifies a task lifecycle status.
| Name | Number | Description |
|---|---|---|
| TASK_STATUS_UNSPECIFIED | 0 | |
| TASK_STATUS_PENDING | 1 | |
| TASK_STATUS_RUNNING | 2 | |
| TASK_STATUS_AWAITING_CONFIRMATION | 3 | |
| TASK_STATUS_SUCCEEDED | 4 | |
| TASK_STATUS_FAILED | 5 | |
| TASK_STATUS_CANCELLED | 6 |
TaskStepName
TaskStepName identifies one recorded task step.
| Name | Number | Description |
|---|---|---|
| TASK_STEP_NAME_UNSPECIFIED | 0 | |
| TASK_STEP_NAME_RENDER | 1 | |
| TASK_STEP_NAME_PULL | 2 | |
| TASK_STEP_NAME_BACKUP | 3 | |
| TASK_STEP_NAME_COMPOSE_DOWN | 4 | |
| TASK_STEP_NAME_COMPOSE_UP | 5 | |
| TASK_STEP_NAME_TRANSFER | 6 | |
| TASK_STEP_NAME_RESTORE | 7 | |
| TASK_STEP_NAME_DNS_UPDATE | 8 | |
| TASK_STEP_NAME_CADDY_SYNC | 9 | |
| TASK_STEP_NAME_CADDY_RELOAD | 10 | |
| TASK_STEP_NAME_IMAGE_CHECK | 11 | |
| TASK_STEP_NAME_INIT | 12 | |
| TASK_STEP_NAME_PRUNE | 13 | |
| TASK_STEP_NAME_AWAITING_CONFIRMATION | 14 | |
| TASK_STEP_NAME_PERSIST_REPO | 15 | |
| TASK_STEP_NAME_FINALIZE | 16 | |
| TASK_STEP_NAME_DOCKER_START | 17 | |
| TASK_STEP_NAME_DOCKER_STOP | 18 | |
| TASK_STEP_NAME_DOCKER_RESTART | 19 | |
| TASK_STEP_NAME_DOCKER_REMOVE | 20 | |
| TASK_STEP_NAME_CLOUDFLARE_TUNNEL_SYNC | 21 |
TaskType
TaskType identifies a controller task kind.
| Name | Number | Description |
|---|---|---|
| TASK_TYPE_UNSPECIFIED | 0 | |
| TASK_TYPE_DEPLOY | 1 | |
| TASK_TYPE_STOP | 2 | |
| TASK_TYPE_RESTART | 3 | |
| TASK_TYPE_UPDATE | 4 | |
| TASK_TYPE_BACKUP | 5 | |
| TASK_TYPE_RESTORE | 6 | |
| TASK_TYPE_MIGRATE | 7 | |
| TASK_TYPE_DNS_UPDATE | 8 | |
| TASK_TYPE_CADDY_SYNC | 9 | |
| TASK_TYPE_CADDY_RELOAD | 10 | |
| TASK_TYPE_IMAGE_CHECK | 11 | |
| TASK_TYPE_PRUNE | 12 | |
| TASK_TYPE_RUSTIC_INIT | 13 | |
| TASK_TYPE_RUSTIC_FORGET | 14 | |
| TASK_TYPE_RUSTIC_PRUNE | 15 | |
| TASK_TYPE_DOCKER_START | 16 | |
| TASK_TYPE_DOCKER_STOP | 17 | |
| TASK_TYPE_DOCKER_RESTART | 18 | |
| TASK_TYPE_MIGRATE_ROLLBACK | 20 | |
| TASK_TYPE_DOCKER_REMOVE_CONTAINER | 21 | |
| TASK_TYPE_DOCKER_REMOVE_NETWORK | 22 | |
| TASK_TYPE_DOCKER_REMOVE_VOLUME | 23 | |
| TASK_TYPE_DOCKER_REMOVE_IMAGE | 24 | |
| TASK_TYPE_CLOUDFLARE_TUNNEL_SYNC | 25 |
TaskService
TaskService exposes task queries, log streaming, retry operations, and confirmation resolution.
| Method Name | Request Type | Response Type | Description |
|---|---|---|---|
| ListTasks | ListTasksRequest | ListTasksResponse | ListTasks returns task summaries using include and exclude filters. |
| GetTask | GetTaskRequest | GetTaskResponse | GetTask returns the full detail for one task. |
| TailTaskLogs | TailTaskLogsRequest | TailTaskLogsResponse stream | TailTaskLogs streams incremental log content for one task. |
| RunTaskAgain | RunTaskAgainRequest | TaskActionResponse | RunTaskAgain starts a new task based on an existing task. |
| FailLostTaskExecution | FailLostTaskExecutionRequest | TaskActionResponse | FailLostTaskExecution resolves a lease-lost task after an operator verifies its outcome. |
| ResolveTaskConfirmation | ResolveTaskConfirmationRequest | TaskActionResponse | ResolveTaskConfirmation resumes or rejects a task waiting for manual confirmation. |
| CreateMigrationRollback | CreateMigrationRollbackRequest | TaskActionResponse | CreateMigrationRollback starts a rollback task from a failed or rejected migration. |
proto/composia/controller/v1/system.proto
AccessTokenSummary
AccessTokenSummary describes one controller access token without exposing the token string.
| Field | Type | Label | Description |
|---|---|---|---|
| name | string | name is the operator-facing token name. | |
| enabled | bool | enabled reports whether this token may be used. | |
| comment | string | comment is the optional operator note attached to the token. |
BackupConfigSummary
BackupConfigSummary describes optional backup integration state.
| Field | Type | Label | Description |
|---|---|---|---|
| has_rustic | bool | has_rustic reports whether Rustic backup integration is configured. |
Capability
Capability describes whether a feature or action may currently be used.
| Field | Type | Label | Description |
|---|---|---|---|
| enabled | bool | ||
| reason_code | CapabilityReasonCode | reason_code explains why the capability is disabled when enabled is false. |
DNSConfigSummary
DNSConfigSummary describes optional DNS integration state.
| Field | Type | Label | Description |
|---|---|---|---|
| has_cloudflare | bool | has_cloudflare reports whether Cloudflare DNS integration is configured. |
GetCapabilitiesRequest
GetCapabilitiesRequest requests global controller-backed feature availability.
GetCapabilitiesResponse
GetCapabilitiesResponse returns global feature availability for the web UI.
| Field | Type | Label | Description |
|---|---|---|---|
| global | GlobalCapabilities |
GetCurrentConfigRequest
GetCurrentConfigRequest requests the active redacted controller config.
GetCurrentConfigResponse
GetCurrentConfigResponse contains redacted config summaries only.
| Field | Type | Label | Description |
|---|---|---|---|
| listen_addr | string | listen_addr is the controller listen address. | |
| git | GitConfigSummary | git is the configured Git sync summary for the controller repo. | |
| nodes | NodeConfigSummary | repeated | nodes lists configured execution nodes. |
| access_tokens | AccessTokenSummary | repeated | access_tokens lists token metadata without returning secret token values. |
| dns | DNSConfigSummary | dns describes optional DNS integration configuration. | |
| backup | BackupConfigSummary | backup describes optional backup integration configuration. | |
| secrets | SecretsConfigSummary | secrets describes the active secrets provider configuration. |
GetSystemStatusRequest
GetSystemStatusRequest requests the current controller runtime state.
GetSystemStatusResponse
GetSystemStatusResponse describes the current controller runtime state.
| Field | Type | Label | Description |
|---|---|---|---|
| version | string | version is the controller version string. | |
| now | google.protobuf.Timestamp | now is the controller time when the response was generated. | |
| configured_node_count | uint64 | configured_node_count is the number of nodes present in config. | |
| online_node_count | uint64 | online_node_count is the number of nodes with a recent heartbeat. | |
| service_count | uint64 | service_count is the total number of declared services. | |
| running_service_count | uint64 | running_service_count is the number of declared services with at least one running instance. |
GitConfigSummary
GitConfigSummary describes controller Git sync settings without credentials.
| Field | Type | Label | Description |
|---|---|---|---|
| remote_url | string | remote_url is the configured Git remote URL. | |
| branch | string | branch is the tracked Git branch name. | |
| pull_interval | string | pull_interval stores the configured pull interval duration string. | |
| has_auth | bool | has_auth reports whether Git auth is configured, not the auth value itself. | |
| author_name | string | author_name is the Git author name for controller-created commits. | |
| author_email | string | author_email is the Git author email for controller-created commits. |
GlobalCapabilities
GlobalCapabilities describes controller-wide feature availability.
| Field | Type | Label | Description |
|---|---|---|---|
| backup | Capability | ||
| dns | Capability | ||
| secrets | Capability | ||
| rustic_maintenance | Capability |
NodeConfigSummary
NodeConfigSummary describes one configured node entry.
| Field | Type | Label | Description |
|---|---|---|---|
| id | string | id is the stable node identifier used across controller and agents. | |
| display_name | string | display_name is the human-readable node label. | |
| enabled | bool | enabled reports whether the node is eligible for controller actions. | |
| public_ipv4 | string | public_ipv4 is empty when no public IPv4 address is configured. | |
| public_ipv6 | string | public_ipv6 is empty when no public IPv6 address is configured. |
ReloadControllerConfigRequest
ReloadControllerConfigRequest requests an in-process controller config reload.
ReloadControllerConfigResponse
ReloadControllerConfigResponse confirms that the reload was accepted.
| Field | Type | Label | Description |
|---|---|---|---|
| accepted | bool | accepted is true when the current config passed reload validation and was scheduled. |
SecretsConfigSummary
SecretsConfigSummary describes the active secrets provider setup.
| Field | Type | Label | Description |
|---|---|---|---|
| provider | string | provider is the configured secrets provider name. | |
| has_identity | bool | has_identity reports whether an identity source is configured. | |
| has_recipient | bool | has_recipient reports whether a recipient source is configured. |
CapabilityReasonCode
CapabilityReasonCode explains why a capability is disabled.
| Name | Number | Description |
|---|---|---|
| CAPABILITY_REASON_CODE_UNSPECIFIED | 0 | |
| CAPABILITY_REASON_CODE_MISSING_BACKUP_INTEGRATION | 1 | |
| CAPABILITY_REASON_CODE_MISSING_BACKUP_DEFINITION | 2 | |
| CAPABILITY_REASON_CODE_MISSING_RESTORE_DEFINITION | 3 | |
| CAPABILITY_REASON_CODE_MISSING_MIGRATE_DEFINITION | 4 | |
| CAPABILITY_REASON_CODE_MISSING_DNS_INTEGRATION | 5 | |
| CAPABILITY_REASON_CODE_MISSING_SECRETS_CONFIG | 6 | |
| CAPABILITY_REASON_CODE_MISSING_CADDY_INFRA | 7 | |
| CAPABILITY_REASON_CODE_MISSING_SERVICE_META | 8 | |
| CAPABILITY_REASON_CODE_SERVICE_NOT_DECLARED | 9 | |
| CAPABILITY_REASON_CODE_SERVICE_DNS_NOT_DECLARED | 10 | |
| CAPABILITY_REASON_CODE_SERVICE_NOT_CADDY_MANAGED | 11 | |
| CAPABILITY_REASON_CODE_NODE_DISABLED | 12 | |
| CAPABILITY_REASON_CODE_NODE_OFFLINE | 13 | |
| CAPABILITY_REASON_CODE_NODE_NOT_ELIGIBLE | 14 | |
| CAPABILITY_REASON_CODE_NODE_NOT_RUSTIC_MANAGED | 15 | |
| CAPABILITY_REASON_CODE_MISSING_ELIGIBLE_RUSTIC_NODE | 16 | |
| CAPABILITY_REASON_CODE_MISSING_ONLINE_RUSTIC_NODE | 17 | |
| CAPABILITY_REASON_CODE_BACKUP_NOT_SUCCEEDED | 18 | |
| CAPABILITY_REASON_CODE_BACKUP_ARTIFACT_MISSING | 19 | |
| CAPABILITY_REASON_CODE_MISSING_RESTORE_TARGET_NODE | 20 | |
| CAPABILITY_REASON_CODE_MISSING_CLOUDFLARE_TUNNEL_INTEGRATION | 21 | |
| CAPABILITY_REASON_CODE_SERVICE_NOT_CLOUDFLARE_TUNNEL_MANAGED | 22 |
SystemService
SystemService exposes read-only controller status and config summary data.
| Method Name | Request Type | Response Type | Description |
|---|---|---|---|
| GetSystemStatus | GetSystemStatusRequest | GetSystemStatusResponse | GetSystemStatus returns the current controller status and node counts. |
| ReloadControllerConfig | ReloadControllerConfigRequest | ReloadControllerConfigResponse | ReloadControllerConfig validates and applies the controller config without replacing the process. |
| GetCurrentConfig | GetCurrentConfigRequest | GetCurrentConfigResponse | GetCurrentConfig returns the active controller config as a redacted summary. |
| GetCapabilities | GetCapabilitiesRequest | GetCapabilitiesResponse | GetCapabilities returns global feature availability for the current controller state. |
proto/composia/controller/v1/backup.proto
BackupActionCapabilities
BackupActionCapabilities describes whether backup-scoped actions may run.
| Field | Type | Label | Description |
|---|---|---|---|
| restore | Capability |
BackupSummary
BackupSummary describes one backup record in list results.
| Field | Type | Label | Description |
|---|---|---|---|
| backup_id | string | ||
| task_id | string | task_id links the backup record to the originating task. | |
| service_name | string | ||
| data_name | string | ||
| status | string | status is the latest backup status string. | |
| started_at | string | started_at is the backup start timestamp string. | |
| finished_at | string | finished_at is empty until the backup reaches a terminal state. | |
| node_id | string |
GetBackupRequest
GetBackupRequest identifies one backup record by ID.
| Field | Type | Label | Description |
|---|---|---|---|
| backup_id | string |
GetBackupResponse
GetBackupResponse describes one backup record in detail.
| Field | Type | Label | Description |
|---|---|---|---|
| backup_id | string | ||
| task_id | string | task_id links the backup record to the originating task. | |
| service_name | string | ||
| data_name | string | ||
| status | string | status is the latest backup status string. | |
| started_at | string | started_at is the backup start timestamp string. | |
| finished_at | string | finished_at is empty until the backup reaches a terminal state. | |
| artifact_ref | string | artifact_ref identifies the produced backup artifact, when present. | |
| error_summary | string | error_summary contains the failure summary when the backup fails. | |
| actions | BackupActionCapabilities | actions describes whether backup-scoped actions may currently run. | |
| node_id | string |
ListBackupsRequest
ListBackupsRequest filters backup records by included and excluded values.
| Field | Type | Label | Description |
|---|---|---|---|
| service_name | string | repeated | service_name includes only backups for these services. |
| status | string | repeated | status includes only backups matching one of these status strings. |
| data_name | string | repeated | data_name includes only backups for these service data entries. |
| page_size | uint32 | page_size is the requested page size. | |
| page | uint32 | page is the 1-based page number. | |
| node_id | string | repeated | node_id includes only backups for these source nodes. |
| exclude_service_name | string | repeated | exclude_service_name removes backups for these services. |
| exclude_status | string | repeated | exclude_status removes backups matching these status strings. |
| exclude_data_name | string | repeated | exclude_data_name removes backups for these service data entries. |
| exclude_node_id | string | repeated | exclude_node_id removes backups for these source nodes. |
ListBackupsResponse
ListBackupsResponse returns one page of backup records.
| Field | Type | Label | Description |
|---|---|---|---|
| backups | BackupSummary | repeated | |
| total_count | uint32 |
RestoreBackupRequest
RestoreBackupRequest identifies the backup record and target node for one restore task.
| Field | Type | Label | Description |
|---|---|---|---|
| backup_id | string | ||
| node_id | string | node_id identifies the destination node for the restore task. |
BackupCommandService
BackupCommandService starts backup-related actions.
| Method Name | Request Type | Response Type | Description |
|---|---|---|---|
| RestoreBackup | RestoreBackupRequest | TaskActionResponse | RestoreBackup starts an async restore task from one backup record. |
BackupQueryService
BackupQueryService exposes backup record queries.
| Method Name | Request Type | Response Type | Description |
|---|---|---|---|
| ListBackups | ListBackupsRequest | ListBackupsResponse | ListBackups returns backup records with filtering and pagination. |
| GetBackup | GetBackupRequest | GetBackupResponse | GetBackup returns one backup record by ID. |
proto/composia/controller/v1/container.proto
GetContainerLogsRequest
GetContainerLogsRequest fetches logs for one container.
| Field | Type | Label | Description |
|---|---|---|---|
| node_id | string | ||
| container_id | string | ||
| tail | string | tail is forwarded to the Docker log tail option. | |
| timestamps | bool | timestamps includes Docker timestamps in the returned log output. |
GetContainerLogsResponse
GetContainerLogsResponse returns one streamed log chunk.
| Field | Type | Label | Description |
|---|---|---|---|
| content | string |
OpenContainerExecRequest
OpenContainerExecRequest starts an interactive exec session.
| Field | Type | Label | Description |
|---|---|---|---|
| node_id | string | ||
| container_id | string | ||
| command | string | repeated | command stores the exec command and arguments. |
| rows | uint32 | rows is the initial terminal row count. | |
| cols | uint32 | cols is the initial terminal column count. |
OpenContainerExecResponse
OpenContainerExecResponse returns the session identity and websocket path.
| Field | Type | Label | Description |
|---|---|---|---|
| session_id | string | session_id identifies the created interactive exec session. | |
| websocket_path | string | websocket_path is the controller websocket path for the interactive tunnel. |
RemoveContainerRequest
RemoveContainerRequest identifies one node-scoped container deletion.
| Field | Type | Label | Description |
|---|---|---|---|
| node_id | string | ||
| container_id | string | ||
| force | bool | ||
| remove_volumes | bool |
RemoveImageRequest
RemoveImageRequest identifies one node-scoped image deletion.
| Field | Type | Label | Description |
|---|---|---|---|
| node_id | string | ||
| image_id | string | ||
| force | bool |
RemoveNetworkRequest
RemoveNetworkRequest identifies one node-scoped network deletion.
| Field | Type | Label | Description |
|---|---|---|---|
| node_id | string | ||
| network_id | string |
RemoveVolumeRequest
RemoveVolumeRequest identifies one node-scoped volume deletion.
| Field | Type | Label | Description |
|---|---|---|---|
| node_id | string | ||
| volume_name | string |
RunContainerActionRequest
RunContainerActionRequest identifies one node-scoped container action.
| Field | Type | Label | Description |
|---|---|---|---|
| node_id | string | ||
| container_id | string | ||
| action | ContainerAction |
RunContainerExecRequest
RunContainerExecRequest runs a non-interactive command in one container.
| Field | Type | Label | Description |
|---|---|---|---|
| node_id | string | ||
| container_id | string | ||
| command | string | repeated | command stores the exec command and arguments. |
| stdin | bytes | stdin carries optional bytes written before stdin is closed. | |
| timeout_seconds | uint32 | timeout_seconds bounds command runtime on the agent. | |
| max_output_bytes | uint64 | max_output_bytes limits each stdout/stderr stream; zero uses the agent default. |
RunContainerExecResponse
RunContainerExecResponse returns the completed exec result.
| Field | Type | Label | Description |
|---|---|---|---|
| exit_code | int32 | ||
| stdout | string | ||
| stderr | string | ||
| timed_out | bool | ||
| stdout_truncated | bool | ||
| stderr_truncated | bool | ||
| started_at | google.protobuf.Timestamp | ||
| finished_at | google.protobuf.Timestamp | ||
| duration | string |
ContainerAction
ContainerAction identifies a container lifecycle action.
| Name | Number | Description |
|---|---|---|
| CONTAINER_ACTION_UNSPECIFIED | 0 | CONTAINER_ACTION_UNSPECIFIED is invalid and should not be used. |
| CONTAINER_ACTION_START | 1 | CONTAINER_ACTION_START starts the container. |
| CONTAINER_ACTION_STOP | 2 | CONTAINER_ACTION_STOP stops the container. |
| CONTAINER_ACTION_RESTART | 3 | CONTAINER_ACTION_RESTART restarts the container. |
DockerCommandService
DockerCommandService exposes node-scoped Docker command entrypoints.
| Method Name | Request Type | Response Type | Description |
|---|---|---|---|
| RunContainerAction | RunContainerActionRequest | TaskActionResponse | RunContainerAction starts an async action for one container on one node. |
| RemoveContainer | RemoveContainerRequest | TaskActionResponse | RemoveContainer starts an async deletion for one container on one node. |
| GetContainerLogs | GetContainerLogsRequest | GetContainerLogsResponse stream | GetContainerLogs streams log text for one container. |
| OpenContainerExec | OpenContainerExecRequest | OpenContainerExecResponse | OpenContainerExec opens an interactive exec session for one container. |
| RunContainerExec | RunContainerExecRequest | RunContainerExecResponse | RunContainerExec runs a non-interactive exec command and returns collected output. |
| RemoveNetwork | RemoveNetworkRequest | TaskActionResponse | RemoveNetwork starts an async deletion for one network on one node. |
| RemoveVolume | RemoveVolumeRequest | TaskActionResponse | RemoveVolume starts an async deletion for one volume on one node. |
| RemoveImage | RemoveImageRequest | TaskActionResponse | RemoveImage starts an async deletion for one image on one node. |
proto/composia/controller/v1/node.proto
ContainerInfo
ContainerInfo describes one container for node-scoped list views.
| Field | Type | Label | Description |
|---|---|---|---|
| id | string | ||
| name | string | name is the runtime container name. | |
| image | string | ||
| state | string | state is the low-level Docker state value. | |
| status | string | status is the Docker status string intended for display. | |
| created | string | created is the container creation timestamp string. | |
| labels | ContainerInfo.LabelsEntry | repeated | labels is the container label map. |
| ports | string | repeated | ports contains display-formatted published port mappings. |
| networks | string | repeated | networks lists connected Docker network names. |
| image_id | string | image_id is the resolved image ID. |
ContainerInfo.LabelsEntry
| Field | Type | Label | Description |
|---|---|---|---|
| key | string | ||
| value | string |
DockerStats
DockerStats describes the latest Docker usage snapshot for one node.
| Field | Type | Label | Description |
|---|---|---|---|
| containers_total | uint32 | ||
| containers_running | uint32 | containers_running is the number of running containers. | |
| containers_stopped | uint32 | containers_stopped is the number of stopped containers. | |
| containers_paused | uint32 | containers_paused is the number of paused containers. | |
| images | uint32 | images is the number of local Docker images. | |
| networks | uint32 | networks is the number of local Docker networks. | |
| volumes | uint32 | volumes is the number of local Docker volumes. | |
| volumes_size_bytes | uint64 | volumes_size_bytes is the total reported volume size in bytes. | |
| disks_usage_bytes | uint64 | disks_usage_bytes is the Docker-reported disk usage in bytes. | |
| docker_server_version | string |
ForgetNodeRusticRequest
ForgetNodeRusticRequest forgets backup snapshots for one node and dataset.
| Field | Type | Label | Description |
|---|---|---|---|
| node_id | string | node_id is the stable node identifier. | |
| service_name | string | service_name narrows the operation to one service. | |
| data_name | string | data_name narrows the operation to one service data entry. |
ForgetNodeRusticResponse
ForgetNodeRusticResponse returns the created maintenance task ID.
| Field | Type | Label | Description |
|---|---|---|---|
| task_id | string |
GetNodeDockerStatsRequest
GetNodeDockerStatsRequest identifies the node whose Docker stats should be returned.
| Field | Type | Label | Description |
|---|---|---|---|
| node_id | string | node_id is the stable node identifier. |
GetNodeDockerStatsResponse
GetNodeDockerStatsResponse returns the latest known Docker stats snapshot.
| Field | Type | Label | Description |
|---|---|---|---|
| stats | DockerStats |
GetNodeRequest
GetNodeRequest identifies one node by ID.
| Field | Type | Label | Description |
|---|---|---|---|
| node_id | string | node_id is the stable node identifier. |
GetNodeResponse
GetNodeResponse returns one node summary.
| Field | Type | Label | Description |
|---|---|---|---|
| node | NodeSummary | node contains the requested configured node. The RPC returns NotFound when the requested node does not exist. |
ImageInfo
ImageInfo describes one Docker image for node-scoped list views.
| Field | Type | Label | Description |
|---|---|---|---|
| id | string | ||
| repo_tags | string | repeated | repo_tags lists named tags referencing the image. |
| size | int64 | size is the image size in bytes. | |
| created | string | created is the image creation timestamp string. | |
| repo_digests | string | repeated | repo_digests lists immutable digest references for the image. |
| virtual_size | int64 | virtual_size is the virtual image size in bytes. | |
| architecture | string | architecture is the image CPU architecture string. | |
| os | string | os is the image operating system string. | |
| containers_count | uint32 | containers_count is the number of containers using the image. | |
| is_dangling | bool | is_dangling reports whether the image is dangling. | |
| author | string | author is the image author metadata, when present. |
InitNodeRusticRequest
InitNodeRusticRequest initializes the Rustic repository on one node.
| Field | Type | Label | Description |
|---|---|---|---|
| node_id | string | node_id is the stable node identifier. |
InitNodeRusticResponse
InitNodeRusticResponse returns the created maintenance task ID.
| Field | Type | Label | Description |
|---|---|---|---|
| task_id | string |
InspectNodeContainerRequest
InspectNodeContainerRequest identifies one node-scoped container.
| Field | Type | Label | Description |
|---|---|---|---|
| node_id | string | node_id is the stable node identifier. | |
| container_id | string | container_id is the runtime container ID. |
InspectNodeContainerResponse
InspectNodeContainerResponse returns raw Docker inspect JSON.
| Field | Type | Label | Description |
|---|---|---|---|
| raw_json | string |
InspectNodeImageRequest
InspectNodeImageRequest identifies one node-scoped image.
| Field | Type | Label | Description |
|---|---|---|---|
| node_id | string | node_id is the stable node identifier. | |
| image_id | string | image_id is the runtime image ID. |
InspectNodeImageResponse
InspectNodeImageResponse returns raw Docker inspect JSON.
| Field | Type | Label | Description |
|---|---|---|---|
| raw_json | string |
InspectNodeNetworkRequest
InspectNodeNetworkRequest identifies one node-scoped network.
| Field | Type | Label | Description |
|---|---|---|---|
| node_id | string | node_id is the stable node identifier. | |
| network_id | string | network_id is the runtime network ID. |
InspectNodeNetworkResponse
InspectNodeNetworkResponse returns raw Docker inspect JSON.
| Field | Type | Label | Description |
|---|---|---|---|
| raw_json | string |
InspectNodeVolumeRequest
InspectNodeVolumeRequest identifies one node-scoped volume.
| Field | Type | Label | Description |
|---|---|---|---|
| node_id | string | node_id is the stable node identifier. | |
| volume_name | string | volume_name is the runtime volume name. |
InspectNodeVolumeResponse
InspectNodeVolumeResponse returns raw Docker inspect JSON.
| Field | Type | Label | Description |
|---|---|---|---|
| raw_json | string |
ListNodeContainersRequest
ListNodeContainersRequest identifies the node whose containers should be listed.
| Field | Type | Label | Description |
|---|---|---|---|
| node_id | string | node_id is the stable node identifier. | |
| page_size | uint32 | page_size is the requested page size. | |
| page | uint32 | page is the 1-based page number. | |
| search | string | search is a case-insensitive substring match across key fields. | |
| sort_by | string | sort_by identifies the field used to sort results. | |
| sort_desc | bool | sort_desc reverses the sort order when true. |
ListNodeContainersResponse
ListNodeContainersResponse returns node-scoped container summaries.
| Field | Type | Label | Description |
|---|---|---|---|
| containers | ContainerInfo | repeated | |
| total_count | uint32 |
ListNodeImagesRequest
ListNodeImagesRequest identifies the node whose images should be listed.
| Field | Type | Label | Description |
|---|---|---|---|
| node_id | string | node_id is the stable node identifier. | |
| page_size | uint32 | page_size is the requested page size. | |
| page | uint32 | page is the 1-based page number. | |
| search | string | search is a case-insensitive substring match across key fields. | |
| sort_by | string | sort_by identifies the field used to sort results. | |
| sort_desc | bool | sort_desc reverses the sort order when true. |
ListNodeImagesResponse
ListNodeImagesResponse returns node-scoped image summaries.
| Field | Type | Label | Description |
|---|---|---|---|
| images | ImageInfo | repeated | |
| total_count | uint32 |
ListNodeNetworksRequest
ListNodeNetworksRequest identifies the node whose networks should be listed.
| Field | Type | Label | Description |
|---|---|---|---|
| node_id | string | node_id is the stable node identifier. | |
| page_size | uint32 | page_size is the requested page size. | |
| page | uint32 | page is the 1-based page number. | |
| search | string | search is a case-insensitive substring match across key fields. | |
| sort_by | string | sort_by identifies the field used to sort results. | |
| sort_desc | bool | sort_desc reverses the sort order when true. |
ListNodeNetworksResponse
ListNodeNetworksResponse returns node-scoped network summaries.
| Field | Type | Label | Description |
|---|---|---|---|
| networks | NetworkInfo | repeated | |
| total_count | uint32 |
ListNodeVolumesRequest
ListNodeVolumesRequest identifies the node whose volumes should be listed.
| Field | Type | Label | Description |
|---|---|---|---|
| node_id | string | node_id is the stable node identifier. | |
| page_size | uint32 | page_size is the requested page size. | |
| page | uint32 | page is the 1-based page number. | |
| search | string | search is a case-insensitive substring match across key fields. | |
| sort_by | string | sort_by identifies the field used to sort results. | |
| sort_desc | bool | sort_desc reverses the sort order when true. |
ListNodeVolumesResponse
ListNodeVolumesResponse returns node-scoped volume summaries.
| Field | Type | Label | Description |
|---|---|---|---|
| volumes | VolumeInfo | repeated | |
| total_count | uint32 |
ListNodesRequest
ListNodesRequest requests all configured nodes.
ListNodesResponse
ListNodesResponse returns all configured nodes.
| Field | Type | Label | Description |
|---|---|---|---|
| nodes | NodeSummary | repeated |
NetworkInfo
NetworkInfo describes one Docker network for node-scoped list views.
| Field | Type | Label | Description |
|---|---|---|---|
| id | string | ||
| name | string | name is the runtime network name. | |
| driver | string | driver is the Docker network driver name. | |
| scope | string | scope is the Docker network scope. | |
| internal | bool | internal reports whether the network is internal-only. | |
| attachable | bool | attachable reports whether standalone containers may attach to the network. | |
| created | string | created is the network creation timestamp string. | |
| labels | NetworkInfo.LabelsEntry | repeated | labels is the network label map. |
| subnet | string | subnet is the primary IPv4 subnet, when available. | |
| gateway | string | gateway is the primary IPv4 gateway, when available. | |
| containers_count | uint32 | containers_count is the number of connected containers. | |
| ipv6_enabled | bool | ipv6_enabled reports whether IPv6 is enabled for the network. |
NetworkInfo.LabelsEntry
| Field | Type | Label | Description |
|---|---|---|---|
| key | string | ||
| value | string |
NodeActionCapabilities
NodeActionCapabilities describes whether node-scoped actions may run.
| Field | Type | Label | Description |
|---|---|---|---|
| caddy_sync | Capability | ||
| caddy_reload | Capability | ||
| rustic_maintenance | Capability |
NodeSummary
NodeSummary describes one configured node.
| Field | Type | Label | Description |
|---|---|---|---|
| node_id | string | node_id is the stable node identifier. | |
| display_name | string | display_name is the human-readable node label. | |
| enabled | bool | enabled reports whether the node is eligible for controller actions. | |
| is_online | bool | is_online reports whether the node has a recent heartbeat. | |
| last_heartbeat | string | last_heartbeat is the last recorded heartbeat timestamp string. | |
| actions | NodeActionCapabilities | actions describes whether node-scoped actions may currently run. |
PruneNodeDockerRequest
PruneNodeDockerRequest prunes one Docker resource class on a node.
| Field | Type | Label | Description |
|---|---|---|---|
| node_id | string | node_id is the stable node identifier. | |
| target | string | target identifies which Docker resource group to prune. |
PruneNodeDockerResponse
PruneNodeDockerResponse returns the created maintenance task ID.
| Field | Type | Label | Description |
|---|---|---|---|
| task_id | string |
PruneNodeRusticRequest
PruneNodeRusticRequest prunes backup data for one node and dataset.
| Field | Type | Label | Description |
|---|---|---|---|
| node_id | string | node_id is the stable node identifier. | |
| service_name | string | service_name narrows the operation to one service. | |
| data_name | string | data_name narrows the operation to one service data entry. |
PruneNodeRusticResponse
PruneNodeRusticResponse returns the created maintenance task ID.
| Field | Type | Label | Description |
|---|---|---|---|
| task_id | string |
ReloadNodeCaddyRequest
ReloadNodeCaddyRequest identifies the node whose Caddy instance should be reloaded.
| Field | Type | Label | Description |
|---|---|---|---|
| node_id | string | node_id is the stable node identifier. |
ReloadNodeCaddyResponse
ReloadNodeCaddyResponse returns the created maintenance task ID.
| Field | Type | Label | Description |
|---|---|---|---|
| task_id | string |
SyncNodeCaddyFilesRequest
SyncNodeCaddyFilesRequest syncs Caddy files for one node.
| Field | Type | Label | Description |
|---|---|---|---|
| node_id | string | node_id is the stable node identifier. | |
| service_name | string | service_name optionally narrows the sync to one service. | |
| full_rebuild | bool | full_rebuild forces a full Caddy file rebuild instead of an incremental sync. |
SyncNodeCaddyFilesResponse
SyncNodeCaddyFilesResponse returns the created maintenance task ID.
| Field | Type | Label | Description |
|---|---|---|---|
| task_id | string |
VolumeInfo
VolumeInfo describes one Docker volume for node-scoped list views.
| Field | Type | Label | Description |
|---|---|---|---|
| name | string | name is the runtime volume name. | |
| driver | string | driver is the Docker volume driver name. | |
| mountpoint | string | mountpoint is the volume mount path on the node. | |
| scope | string | scope is the Docker volume scope. | |
| created | string | created is the volume creation timestamp string. | |
| labels | VolumeInfo.LabelsEntry | repeated | labels is the volume label map. |
| size_bytes | int64 | size_bytes is the reported volume size in bytes. | |
| containers_count | uint32 | containers_count is the number of attached containers. | |
| in_use | bool | in_use reports whether any container currently uses the volume. |
VolumeInfo.LabelsEntry
| Field | Type | Label | Description |
|---|---|---|---|
| key | string | ||
| value | string |
DockerQueryService
DockerQueryService exposes read-only Docker resource queries for one node.
| Method Name | Request Type | Response Type | Description |
|---|---|---|---|
| ListNodeContainers | ListNodeContainersRequest | ListNodeContainersResponse | ListNodeContainers lists containers on one node. |
| InspectNodeContainer | InspectNodeContainerRequest | InspectNodeContainerResponse | InspectNodeContainer returns raw Docker inspect JSON for one container. |
| ListNodeNetworks | ListNodeNetworksRequest | ListNodeNetworksResponse | ListNodeNetworks lists networks on one node. |
| InspectNodeNetwork | InspectNodeNetworkRequest | InspectNodeNetworkResponse | InspectNodeNetwork returns raw Docker inspect JSON for one network. |
| ListNodeVolumes | ListNodeVolumesRequest | ListNodeVolumesResponse | ListNodeVolumes lists volumes on one node. |
| InspectNodeVolume | InspectNodeVolumeRequest | InspectNodeVolumeResponse | InspectNodeVolume returns raw Docker inspect JSON for one volume. |
| ListNodeImages | ListNodeImagesRequest | ListNodeImagesResponse | ListNodeImages lists images on one node. |
| InspectNodeImage | InspectNodeImageRequest | InspectNodeImageResponse | InspectNodeImage returns raw Docker inspect JSON for one image. |
NodeMaintenanceService
NodeMaintenanceService triggers async maintenance work on one node.
| Method Name | Request Type | Response Type | Description |
|---|---|---|---|
| SyncNodeCaddyFiles | SyncNodeCaddyFilesRequest | SyncNodeCaddyFilesResponse | SyncNodeCaddyFiles starts a task to sync Caddy files on one node. |
| ReloadNodeCaddy | ReloadNodeCaddyRequest | ReloadNodeCaddyResponse | ReloadNodeCaddy starts a task to reload Caddy on one node. |
| PruneNodeDocker | PruneNodeDockerRequest | PruneNodeDockerResponse | PruneNodeDocker starts a task to prune Docker resources on one node. |
| InitNodeRustic | InitNodeRusticRequest | InitNodeRusticResponse | InitNodeRustic starts a task to initialize the Rustic repository on one node. |
| ForgetNodeRustic | ForgetNodeRusticRequest | ForgetNodeRusticResponse | ForgetNodeRustic starts a task to forget Rustic snapshots for one node. |
| PruneNodeRustic | PruneNodeRusticRequest | PruneNodeRusticResponse | PruneNodeRustic starts a task to prune Rustic data on one node. |
NodeQueryService
NodeQueryService exposes read-only node and node-scoped task queries.
| Method Name | Request Type | Response Type | Description |
|---|---|---|---|
| ListNodes | ListNodesRequest | ListNodesResponse | ListNodes returns all configured nodes with current online state. |
| GetNode | GetNodeRequest | GetNodeResponse | GetNode returns one node by ID. |
| GetNodeDockerStats | GetNodeDockerStatsRequest | GetNodeDockerStatsResponse | GetNodeDockerStats returns the latest Docker stats snapshot for one node. |
proto/composia/controller/v1/repo.proto
CreateRepoDirectoryRequest
CreateRepoDirectoryRequest creates one repo-relative directory path.
| Field | Type | Label | Description |
|---|---|---|---|
| path | string | path is the repo-relative directory path to create. | |
| base_revision | string | base_revision protects against writing on top of an unexpected HEAD. | |
| commit_message | string | commit_message is used for the generated Git commit. |
DeleteRepoPathRequest
DeleteRepoPathRequest deletes one repo-relative path.
| Field | Type | Label | Description |
|---|---|---|---|
| path | string | path is the repo-relative path to delete. | |
| base_revision | string | base_revision protects against writing on top of an unexpected HEAD. | |
| commit_message | string | commit_message is used for the generated Git commit. |
GetRepoFileRequest
GetRepoFileRequest addresses one repo-relative file path.
| Field | Type | Label | Description |
|---|---|---|---|
| path | string |
GetRepoFileResponse
GetRepoFileResponse returns a repo file and its text content.
| Field | Type | Label | Description |
|---|---|---|---|
| path | string | path is the repo-relative path that was read. | |
| content | string | content is the file content as text. | |
| size | int64 | size is the file size in bytes. |
GetRepoHeadRequest
GetRepoHeadRequest requests the current controller repo state.
GetRepoHeadResponse
GetRepoHeadResponse describes the current repo state known to the controller.
| Field | Type | Label | Description |
|---|---|---|---|
| head_revision | string | head_revision is the current HEAD commit ID. | |
| branch | string | ||
| has_remote | bool | ||
| clean_worktree | bool | clean_worktree reports whether there are uncommitted local changes. | |
| sync_status | string | sync_status is the controller's repo sync status string. | |
| last_sync_error | string | last_sync_error contains the most recent sync failure, when present. | |
| last_successful_pull_at | string | last_successful_pull_at is the last successful pull timestamp string. |
ListRepoCommitsRequest
ListRepoCommitsRequest pages commit history with an opaque cursor.
| Field | Type | Label | Description |
|---|---|---|---|
| page_size | uint32 | page_size is the requested page size. | |
| cursor | string | cursor is an opaque pagination cursor from a previous response. |
ListRepoCommitsResponse
ListRepoCommitsResponse returns one page of commits.
| Field | Type | Label | Description |
|---|---|---|---|
| commits | RepoCommitSummary | repeated | |
| next_cursor | string | next_cursor is empty when there are no more results. |
ListRepoFilesRequest
ListRepoFilesRequest lists repo entries under path.
| Field | Type | Label | Description |
|---|---|---|---|
| path | string | path is repo-relative. An empty path refers to the repo root. | |
| recursive | bool | recursive includes all descendants under path when true. |
ListRepoFilesResponse
ListRepoFilesResponse returns repo entries for the requested path.
| Field | Type | Label | Description |
|---|---|---|---|
| entries | RepoFileEntry | repeated |
MoveRepoPathRequest
MoveRepoPathRequest moves one repo-relative path to another.
| Field | Type | Label | Description |
|---|---|---|---|
| source_path | string | source_path is the existing repo-relative path to move. | |
| destination_path | string | destination_path is the new repo-relative path. | |
| base_revision | string | base_revision protects against writing on top of an unexpected HEAD. | |
| commit_message | string | commit_message is used for the generated Git commit. |
RepoCommitSummary
RepoCommitSummary describes one commit in repo history.
| Field | Type | Label | Description |
|---|---|---|---|
| commit_id | string | ||
| subject | string | subject is the commit subject line. | |
| committed_at | string | committed_at is the commit timestamp string. |
RepoFileEntry
RepoFileEntry describes one direct child entry in the repo tree.
| Field | Type | Label | Description |
|---|---|---|---|
| path | string | path is a repo-relative path. | |
| name | string | name is the final path segment. | |
| is_dir | bool | is_dir reports whether the entry is a directory. | |
| size | int64 | size is the file size in bytes. Directories may report zero. |
RepoValidationError
RepoValidationError identifies one validation problem in repo content.
| Field | Type | Label | Description |
|---|---|---|---|
| path | string | path is the repo-relative path where validation failed. | |
| line | uint32 | line is the 1-based line number when the error maps to one line. | |
| message | string | message is a human-readable validation failure description. |
RepoWriteResult
RepoWriteResult reports the commit and sync result for a repo write.
| Field | Type | Label | Description |
|---|---|---|---|
| commit_id | string | commit_id is the Git commit created for the write. | |
| sync_status | string | sync_status is the repo sync state after the write. | |
| push_error | string | push_error contains the last push error when sync_status is failed. | |
| last_successful_pull_at | string | last_successful_pull_at is the last successful pull timestamp string. |
SyncRepoRequest
SyncRepoRequest asks the controller to refresh repo state from its remote.
SyncRepoResponse
SyncRepoResponse returns the repo state after a sync attempt.
| Field | Type | Label | Description |
|---|---|---|---|
| head_revision | string | head_revision is the current HEAD commit ID after the sync attempt. | |
| branch | string | branch is the currently checked out branch name. | |
| sync_status | string | sync_status is the repo sync state after the sync attempt. | |
| last_sync_error | string | last_sync_error contains the most recent sync failure, when present. | |
| last_successful_pull_at | string | last_successful_pull_at is the last successful pull timestamp string. |
UpdateRepoFileRequest
UpdateRepoFileRequest writes one file at a repo-relative path.
| Field | Type | Label | Description |
|---|---|---|---|
| path | string | path is the repo-relative path to update. | |
| content | string | content is the full replacement file content. | |
| base_revision | string | base_revision protects against writing on top of an unexpected HEAD. | |
| commit_message | string | commit_message is used for the generated Git commit. |
ValidateRepoRequest
ValidateRepoRequest asks the controller to validate repo content.
ValidateRepoResponse
ValidateRepoResponse returns all repo validation problems found.
| Field | Type | Label | Description |
|---|---|---|---|
| errors | RepoValidationError | repeated |
RepoCommandService
RepoCommandService applies changes to the controller Git repo.
| Method Name | Request Type | Response Type | Description |
|---|---|---|---|
| UpdateRepoFile | UpdateRepoFileRequest | RepoWriteResult | UpdateRepoFile writes one file, creates a commit, and reports sync state. |
| CreateRepoDirectory | CreateRepoDirectoryRequest | RepoWriteResult | CreateRepoDirectory creates one directory, creates a commit, and reports sync state. |
| MoveRepoPath | MoveRepoPathRequest | RepoWriteResult | MoveRepoPath moves or renames one repo path. |
| DeleteRepoPath | DeleteRepoPathRequest | RepoWriteResult | DeleteRepoPath deletes one repo path. |
| SyncRepo | SyncRepoRequest | SyncRepoResponse | SyncRepo pulls or syncs the repo and returns the resulting state snapshot. |
RepoQueryService
RepoQueryService exposes read-only views of the controller Git repo.
| Method Name | Request Type | Response Type | Description |
|---|---|---|---|
| GetRepoHead | GetRepoHeadRequest | GetRepoHeadResponse | GetRepoHead returns current HEAD and sync metadata. |
| ListRepoFiles | ListRepoFilesRequest | ListRepoFilesResponse | ListRepoFiles lists direct children for one repo path. |
| GetRepoFile | GetRepoFileRequest | GetRepoFileResponse | GetRepoFile returns the content of one repo file. |
| ListRepoCommits | ListRepoCommitsRequest | ListRepoCommitsResponse | ListRepoCommits returns commit history using cursor pagination. |
| ValidateRepo | ValidateRepoRequest | ValidateRepoResponse | ValidateRepo runs repo validation and returns structured errors. |
proto/composia/controller/v1/secret.proto
GetSecretRequest
GetSecretRequest identifies one decrypted secret file for a service.
| Field | Type | Label | Description |
|---|---|---|---|
| service_name | string | ||
| file_path | string | ||
| service_dir | string |
GetSecretResponse
GetSecretResponse returns one decrypted secret file.
| Field | Type | Label | Description |
|---|---|---|---|
| service_name | string | ||
| file_path | string | ||
| content | string |
UpdateSecretRequest
UpdateSecretRequest writes one decrypted secret file for a service.
| Field | Type | Label | Description |
|---|---|---|---|
| service_name | string | ||
| file_path | string | file_path is the repo-relative secret file path for the service. | |
| content | string | content is the full decrypted secret file content to store. | |
| base_revision | string | base_revision protects against writing on top of an unexpected HEAD. | |
| commit_message | string | commit_message is used for the generated Git commit. | |
| service_dir | string |
SecretService
SecretService reads and updates encrypted secret files stored in the repo.
| Method Name | Request Type | Response Type | Description |
|---|---|---|---|
| GetSecret | GetSecretRequest | GetSecretResponse | GetSecret returns the decrypted content for one service secret file. |
| UpdateSecret | UpdateSecretRequest | RepoWriteResult | UpdateSecret writes one secret file and reports the resulting repo sync state. |
proto/composia/controller/v1/service.proto
GetServiceImageUpdateChecksRequest
GetServiceImageUpdateChecksRequest identifies one service and optional node.
| Field | Type | Label | Description |
|---|---|---|---|
| service_name | string | ||
| node_id | string |
GetServiceImageUpdateChecksResponse
GetServiceImageUpdateChecksResponse returns latest image update checks.
| Field | Type | Label | Description |
|---|---|---|---|
| checks | ServiceImageUpdateCheckSummary | repeated |
GetServiceInstanceRequest
GetServiceInstanceRequest identifies one service instance by service and node.
| Field | Type | Label | Description |
|---|---|---|---|
| service_name | string | service_name is the logical service name. | |
| node_id | string | node_id identifies the node hosting the requested instance. | |
| include_containers | bool | include_containers includes instance container details when true. |
GetServiceInstanceResponse
GetServiceInstanceResponse returns one service instance detail.
| Field | Type | Label | Description |
|---|---|---|---|
| instance | ServiceInstanceDetail | instance contains the requested service instance. The RPC returns NotFound when the requested instance does not exist. |
GetServiceRequest
GetServiceRequest addresses one service by logical name.
| Field | Type | Label | Description |
|---|---|---|---|
| service_name | string | service_name is the logical service name. | |
| include_containers | bool | include_containers includes per-instance container details when true. |
GetServiceResponse
GetServiceResponse describes one service and all known instances.
| Field | Type | Label | Description |
|---|---|---|---|
| name | string | ||
| runtime_status | string | runtime_status is the controller's aggregated status string. | |
| updated_at | string | updated_at is the last known status update timestamp string. | |
| nodes | string | repeated | nodes lists the declared target nodes for this service. |
| enabled | bool | enabled reports the desired-state enabled flag for this service. | |
| directory | string | directory is the service directory inside the repo. | |
| instances | ServiceInstanceDetail | repeated | instances lists per-node runtime details known to the controller. |
| actions | ServiceActionCapabilities | actions describes whether service-scoped actions may currently run. |
GetServiceWorkspaceRequest
GetServiceWorkspaceRequest identifies one top-level service workspace folder.
| Field | Type | Label | Description |
|---|---|---|---|
| folder | string |
GetServiceWorkspaceResponse
GetServiceWorkspaceResponse returns one top-level repo service workspace.
| Field | Type | Label | Description |
|---|---|---|---|
| workspace | ServiceWorkspaceSummary |
ImageUpdateSelection
ImageUpdateSelection identifies one configured image update to apply.
| Field | Type | Label | Description |
|---|---|---|---|
| image_name | string | ||
| target_tag | string | ||
| use_detected | bool |
ListServiceInstancesRequest
ListServiceInstancesRequest addresses one service by logical name.
| Field | Type | Label | Description |
|---|---|---|---|
| service_name | string | service_name is the logical service name. |
ListServiceInstancesResponse
ListServiceInstancesResponse returns known instances for one service.
| Field | Type | Label | Description |
|---|---|---|---|
| instances | ServiceInstanceSummary | repeated |
ListServiceWorkspacesRequest
ListServiceWorkspacesRequest requests all top-level service workspaces.
ListServiceWorkspacesResponse
ListServiceWorkspacesResponse returns top-level repo service workspaces.
| Field | Type | Label | Description |
|---|---|---|---|
| workspaces | ServiceWorkspaceSummary | repeated |
ListServicesRequest
ListServicesRequest filters services by runtime status and page.
| Field | Type | Label | Description |
|---|---|---|---|
| runtime_status | string | runtime_status narrows results to one aggregated status string when set. | |
| page_size | uint32 | page_size is the requested page size. | |
| page | uint32 | page is the 1-based page number. |
ListServicesResponse
ListServicesResponse returns one page of service summaries.
| Field | Type | Label | Description |
|---|---|---|---|
| services | ServiceSummary | repeated | |
| total_count | uint32 | total_count is the total number of matches before pagination. |
MigrateServiceRequest
MigrateServiceRequest moves a service from one node to another.
| Field | Type | Label | Description |
|---|---|---|---|
| service_name | string | ||
| source_node_id | string | source_node_id identifies the current source node. | |
| target_node_id | string | target_node_id identifies the destination node. |
RunServiceActionRequest
RunServiceActionRequest starts an async action for a service.
| Field | Type | Label | Description |
|---|---|---|---|
| service_name | string | service_name is the logical service name. | |
| action | ServiceAction | action is the async operation to start. | |
| node_ids | string | repeated | node_ids optionally narrows the action to selected nodes. |
| data_names | string | repeated | data_names narrows backup-like actions to selected data entries. |
| compose_recreate_mode | ComposeRecreateMode | compose_recreate_mode controls deploy/update container recreation behavior. | |
| image_updates | ImageUpdateSelection | repeated | image_updates applies selected configured image updates before running update. |
| use_all_detected_image_updates | bool | use_all_detected_image_updates applies every detected image update for the service. | |
| backup_before_update | bool | optional | backup_before_update overrides the service config cascade for this request. |
| base_revision | string | base_revision protects repo-backed image updates against stale HEAD writes. | |
| commit_message | string | commit_message is used for repo-backed image update commits. |
RunServiceActionResponse
RunServiceActionResponse returns every queued task and any repo write side effect.
| Field | Type | Label | Description |
|---|---|---|---|
| tasks | TaskActionResponse | repeated | |
| repo_write | RepoWriteResult |
ServiceActionCapabilities
ServiceActionCapabilities describes whether service-scoped actions may run.
| Field | Type | Label | Description |
|---|---|---|---|
| backup | Capability | ||
| restore | Capability | ||
| migrate | Capability | ||
| dns_update | Capability | ||
| caddy_sync | Capability | ||
| cloudflare_tunnel_sync | Capability |
ServiceContainerSummary
ServiceContainerSummary describes one container belonging to a service instance.
| Field | Type | Label | Description |
|---|---|---|---|
| container_id | string | container_id is the runtime container ID. | |
| name | string | name is the runtime container name. | |
| image | string | ||
| state | string | state is the low-level Docker state value. | |
| status | string | status is the Docker status string intended for display. | |
| created | string | created is the container creation timestamp string. | |
| compose_project | string | compose_project is the Compose project label, when present. | |
| compose_service | string | compose_service is the Compose service label, when present. |
ServiceImageUpdateCheckSummary
ServiceImageUpdateCheckSummary describes the latest update check for one configured image.
| Field | Type | Label | Description |
|---|---|---|---|
| service_name | string | ||
| node_id | string | ||
| image_name | string | ||
| image_ref | string | ||
| policy_type | string | ||
| current_value | string | ||
| current_tag | string | ||
| current_digest | string | ||
| candidate_tag | string | ||
| candidate_digest | string | ||
| candidate_tags | string | repeated | |
| update_available | bool | ||
| check_status | string | ||
| error_summary | string | ||
| checked_at | string |
ServiceInstanceDetail
ServiceInstanceDetail extends the instance summary with container details.
| Field | Type | Label | Description |
|---|---|---|---|
| service_name | string | service_name is the logical service name. | |
| node_id | string | node_id identifies the node hosting this instance. | |
| runtime_status | string | runtime_status is the controller's current status string for this instance. | |
| updated_at | string | updated_at is the last known status update timestamp string. | |
| is_declared | bool | is_declared reports whether this instance is part of desired state. | |
| containers | ServiceContainerSummary | repeated | containers lists runtime containers currently associated with the instance. |
| pending_deploy_revision | string | pending_deploy_revision is set when a repo change affects this service and a deploy is pending. |
ServiceInstanceSummary
ServiceInstanceSummary describes one service instance on one node.
| Field | Type | Label | Description |
|---|---|---|---|
| service_name | string | service_name is the logical service name. | |
| node_id | string | node_id identifies the node hosting this instance. | |
| runtime_status | string | runtime_status is the controller's current status string for this instance. | |
| updated_at | string | updated_at is the last known status update timestamp string. | |
| is_declared | bool | is_declared reports whether this instance is part of desired state. | |
| pending_deploy_revision | string | pending_deploy_revision is set when a repo change affects this service and a deploy is pending. |
ServiceSummary
ServiceSummary describes one service for list views.
| Field | Type | Label | Description |
|---|---|---|---|
| name | string | name is the logical service name. | |
| is_declared | bool | is_declared reports whether the service exists in desired state. | |
| runtime_status | string | runtime_status is the controller's aggregated status string. | |
| updated_at | string | updated_at is the last known status update timestamp string. | |
| instance_count | uint32 | instance_count is the number of known service instances. | |
| running_count | uint32 | running_count is the number of running service instances. | |
| target_node_count | uint32 | target_node_count is the number of declared target nodes. |
ServiceWorkspaceSummary
ServiceWorkspaceSummary describes one top-level repo workspace and any merged service state.
| Field | Type | Label | Description |
|---|---|---|---|
| folder | string | folder is the repo-relative top-level folder name for this workspace. | |
| display_name | string | display_name is the preferred workspace label for operator-facing lists. | |
| service_name | string | service_name is empty until the workspace has a parseable service name. | |
| has_meta | bool | has_meta reports whether composia-meta.yaml exists in the workspace. | |
| is_declared | bool | is_declared reports whether this workspace currently maps to a declared controller service. | |
| runtime_status | string | runtime_status is the merged controller status or a workspace-local placeholder. | |
| updated_at | string | updated_at is the last known controller update timestamp string. | |
| nodes | string | repeated | nodes lists declared target nodes when the workspace meta is parseable. |
| enabled | bool | enabled reports the desired-state enabled flag when the workspace meta is parseable. | |
| actions | ServiceActionCapabilities | actions describes whether service-scoped actions may currently run. |
ComposeRecreateMode
ComposeRecreateMode controls whether docker compose up recreates containers.
| Name | Number | Description |
|---|---|---|
| COMPOSE_RECREATE_MODE_UNSPECIFIED | 0 | COMPOSE_RECREATE_MODE_UNSPECIFIED uses the default automatic behavior. |
| COMPOSE_RECREATE_MODE_AUTO | 1 | COMPOSE_RECREATE_MODE_AUTO recreates when bind mounts need refreshed. |
| COMPOSE_RECREATE_MODE_NO_RECREATE | 2 | COMPOSE_RECREATE_MODE_NO_RECREATE runs docker compose up without forcing recreation. |
| COMPOSE_RECREATE_MODE_FORCE_RECREATE | 3 | COMPOSE_RECREATE_MODE_FORCE_RECREATE always passes –force-recreate. |
ServiceAction
ServiceAction identifies an async action that targets a service.
| Name | Number | Description |
|---|---|---|
| SERVICE_ACTION_UNSPECIFIED | 0 | SERVICE_ACTION_UNSPECIFIED is invalid and should not be used. |
| SERVICE_ACTION_DEPLOY | 1 | SERVICE_ACTION_DEPLOY creates or reconciles the service on target nodes. |
| SERVICE_ACTION_UPDATE | 2 | SERVICE_ACTION_UPDATE refreshes the running service from desired state. |
| SERVICE_ACTION_STOP | 3 | SERVICE_ACTION_STOP stops the service. |
| SERVICE_ACTION_RESTART | 4 | SERVICE_ACTION_RESTART restarts the service. |
| SERVICE_ACTION_BACKUP | 5 | SERVICE_ACTION_BACKUP triggers a backup task. |
| SERVICE_ACTION_DNS_UPDATE | 6 | SERVICE_ACTION_DNS_UPDATE refreshes DNS records for the service. |
| SERVICE_ACTION_CADDY_SYNC | 7 | SERVICE_ACTION_CADDY_SYNC syncs related Caddy configuration. |
| SERVICE_ACTION_CLOUDFLARE_TUNNEL_SYNC | 8 | SERVICE_ACTION_CLOUDFLARE_TUNNEL_SYNC syncs related Cloudflare Tunnel configuration. |
ServiceCommandService
ServiceCommandService triggers service-level state changes and async actions.
| Method Name | Request Type | Response Type | Description |
|---|---|---|---|
| RunServiceAction | RunServiceActionRequest | RunServiceActionResponse | RunServiceAction starts an async action for a service and returns all created tasks. |
| MigrateService | MigrateServiceRequest | TaskActionResponse | MigrateService starts an async service migration between two nodes. |
ServiceInstanceService
ServiceInstanceService queries and operates on one concrete service instance.
| Method Name | Request Type | Response Type | Description |
|---|---|---|---|
| ListServiceInstances | ListServiceInstancesRequest | ListServiceInstancesResponse | ListServiceInstances lists all instances for one service. |
| GetServiceInstance | GetServiceInstanceRequest | GetServiceInstanceResponse | GetServiceInstance returns the detail for one service instance on one node. |
ServiceQueryService
ServiceQueryService exposes read-only service workspace, declared service, task, and backup queries.
| Method Name | Request Type | Response Type | Description |
|---|---|---|---|
| ListServices | ListServicesRequest | ListServicesResponse | ListServices returns declared services with pagination. |
| ListServiceWorkspaces | ListServiceWorkspacesRequest | ListServiceWorkspacesResponse | ListServiceWorkspaces returns top-level repo service workspaces with merged controller state. |
| GetService | GetServiceRequest | GetServiceResponse | GetService returns the full detail for a single service. |
| GetServiceWorkspace | GetServiceWorkspaceRequest | GetServiceWorkspaceResponse | GetServiceWorkspace returns one top-level repo service workspace. |
| GetServiceImageUpdateChecks | GetServiceImageUpdateChecksRequest | GetServiceImageUpdateChecksResponse | GetServiceImageUpdateChecks returns latest configured image update checks for one service. |
Scalar Value Types
| .proto Type | Notes | C++ | Java | Python | Go | C# | PHP | Ruby |
|---|---|---|---|---|---|---|---|---|
| double | double | double | float | float64 | double | float | Float | |
| float | float | float | float | float32 | float | float | Float | |
| int32 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) |
| int64 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. | int64 | long | int/long | int64 | long | integer/string | Bignum |
| uint32 | Uses variable-length encoding. | uint32 | int | int/long | uint32 | uint | integer | Bignum or Fixnum (as required) |
| uint64 | Uses variable-length encoding. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum or Fixnum (as required) |
| sint32 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) |
| sint64 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. | int64 | long | int/long | int64 | long | integer/string | Bignum |
| fixed32 | Always four bytes. More efficient than uint32 if values are often greater than 2^28. | uint32 | int | int | uint32 | uint | integer | Bignum or Fixnum (as required) |
| fixed64 | Always eight bytes. More efficient than uint64 if values are often greater than 2^56. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum |
| sfixed32 | Always four bytes. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) |
| sfixed64 | Always eight bytes. | int64 | long | int/long | int64 | long | integer/string | Bignum |
| bool | bool | boolean | boolean | bool | bool | boolean | TrueClass/FalseClass | |
| string | A string must always contain UTF-8 encoded or 7-bit ASCII text. | string | String | str/unicode | string | string | string | String (UTF-8) |
| bytes | May contain any arbitrary sequence of bytes. | string | ByteString | str | []byte | ByteString | string | String (ASCII-8BIT) |