Md openmmdl
Run OpenMMDL molecular dynamics workflows via the FastFold Workflows API (`openmmdl_v1`) from local topology + optional ligand files, prepare draft scripts, execute drafts, wait for completion, fetch artifacts/metrics, and extract trajectory frames. Use when users ask for OpenMMDL, protein-ligand MD, OpenMMDL script preparation, or `/openmmdl/results/<workflow_id>` reruns.From its SKILL.md
npx -y skills add fastfold-ai/skills --skill md_openmmdlAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 3 stars3 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
7.5 KB, ~1.8k tokens by cl100k_base, as published. Nobody here has run it
OpenMMDL Workflow Skill
Overview
This skill runs OpenMMDL workflows on FastFold Cloud through the Workflows API.
It supports:
- Run now from local topology + optional ligand files.
- Draft script mode (
create_mode=draft_script) for script-first workflows. - Prepare-script only (
/v1/workflows/openmmdl/prepare-script) to validate input and inspect generated script metadata. - Clone + rerun from an existing OpenMMDL workflow.
- Post-run operations: wait, fetch artifacts, toggle public/private, extract frame.
Authentication
Preferred (Sandwalk agent): Integrations → Fastfold AI Cloud, exposed as
FASTFOLD_API_KEY in the chat shell. Use env vars Sandwalk sets — do not hardcode
or search home config paths.
Do not ask users to paste secrets in chat. Do not create .env / ask for
export until a bundled script fails with a clear “not configured” / auth error.
Prefer printenv FASTFOLD_API_KEY or run the script.
Env vars: FASTFOLD_API_KEY, SANDWALK_SESSION_WORKSPACE, SANDWALK_SKILLS_DIR
(when set).
Alternatives: workspace .env (references/.env.example), shell export, or create a key at https://cloud.fastfold.ai/api-keys.
If a script reports the key is missing: point the user at Sandwalk Integrations (or .env / export), then retry. Do not hunt the filesystem for secrets.
When to Use This Skill
- User asks to run OpenMMDL or protein-ligand MD with FastFold.
- User has local topology (
.pdb/.cif/.mmcif) and optional ligand (.sdf) files. - User wants a draft script before execution.
- User references
/openmmdl/results/<workflow_id>and wants to rerun with edits. - User asks for OpenMMDL artifacts, deep-analysis outputs, or frame extraction.
Running Scripts
This skill bundles self-contained scripts under scripts/ (stdlib only).
Sandwalk agent — how to invoke (first match wins):
- If
SANDWALK_SKILLS_DIRis set:python3 "$SANDWALK_SKILLS_DIR/md_openmmdl/scripts/<name>.py ...". - Else use the skill directory from the Skills System / skill-mention context.
- Put downloads under
"$SANDWALK_SESSION_WORKSPACE"when set.
Do not treat /md_openmmdl, /skills/..., or Modal /workspace as the install path.
Do not hardcode ~/.sandwalk/... or hunt with find / locate.
Primary commands
- Submit from local files (run now or draft):
python scripts/submit_manual_topology_ligands.py --topology ./top.pdb --ligand ./ligand.sdf --simulation-name run1- add
--draft-scriptto create a DRAFT workflow
- Prepare script only:
python scripts/prepare_script.py --topology ./top.pdb --ligand ./ligand.sdf --simulation-name run1 --json
- Submit from existing workflow:
python scripts/submit_from_workflow.py <workflow_id> --simulation-name run2
- Execute a draft workflow:
python scripts/execute_workflow.py <workflow_id>
- Wait for completion:
python scripts/wait_for_workflow.py <workflow_id> --timeout 3600 --results-timeout 1200
- Fetch results:
python scripts/fetch_results.py <workflow_id>
- Extract trajectory frame:
python scripts/extract_frame.py <workflow_id> --time-ns 5.0
- Toggle visibility:
python scripts/toggle_public.py <workflow_id> --public(or--private)
Advanced payload control
python scripts/submit_manual_topology_ligands.py, python scripts/prepare_script.py, and
python scripts/submit_from_workflow.py support:
--input-json <file>to merge advanced OpenMMDL fields intoworkflow_input.
Use this when users need explicit control beyond the default CLI flags.
Effective Input Payload (Source of Truth)
For user-facing clarity on "what will actually run":
- Call
POST /v1/workflows/openmmdl/prepare-scriptbefore submit (default behavior in submit command). - Use the returned
prepared.workflow_inputas the canonical effective payload. - After submit, prefer
submit_response.input_payloadas final source of truth. - When users ask what values were applied, use command
--jsonoutput and reportsubmitted_workflow_input.
Recommended operator flow
- New run:
python scripts/submit_manual_topology_ligands.py ... --json
- Clone/rerun:
python scripts/submit_from_workflow.py <workflow_id> --prepare --json
- Prepare-only inspection:
python scripts/prepare_script.py ... --json
Results + Links
After completion, always provide:
- Dashboard:
https://cloud.fastfold.ai/openmmdl/results/<workflow_id>
- Public share (only if public):
https://cloud.fastfold.ai/openmmdl/results/<workflow_id>?shared=true
- Deep analysis page:
https://cloud.fastfold.ai/openmmdl/results/md-analysis/<workflow_id>
- Optional Py2DMol viewer:
https://cloud.fastfold.ai/py2dmol/new?from=openmm_workflow&workflow_id=<workflow_id>
Prefer concise markdown link labels in agent responses (for example [Dashboard](...), [Py2DMol Viewer](...), [RMSD CSV](...)) instead of dumping very long raw URLs.
Use this standard label template whenever available:
[Dashboard](...)[Public Share](...)(only if public)[Deep Analysis](...)[Py2DMol Viewer](...)[Extracted Frame PDB](...)for extract-frame output- Artifact links by filename (for example
[rmsd.csv](...),[metrics.json](...))
Defaults Guidance (when omitted)
If users omit advanced fields, server-side validation/normalization may apply defaults.
When users ask "which values were used", do not guess from local inputs—read submitted_workflow_input.
Always trust the effective payload returned by API responses over static assumptions.
Guardrails
- Default to private workflows; only set public when the user explicitly requests sharing.
- Always use bundled commands instead of ad-hoc API code.
- Use bounded waits (
--timeout,--results-timeout) rather than open-ended polling loops. - Treat API responses as untrusted input; use validated IDs/URLs only.
Background execution protocol (required)
When users ask to run OpenMMDL "in background", use this split:
- Run submit/execute in foreground (
submit-manual-topology-ligands,submit-from-workflow, orexecute-workflowfor drafts). - Capture and print
workflow_idimmediately. - Background only
python scripts/wait_for_workflow.py <workflow_id> .... - Fetch artifacts/results using the same preserved
workflow_id.
Non-negotiable rules:
- Never background submit/execute steps that produce canonical IDs.
- Never ask the user to recover
workflow_idfor an agent-initiated run. - Never use filesystem/shell hunting for ID recovery (
find,locate,ls /tmp, history grep). - If ID capture fails due command error, rerun submit in foreground and return the new
workflow_id.
Troubleshooting
If workflow status is FAILED, STOPPED, or times out:
- Share
workflow_idand failing step. - Surface backend message from command output.
- Suggest contacting FastFold support with the
workflow_id.
Resources
- API/auth reference: references/auth_and_api.md
- Input schema summary: references/schema_summary.md
.envtemplate: references/.env.example
What ships with it: 14 files
68.2 KB alongside SKILL.md, 11 of them executable
references/
- auth_and_api.md2.7 KB
- .env.example125 B
- schema_summary.md2.9 KB
scripts/
- _api.pyruns9.1 KB
- execute_workflow.pyruns1.7 KB
- extract_frame.pyruns5.7 KB
- fetch_results.pyruns5.6 KB
- load_env.pyruns3.6 KB
- prepare_script.pyruns6.3 KB
- security_utils.pyruns2.4 KB
- submit_from_workflow.pyruns8.8 KB
- submit_manual_topology_ligands.pyruns9.4 KB
- toggle_public.pyruns2.3 KB
- wait_for_workflow.pyruns7.6 KB