Skip to content

App guide

Cuiman launches Eozilla App to browse processes, edit inputs, submit jobs, and inspect their status and results. The App works in a browser or inside Jupyter.

Open in a browser

Follow the local service setup, then run:

cuiman show-app

Keep the terminal running while using the App; press Ctrl+C to stop its server. The App uses the saved Cuiman service configuration. For a service requiring interactive sign-in, use cuiman login first; see Authentication.

Choose a process and submit a job

Choose Sleep Processor (sleep_a_while) from the process list. Set duration to 2, leave fail disabled, and execute the request. Follow the new job's status in the jobs view; once successful, inspect its result, the effective sleep duration. Enable fail for a separate execution if you want to explore error details.

Sleep Processor inputs in the Eozilla App connected to the local test service

For a dataset example, choose Generate scene for testing (simulate_scene). Use the small inputs from the result opener guide. The result is a reference to a Zarr dataset; that guide explains how to open it from Python. Available processes and fields depend on your service.

Launch from Python

The reusable App example creates a client for the local service and returns both handles:

from typing import Literal

from cuiman import Client
from cuiman.app import App


def open_app(display: Literal["browser", "notebook"] = "browser") -> tuple[Client, App]:
    """Open the App and return the client and server handles for later cleanup."""
    client = Client(api_url="http://127.0.0.1:8008", auth={"auth_type": "none"})
    try:
        app = client.show_app(display=display, height=640)
    except Exception:
        client.close()
        raise
    return client, app



client, app = open_app()

For another service, replace the explicit URL and authentication settings with your configuration. Call client.login() before show_app() if interactive authentication is needed.

From the repository root in pixi shell, the complete script keeps the App running until Ctrl+C and then releases its resources:

python -m examples.guides.cuiman.app

Embed in Jupyter

As an alternative to the browser launch above, start a notebook session whose working directory is the repository root and run:

from cuiman import Client
from cuiman.app import App
from examples.guides.cuiman.app import close_app, open_app, set_duration

client, app = open_app(display="notebook")

Keep client and app for subsequent cells. client.show_app() also supports display="auto", which embeds in a notebook and opens a browser otherwise. For remote Jupyter deployments, see notebook proxy configuration.

Update inputs from Python

After opening Sleep Processor in the App, update the same form from Python:

def set_duration(app: App, duration: float = 2) -> None:
    """Update the sleep form without replacing its other inputs or outputs."""
    request = app.get_process_request("sleep_a_while")
    if request is None:
        raise ValueError("Open the sleep_a_while process in the App first.")
    if request.inputs is None:
        request.inputs = {}
    request.inputs["duration"] = duration
    app.set_process_request("sleep_a_while", request)



set_duration(app, duration=5)

The helper preserves the request's other inputs and outputs. It updates the form without submitting a job. You can also edit nested state directly using app.process_requests.sleep_a_while.inputs.duration = 5.

Close the App

When finished with an App launched from Python or Jupyter:

def close_app(client: Client, app: App) -> None:
    """Stop the App server and close the client even if stopping fails."""
    try:
        app.serve_result.stop()
    finally:
        client.close()



close_app(client, app)

Closing the browser tab alone does not stop the Python server.

See the Eozilla App overview for architecture and development documentation. The original GUI notebook remains available as a historical example. Its introductory show() and show_jobs() descriptions refer to the legacy GUI; use show_app() with the current client.