Quickstart¶
End-to-end: discover an idle pool, validate a workflow, submit it, watch it run.
1. Wire up the agent¶
from strands import Agent
from strands_osmo import (
osmo_doctor,
osmo_pool_list,
osmo_workflow_validate,
osmo_workflow_submit,
osmo_workflow_status,
osmo_workflow_logs,
osmo_workflow_cancel,
osmo_cookbook_fetch,
)
agent = Agent(tools=[
osmo_doctor,
osmo_pool_list,
osmo_workflow_validate,
osmo_workflow_submit,
osmo_workflow_status,
osmo_workflow_logs,
osmo_workflow_cancel,
osmo_cookbook_fetch,
])
2. Sanity-check the environment¶
3. Pick a pool¶
4. Submit a recipe from the cookbook¶
agent("""
Fetch the GR00T fine-tune recipe from the cookbook,
save it locally, validate it, then submit to your recommended pool.
Report the workflow ID.
""")
5. Monitor¶
6. Recover from failures¶
agent("""
If workflow <id> fails:
- if it's a quota error, retry with priority=LOW
- if it's an OOM, halve the memory request and retry
- otherwise, fetch the last 100 log lines and explain the failure
""")
That's it - you have an agent that can do anything an OSMO operator can, from a single prompt.