UCloud logo UCloud logo UCloud
v2026.3.0
  1. UCloud/Core
  2. 1. Introduction
  3. 2. Projects
  4. 3. Accounting
  5. 4. Orchestration
  6. 5. Frontend
  7. UCloud/IM for Slurm-based HPC
  8. 6. Installation
  9. 7. Architecture and Networking
  10. 8. User and Project Management
  11. 9. Filesystem Integration
    1. 9.1. Inter-provider file transfers
  12. 10. Slurm Integration
    1. 10.1. Application Management
    2. 10.2. Built-in Applications
  13. 11. Reference
    1. 11.1. Configuration
    2. 11.2. CLI
  14. 12. Appendix
    1. 12.1. Built-in Application Index
  15. UCloud/IM for Kubernetes
  16. 13. Installation
  17. 14. Architecture and Networking
  18. 15. Filesystem Integration
  19. 16. Compute Jobs
    1. 16.1. Public Links
    2. 16.2. Public IPs
    3. 16.3. License Servers
    4. 16.4. SSH Servers
    5. 16.5. Job Audit Log
    6. 16.6. Virtual machines
  20. 17. Integrated applications
    1. 17.1. Syncthing
    2. 17.2. Integrated terminal
  21. 18. UCX applications
    1. 18.1. Hello world
    2. 18.2. Data binding
    3. 18.3. UI events
    4. 18.4. Component reference
    5. 18.5. API reference
  22. 19. Reference
    1. 19.1. Configuration
    2. 19.2. CLI
  23. Branding for UCloud
  24. 20. Branding and identity for UCloud
  25. H: Procedures
  26. 21. H: Procedures
  27. 22. H: Introduction
  28. 23. H: Auditing
  29. 24. H: Auditing scenario
  30. 25. H: GitHub actions
  31. 26. H: Deployment
  32. 27. H: 3rd party dependencies (risk assesment)
  1. Links
  2. Source Code
  3. Releases

UCX applications

UCX is a backend-driven UI and orchestration layer used for building advanced UCloud application flows. It is useful when a plain static application definition is not enough, for example when a workflow needs to:

  • create multiple resources as one logical stack,
  • react to user input in real time,
  • attach links/networks/IPs/jobs dynamically,
  • and keep a custom UI synchronized with backend state.

UCX can be used in two main modes:

  • Custom application creation: You provide a full UCX application that controls the entire creation process of an application. This replaces the normal YAML driven application development flow with a UCX one instead. The application YAML will simply refer to the container hosting the UCX application.
  • Inside a running job: You expose UCX-powered controls from an existing workload to customize job behavior while it runs.

This is typically needed for advanced stacks such as managed Kubernetes control planes and other multi-resource services.

Mental model

A UCX application is a Go type implementing ucx.Application:

  • UserInterface() returns a UI tree (ucx.UiNode).
  • exported struct fields are the model state sent to the frontend.
  • OnMessage(...) handles incoming model input and unhandled UI events.
  • Session() gives access to RPC calls (ucxapi) and helper services (ucxsvc).
  • OnSysHello(payload string) (optional) this is useful in job-connected UCX flows where SysHello contains job context and labels.

At runtime:

  1. ucx.AppServe(factory) accepts a session.
  2. frontend sends SysHello.
  3. backend sends UI mount + current model.
  4. user interaction generates model input or UI events.
  5. backend updates state and streams model patches.

For job-connected sessions, SysHello is also where you can reconstruct stack context from job labels/attachments, for example with ucxsvc.StackFromJob(app, request.Job).

Recommended structure

For provider implementations, this structure works well:

  • Keep UI logic in UserInterface().
  • Keep validation and state transitions in OnMessage(...) and event handlers.
  • Use ucxsvc for stack/resource helpers.
  • Use direct ucxapi calls for functionality not covered by ucxsvc.
Previous Integrated terminal
Next Hello world