Skip to content

API Reference

Every tool is also a regular Python function with an explicit signature. Below is the full surface - copy/paste-ready.

Auth & system

osmo_doctor()

Probe the local environment: osmo binary path, version, profile, login state.

osmo_login(host="", interactive=True)

Run the OAuth flow. Set interactive=False to fail fast on headless hosts.

osmo_version()

Print client + server version.

Resources

osmo_pool_list(mode="used")

List compute pools. mode="free" shows free GPUs (use right before submit).

osmo_resources_list()

GPU/CPU/memory profiles across pools.

osmo_profile_list()

Active profile + pool visibility.

osmo_bucket_list()

Object-storage buckets configured for your pools.

Workflow

osmo_workflow_submit(workflow_yaml, pool, set_vars=None, priority="", name="", extra_args=None)

Submit a YAML to a pool. priority="LOW" to bypass quota.

osmo_workflow_list(status="", pool="", limit=50, user="")

Recent workflows; filter by status / pool / owner.

osmo_workflow_status(workflow_id)

Full status + dashboard URLs.

osmo_workflow_cancel(workflow_id, reason="")

Cancel a running / pending workflow.

osmo_workflow_logs(workflow_id, task="", follow=False, tail=200)

Fetch logs (bounded - agents poll, don't stream).

osmo_workflow_exec(workflow_id, task, command="bash -lc 'echo hello'")

One-shot command inside a running task. Debugging only.

Task

osmo_task_list(workflow_id)

Tasks of a workflow.

osmo_task_describe(workflow_id, task)

Task metadata + dashboard URLs.

Data

osmo_data_upload(src, dest, bucket="", recursive=True)

Upload a file or directory.

osmo_data_download(src, dest, bucket="")

Download a path.

osmo_data_list(prefix="", bucket="", limit=100)

List objects.

Dataset

osmo_dataset_list(name="", tag="", limit=100)

List versioned datasets.

osmo_dataset_describe(name, version="")

Show versions, tags, source workflow.

App

osmo_app_list(name="", limit=100)

Published apps (reusable workflow specs).

osmo_app_create(workflow_yaml, name, version="0.1.0")

Promote a YAML to an app.

Cookbook & spec helpers

osmo_cookbook_fetch(category, recipe="", local_root="")

Pull a recipe from the OSMO cookbook (local clone or GitHub raw).

osmo_workflow_validate(workflow_yaml)

Local YAML lint (no server call). Handles workflow.tasks and workflow.groups[].tasks shapes.

osmo_workflow_render(workflow_yaml, set_vars, output="")

Jinja-render templated YAMLs locally.


All tools return Strands ToolResult shape:

{
    "status": "success" | "error",
    "content": [
        {"text": "..."},
        {"json": {"cmd": "...", "returncode": 0, "parsed": {...}}},
    ],
}