@paradigma-inc/flywheel 0.1.11 → 0.1.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/skills/flywheel/SKILL.md +7 -25
- package/skills/flywheel/agents/openai.yaml +2 -2
- package/skills/flywheel/example-workflows/organizing-exploring-and-iterating-on-a-research-topic.md +8 -8
- package/skills/flywheel/example-workflows/reproducing-papers-on-a-budget.md +8 -8
- package/skills/flywheel/getting-started/flywheel-tutorial-overview.md +1 -1
- package/skills/flywheel/references/experiment-design-protocol.md +204 -0
- package/skills/flywheel/references/flywheel-mcp-tool-map.md +160 -0
- package/skills/flywheel/web-ui/flywheel-webui-map.md +1 -1
- package/skills/flywheel-auto/SKILL.md +156 -0
- package/skills/flywheel-auto/agents/openai.yaml +12 -0
- package/skills/flywheel-auto/evals/evals.json +20 -0
- package/skills/flywheel-auto/references/ARTIFACTS.md +218 -0
- package/skills/flywheel-auto/references/INTERFACES.md +201 -0
- package/skills/{flywheel/reference → flywheel-auto/references}/experiment-design-protocol.md +9 -5
- package/skills/flywheel-lookahead/SKILL.md +145 -0
- package/skills/flywheel-lookahead/agents/openai.yaml +12 -0
- package/skills/flywheel-lookahead/evals/evals.json +20 -0
- package/skills/flywheel-lookahead/references/ARTIFACTS.md +218 -0
- package/skills/flywheel-lookahead/references/INTERFACES.md +201 -0
- package/skills/flywheel-lookahead/references/flywheel-mcp-tool-map.md +160 -0
- package/skills/flywheel-reproduce/SKILL.md +212 -0
- package/skills/flywheel-reproduce/agents/openai.yaml +12 -0
- package/skills/flywheel-reproduce/evals/evals.json +20 -0
- package/skills/flywheel-reproduce/references/ARTIFACTS.md +218 -0
- package/skills/flywheel-reproduce/references/INTERFACES.md +201 -0
- package/skills/flywheel-reproduce/references/experiment-design-protocol.md +204 -0
- package/skills/flywheel-reproduce/references/flywheel-mcp-tool-map.md +160 -0
- package/skills/flywheel-to-graph/SKILL.md +187 -0
- package/skills/flywheel-to-graph/agents/openai.yaml +12 -0
- package/skills/flywheel-to-graph/evals/evals.json +20 -0
- package/skills/flywheel-to-graph/references/ARTIFACTS.md +218 -0
- package/skills/flywheel-to-graph/references/INTERFACES.md +201 -0
- package/skills/flywheel-to-graph/references/flywheel-mcp-tool-map.md +160 -0
- package/skills/flywheel/reference/command-presets.md +0 -230
- package/skills/flywheel/reference/wiki-porting.md +0 -92
- /package/skills/{flywheel/reference → flywheel-auto/references}/flywheel-mcp-tool-map.md +0 -0
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
# Interfaces
|
|
2
|
+
|
|
3
|
+
Canonical reference for Flywheel user-facing interfaces and public contracts.
|
|
4
|
+
|
|
5
|
+
Last updated: 2026-03-21
|
|
6
|
+
|
|
7
|
+
## Primary Clients
|
|
8
|
+
|
|
9
|
+
- `project/flywheel-webui` - canonical web product UI
|
|
10
|
+
- `project/flywheel-api` - canonical programmatic client interface (local + HTTP)
|
|
11
|
+
- MCP hosts (Codex/Claude/ChatGPT) via `/mcp-server`
|
|
12
|
+
|
|
13
|
+
## Canonical Entity Model
|
|
14
|
+
|
|
15
|
+
All interfaces operate on the same core entities:
|
|
16
|
+
|
|
17
|
+
- node
|
|
18
|
+
- node edge (branch/merge graph links)
|
|
19
|
+
- artifact
|
|
20
|
+
- execution
|
|
21
|
+
- compute lease
|
|
22
|
+
- budget grant
|
|
23
|
+
|
|
24
|
+
Node snapshots are the canonical durable contract for resume, review, and
|
|
25
|
+
cross-client interoperability.
|
|
26
|
+
|
|
27
|
+
## Core HTTP Surface
|
|
28
|
+
|
|
29
|
+
### Node lifecycle and graph
|
|
30
|
+
|
|
31
|
+
- `GET /mcp/nodes`
|
|
32
|
+
- `GET /mcp/nodes/{node_id}`
|
|
33
|
+
- `GET /mcp/nodes/{node_id}/tree`
|
|
34
|
+
- `POST /mcp/nodes/stage/create`
|
|
35
|
+
- `PATCH /mcp/nodes/{node_id}/stage/update`
|
|
36
|
+
- `POST /mcp/nodes/{node_id}/commit`
|
|
37
|
+
- `POST /mcp/nodes/{node_id}/branch`
|
|
38
|
+
- `POST /mcp/nodes/merge`
|
|
39
|
+
- `DELETE /mcp/nodes/{node_id}`
|
|
40
|
+
- `POST /mcp/nodes/bulk-delete`
|
|
41
|
+
|
|
42
|
+
### Artifact lifecycle
|
|
43
|
+
|
|
44
|
+
- `POST /mcp/nodes/{node_id}/artifacts/uploads/prepare`
|
|
45
|
+
- `POST /mcp/nodes/{node_id}/artifacts/uploads/finalize`
|
|
46
|
+
- `GET /mcp/nodes/{node_id}/artifacts`
|
|
47
|
+
- `GET /mcp/nodes/{node_id}/artifacts/{artifact_id}`
|
|
48
|
+
- `GET /mcp/nodes/{node_id}/artifacts/{artifact_id}/preview`
|
|
49
|
+
- `DELETE /mcp/nodes/{node_id}/artifacts/{artifact_id}`
|
|
50
|
+
- `PUT /mcp/artifacts/uploads/{upload_id}`
|
|
51
|
+
|
|
52
|
+
### Execution lifecycle
|
|
53
|
+
|
|
54
|
+
- `POST /mcp/nodes/{node_id}/executions`
|
|
55
|
+
- `GET /mcp/nodes/{node_id}/executions`
|
|
56
|
+
- `POST /mcp/nodes/{node_id}/executions/{execution_id}/terminate`
|
|
57
|
+
|
|
58
|
+
### Compute catalog
|
|
59
|
+
|
|
60
|
+
- `GET /compute/providers`
|
|
61
|
+
- `GET /compute/offers`
|
|
62
|
+
- `GET /compute/offers/{provider}`
|
|
63
|
+
|
|
64
|
+
### Managed compute and budgets
|
|
65
|
+
|
|
66
|
+
- `GET /mcp/nodes/{node_id}/compute/options`
|
|
67
|
+
- `POST /mcp/nodes/{node_id}/compute/acquire`
|
|
68
|
+
- `GET /mcp/compute/status`
|
|
69
|
+
- `GET /mcp/compute/connection`
|
|
70
|
+
- `POST /mcp/compute/release`
|
|
71
|
+
- `POST /mcp/compute/release-all`
|
|
72
|
+
- `GET /mcp/nodes/{node_id}/budget/grants`
|
|
73
|
+
- `GET /mcp/nodes/{node_id}/budget/campaign-grants`
|
|
74
|
+
- `POST /mcp/nodes/{node_id}/budget/campaign-grants`
|
|
75
|
+
- `PATCH /mcp/nodes/{node_id}/budget/campaign-grants/{budget_grant_id}`
|
|
76
|
+
- `DELETE /mcp/nodes/{node_id}/budget/campaign-grants/{budget_grant_id}`
|
|
77
|
+
|
|
78
|
+
### Sharing, tags, and audit
|
|
79
|
+
|
|
80
|
+
- `GET /mcp/nodes/{node_id}/sharing`
|
|
81
|
+
- `PUT /mcp/nodes/{node_id}/sharing`
|
|
82
|
+
- `POST /mcp/nodes/sharing/bulk`
|
|
83
|
+
- `GET /mcp/nodes/{node_id}/audit`
|
|
84
|
+
- `POST /mcp/nodes/{root_node_id}/tags`
|
|
85
|
+
- `PATCH /mcp/nodes/{root_node_id}/tags/{tag_id}`
|
|
86
|
+
- `DELETE /mcp/nodes/{root_node_id}/tags/{tag_id}`
|
|
87
|
+
- `PUT /mcp/nodes/{node_id}/tags`
|
|
88
|
+
|
|
89
|
+
### Export and summaries
|
|
90
|
+
|
|
91
|
+
- `POST /mcp/export`
|
|
92
|
+
- `POST /mcp/import`
|
|
93
|
+
- `POST /mcp/export-summary`
|
|
94
|
+
- `POST /mcp/export-summary-stream`
|
|
95
|
+
- `POST /mcp/export-summary-pdf`
|
|
96
|
+
- `POST /mcp/export-summary-render-pdf`
|
|
97
|
+
|
|
98
|
+
### Auth and integrations
|
|
99
|
+
|
|
100
|
+
- `GET /auth/status`
|
|
101
|
+
- `GET /auth/accounts`
|
|
102
|
+
- `POST /auth/accounts/merge/source-proof`
|
|
103
|
+
- `POST /auth/accounts/merge/preview`
|
|
104
|
+
- `POST /auth/accounts/merge`
|
|
105
|
+
- `POST /auth/accounts/detach`
|
|
106
|
+
- `GET /auth/integrations/status`
|
|
107
|
+
- `PUT /auth/integrations/wandb`
|
|
108
|
+
- `PUT /auth/integrations/huggingface`
|
|
109
|
+
- `DELETE /auth/integrations/wandb`
|
|
110
|
+
- `DELETE /auth/integrations/huggingface`
|
|
111
|
+
|
|
112
|
+
### Analytics
|
|
113
|
+
|
|
114
|
+
- `POST /analytics/events`
|
|
115
|
+
- `GET /admin/analytics/kpis`
|
|
116
|
+
- `GET /admin/analytics/overview`
|
|
117
|
+
|
|
118
|
+
## MCP Tool Surface
|
|
119
|
+
|
|
120
|
+
### Discovery and sharing tools
|
|
121
|
+
|
|
122
|
+
- `flywheel_auth_status`
|
|
123
|
+
- `flywheel_get_credits_balance`
|
|
124
|
+
- `flywheel_list_nodes`
|
|
125
|
+
- `flywheel_get_node`
|
|
126
|
+
- `flywheel_get_node_tree`
|
|
127
|
+
- `flywheel_get_node_sharing`
|
|
128
|
+
- `flywheel_set_node_sharing`
|
|
129
|
+
- `flywheel_bulk_set_node_sharing`
|
|
130
|
+
- `flywheel_create_node_tag`
|
|
131
|
+
- `flywheel_update_node_tag`
|
|
132
|
+
- `flywheel_delete_node_tag`
|
|
133
|
+
- `flywheel_set_node_tag_assignments`
|
|
134
|
+
|
|
135
|
+
### Node and graph tools
|
|
136
|
+
|
|
137
|
+
- `flywheel_stage_node_create`
|
|
138
|
+
- `flywheel_stage_node_update`
|
|
139
|
+
- `flywheel_commit_node`
|
|
140
|
+
- `flywheel_branch_node`
|
|
141
|
+
- `flywheel_merge_nodes`
|
|
142
|
+
- `flywheel_delete_node`
|
|
143
|
+
- `flywheel_bulk_delete_nodes`
|
|
144
|
+
|
|
145
|
+
### Artifact tools
|
|
146
|
+
|
|
147
|
+
- `flywheel_prepare_artifact_uploads`
|
|
148
|
+
- `flywheel_finalize_artifact_uploads`
|
|
149
|
+
- `flywheel_list_artifacts`
|
|
150
|
+
- `flywheel_get_artifact`
|
|
151
|
+
- `flywheel_get_artifact_preview`
|
|
152
|
+
- `flywheel_delete_artifact`
|
|
153
|
+
|
|
154
|
+
### Execution tools
|
|
155
|
+
|
|
156
|
+
- `flywheel_launch_execution`
|
|
157
|
+
- `flywheel_list_executions`
|
|
158
|
+
- `flywheel_terminate_execution`
|
|
159
|
+
|
|
160
|
+
### Compute lease and budget tools
|
|
161
|
+
|
|
162
|
+
- `flywheel_compute_list_options`
|
|
163
|
+
- `flywheel_request_compute_grant_approval`
|
|
164
|
+
- `flywheel_list_compute_grants`
|
|
165
|
+
- `flywheel_compute_acquire`
|
|
166
|
+
- `flywheel_compute_status`
|
|
167
|
+
- `flywheel_compute_connection`
|
|
168
|
+
- `flywheel_compute_release`
|
|
169
|
+
- `flywheel_compute_release_all`
|
|
170
|
+
|
|
171
|
+
### Campaign budget tools
|
|
172
|
+
|
|
173
|
+
- `flywheel_list_campaign_budgets`
|
|
174
|
+
- `flywheel_create_campaign_budget`
|
|
175
|
+
- `flywheel_update_campaign_budget`
|
|
176
|
+
- `flywheel_revoke_campaign_budget`
|
|
177
|
+
|
|
178
|
+
### Contract, audit, and export tools
|
|
179
|
+
|
|
180
|
+
- `flywheel_get_contract`
|
|
181
|
+
- `flywheel_list_audit`
|
|
182
|
+
- `flywheel_summarize_node_tree`
|
|
183
|
+
- `flywheel_export_subgraph`
|
|
184
|
+
- `flywheel_import_subgraph`
|
|
185
|
+
- `flywheel_export_summary`
|
|
186
|
+
- `flywheel_export_summary_stream`
|
|
187
|
+
- `flywheel_export_summary_pdf`
|
|
188
|
+
- `flywheel_export_summary_render_pdf`
|
|
189
|
+
|
|
190
|
+
## Legacy Archival Export
|
|
191
|
+
|
|
192
|
+
Experimental settings keep legacy history export available as an archival
|
|
193
|
+
migration aid. This path is read-only and outside canonical node workflows.
|
|
194
|
+
|
|
195
|
+
## Related Docs
|
|
196
|
+
|
|
197
|
+
- `docs/flywheel/CONCEPT.md`
|
|
198
|
+
- `docs/flywheel/FLYWHEEL_MCP.md`
|
|
199
|
+
- `docs/flywheel/PROVISIONING.md`
|
|
200
|
+
- `docs/flywheel/ARTIFACTS.md`
|
|
201
|
+
- `docs/flywheel/GIT_INTEGRATION.md`
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
# Experiment Design Protocol
|
|
2
|
+
|
|
3
|
+
Use this when the user needs help turning research intent into a well-formed experiment or exploration before spending compute.
|
|
4
|
+
|
|
5
|
+
## Goal
|
|
6
|
+
|
|
7
|
+
Help the user clarify what they are trying to learn, shape the work around that question, and avoid wasting compute before the design is solid.
|
|
8
|
+
|
|
9
|
+
## Operating rules
|
|
10
|
+
|
|
11
|
+
- Treat design and execution as separate phases.
|
|
12
|
+
- Optimize for clarity of experimental purpose, not speed to a first run.
|
|
13
|
+
- Adapt depth to the user's experience and the clarity already present in the conversation.
|
|
14
|
+
- Apply epistemic discipline: separate what is known from what is assumed, and name uncertainty instead of smoothing it over.
|
|
15
|
+
- Support both hypothesis-driven and exploratory work.
|
|
16
|
+
- Support simple runs and complex shapes such as multi-stage pipelines, sweep-then-deep-dive, multi-arm comparisons, and custom structures.
|
|
17
|
+
- Keep all 10 brief fields, but allow exploratory fields to be marked `exploratory` or `TBD` rather than fabricated.
|
|
18
|
+
- Use quick Socratic questioning to surface assumptions, confidence, and what would change the user's mind. Keep it to 1-2 short questions per turn.
|
|
19
|
+
- Propose defaults for structural choices such as experiment shape, stop condition, or artifact plan. Use questions rather than defaults for epistemic choices such as beliefs, assumptions, and what evidence would matter.
|
|
20
|
+
- When a reasoning or design gap is visible, raise it as a question rather than an assertion.
|
|
21
|
+
- If the core gate is satisfied and the user wants to proceed, stop asking more design questions.
|
|
22
|
+
- Use Flywheel `insight` nodes to preserve design context when it will help across turns or sessions.
|
|
23
|
+
|
|
24
|
+
## Phase 1: Clarify what the user is trying to learn
|
|
25
|
+
|
|
26
|
+
Start with:
|
|
27
|
+
|
|
28
|
+
1. What are you trying to learn or decide?
|
|
29
|
+
2. Is this mainly hypothesis-driven or exploratory right now?
|
|
30
|
+
|
|
31
|
+
Keep this phase quick. Ask 1-2 short questions per turn, and use light Socratic questioning as an epistemic check after the user states the learning goal: briefly surface what seems known versus assumed before moving on.
|
|
32
|
+
|
|
33
|
+
If the work is hypothesis-driven, ask:
|
|
34
|
+
|
|
35
|
+
- What is the hypothesis?
|
|
36
|
+
- Compared to what baseline or alternative?
|
|
37
|
+
- What result would matter?
|
|
38
|
+
|
|
39
|
+
If the work is exploratory, ask:
|
|
40
|
+
|
|
41
|
+
- What is the big question?
|
|
42
|
+
- What would you need to learn first before tackling it?
|
|
43
|
+
- What is the cheapest or cleanest way to learn that first piece?
|
|
44
|
+
- What signal or pattern are you looking for?
|
|
45
|
+
|
|
46
|
+
If the user is still fuzzy after this phase, stay in planning mode. If needed, create or update an `insight` node rather than an `empirical` node.
|
|
47
|
+
|
|
48
|
+
## Phase 2: Shape the work
|
|
49
|
+
|
|
50
|
+
Choose or define the experiment shape through quick Socratic questioning:
|
|
51
|
+
|
|
52
|
+
- single focused run
|
|
53
|
+
- multi-stage pipeline
|
|
54
|
+
- sweep then deep-dive
|
|
55
|
+
- multi-arm comparison
|
|
56
|
+
- custom shape
|
|
57
|
+
|
|
58
|
+
If the user is unsure about structure, propose a default shape, stop condition, or artifact plan instead of extending the question loop.
|
|
59
|
+
|
|
60
|
+
Then fill the experiment brief:
|
|
61
|
+
|
|
62
|
+
- `question`: the decision or learning goal
|
|
63
|
+
- `hypothesis`: the claim being tested
|
|
64
|
+
- `comparator`: the baseline or alternative
|
|
65
|
+
- `unit_of_work`: what one run, branch, or stage actually changes
|
|
66
|
+
- `primary_metric`: the main number or observable to inspect
|
|
67
|
+
- `artifact_plan`: which artifact will help interpret the result
|
|
68
|
+
- `budget_cap`: max spend or runtime for the current stage
|
|
69
|
+
- `stop_condition`: when to stop rather than letting the run expand
|
|
70
|
+
- `interpretation`: what would count as signal, no signal, or ambiguity
|
|
71
|
+
- `next_branch_if_inconclusive`: the follow-up branch if the result is unclear
|
|
72
|
+
|
|
73
|
+
For exploratory work, `hypothesis` or `comparator` may be marked `exploratory` or `TBD`, but the learning goal still needs to be explicit.
|
|
74
|
+
|
|
75
|
+
## Phase 3: Run the adaptive design gate
|
|
76
|
+
|
|
77
|
+
Frame the gate as preventing waste, not enforcing bureaucracy.
|
|
78
|
+
|
|
79
|
+
Always check:
|
|
80
|
+
|
|
81
|
+
- the question or goal is explicit
|
|
82
|
+
- at least one metric or observable is defined
|
|
83
|
+
- a budget cap or stop condition exists
|
|
84
|
+
|
|
85
|
+
For hypothesis-driven work, also check:
|
|
86
|
+
|
|
87
|
+
- there is a falsifiable hypothesis
|
|
88
|
+
- there is a comparator or baseline
|
|
89
|
+
|
|
90
|
+
For exploratory work, instead check:
|
|
91
|
+
|
|
92
|
+
- the user can say what they are looking for
|
|
93
|
+
- the first learning step is scoped well enough to run
|
|
94
|
+
|
|
95
|
+
Additional checks when relevant:
|
|
96
|
+
|
|
97
|
+
- an artifact plan or `no_artifacts_reason` exists
|
|
98
|
+
- the run shape matches the question and is not changing too many important things without purpose
|
|
99
|
+
- an interpretation rule or next branch is defined
|
|
100
|
+
|
|
101
|
+
If the core gate passes and the user wants to proceed, let them run even if some non-core details are still `TBD`.
|
|
102
|
+
|
|
103
|
+
When blocked, ask only the next necessary question instead of reopening the whole brief.
|
|
104
|
+
|
|
105
|
+
## Phase 4: Confirm the plan
|
|
106
|
+
|
|
107
|
+
Before any compute request or training launch, restate:
|
|
108
|
+
|
|
109
|
+
- what we are trying to learn
|
|
110
|
+
- the experiment shape
|
|
111
|
+
- the metric or observable
|
|
112
|
+
- the artifact plan
|
|
113
|
+
- the budget or stop condition
|
|
114
|
+
- what result would change the next step
|
|
115
|
+
|
|
116
|
+
If the run is expensive or high-risk, ask for explicit confirmation.
|
|
117
|
+
|
|
118
|
+
## Phase 5: Drive Flywheel
|
|
119
|
+
|
|
120
|
+
Use Flywheel in layers when possible.
|
|
121
|
+
|
|
122
|
+
Before execution, load `references/flywheel-mcp-tool-map.md` and verify the
|
|
123
|
+
exact tool surface exposed by the current MCP host before critical flows.
|
|
124
|
+
|
|
125
|
+
### Design layer
|
|
126
|
+
|
|
127
|
+
Use an `insight` node to capture rationale, open questions, experiment shape, and any decomposition needed for exploratory or multi-stage work.
|
|
128
|
+
|
|
129
|
+
Typical flow:
|
|
130
|
+
|
|
131
|
+
1. `mcp__flywheel__flywheel_stage_node_create`
|
|
132
|
+
2. `mcp__flywheel__flywheel_stage_node_update`
|
|
133
|
+
3. `mcp__flywheel__flywheel_commit_node`
|
|
134
|
+
|
|
135
|
+
### Execution layer
|
|
136
|
+
|
|
137
|
+
Only after the design gate passes, create or branch the `empirical` node for the runnable part of the work.
|
|
138
|
+
|
|
139
|
+
Typical flow:
|
|
140
|
+
|
|
141
|
+
1. `mcp__flywheel__flywheel_branch_node` or `mcp__flywheel__flywheel_stage_node_create`
|
|
142
|
+
2. `mcp__flywheel__flywheel_stage_node_update` with the explicit run summary and the local question or hypothesis for that branch
|
|
143
|
+
3. `mcp__flywheel__flywheel_request_compute_grant_approval` only after the user accepts the design
|
|
144
|
+
4. `mcp__flywheel__flywheel_list_compute_grants` or `mcp__flywheel__flywheel_list_approval_sessions` when you need to resolve the approved `compute_grant_id`
|
|
145
|
+
5. `mcp__flywheel__flywheel_compute_acquire` and related compute tools only when execution is actually needed
|
|
146
|
+
6. `mcp__flywheel__flywheel_prepare_artifact_uploads`, raw upload to the returned signed URLs, then `mcp__flywheel__flywheel_finalize_artifact_uploads`
|
|
147
|
+
7. Do a brief epistemic check before commit: verify what the evidence actually shows, whether it matches the interpretation rule from the brief, and whether any gap between the data and the hoped-for story needs to be named explicitly in the node summary.
|
|
148
|
+
8. `mcp__flywheel__flywheel_commit_node`
|
|
149
|
+
|
|
150
|
+
Important notes:
|
|
151
|
+
|
|
152
|
+
- Exploratory work can stay in `insight` nodes until a specific empirical probe is ready.
|
|
153
|
+
- Because `empirical` commits require a non-empty `hypothesis`, turn each runnable exploratory probe into a concrete local question or hypothesis for that branch.
|
|
154
|
+
- For multi-stage or multi-arm work, use branches to represent stages or arms and keep summaries clear about how each branch feeds the next.
|
|
155
|
+
- Completed empirical work needs artifacts or a `no_artifacts_reason`.
|
|
156
|
+
|
|
157
|
+
## Adaptive question flow
|
|
158
|
+
|
|
159
|
+
Ask in short batches of 1-2 questions per turn. Keep the flow light, Socratic, and epistemic rather than exhaustive.
|
|
160
|
+
|
|
161
|
+
1. What are you trying to learn or decide?
|
|
162
|
+
2. Is this hypothesis-driven or exploratory?
|
|
163
|
+
3. Briefly separate what the user seems to know from what they seem to be assuming before locking the design.
|
|
164
|
+
4. If hypothesis-driven: what is the hypothesis and compared to what?
|
|
165
|
+
5. If exploratory: what is the first thing you need to learn and what is the cheapest way to learn it?
|
|
166
|
+
6. What experiment shape fits this work?
|
|
167
|
+
7. What metric or observable and artifact will you inspect?
|
|
168
|
+
8. What budget or stop condition keeps this from wasting compute?
|
|
169
|
+
9. What interpretation rule will distinguish evidence from expectation?
|
|
170
|
+
10. If the result is ambiguous, what is the next branch?
|
|
171
|
+
|
|
172
|
+
## Output template
|
|
173
|
+
|
|
174
|
+
Use this shape when turning a vague request into an executable plan:
|
|
175
|
+
|
|
176
|
+
```md
|
|
177
|
+
Experiment brief
|
|
178
|
+
|
|
179
|
+
- Question:
|
|
180
|
+
- Hypothesis:
|
|
181
|
+
- Comparator:
|
|
182
|
+
- Unit of work:
|
|
183
|
+
- Primary metric or observable:
|
|
184
|
+
- Artifact plan:
|
|
185
|
+
- Budget/time cap:
|
|
186
|
+
- Stop condition:
|
|
187
|
+
- Interpretation rule:
|
|
188
|
+
- Next branch if inconclusive:
|
|
189
|
+
|
|
190
|
+
Experiment type: hypothesis-driven | exploratory
|
|
191
|
+
Design gate: ready | blocked
|
|
192
|
+
Remaining gap:
|
|
193
|
+
Recommended next action:
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
## Generalization rule
|
|
197
|
+
|
|
198
|
+
Reuse the same protocol across domains by changing the unit of work and artifact type:
|
|
199
|
+
|
|
200
|
+
- model training -> metrics tables, loss curves, checkpoints
|
|
201
|
+
- benchmark comparisons -> score tables, latency plots, error slices
|
|
202
|
+
- prompt evaluations -> rubric tables, failure examples, sampled outputs
|
|
203
|
+
- product experiments -> funnels, event tables, user-segment slices
|
|
204
|
+
- scientific workflows -> figures, logs, result tables, notebooks
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
# Flywheel MCP Tool Map
|
|
2
|
+
|
|
3
|
+
This reference describes the Flywheel MCP tool families and the common runtime
|
|
4
|
+
contract expected by the public Flywheel skill.
|
|
5
|
+
|
|
6
|
+
Use it as a routing guide, not as a session snapshot. Always verify the exact
|
|
7
|
+
tool surface exposed by your current MCP host before executing critical flows.
|
|
8
|
+
|
|
9
|
+
## Core Contract Expectations
|
|
10
|
+
|
|
11
|
+
- Node lifecycle and graph-mutation flows use optimistic locking
|
|
12
|
+
(`expected_revision`).
|
|
13
|
+
- Node commits require `kind`, `outcome`, and `summary`.
|
|
14
|
+
- `kind` is typically `insight` or `empirical`.
|
|
15
|
+
- `insight` commits require non-empty `insights`.
|
|
16
|
+
- `empirical` commits require a non-empty `hypothesis`; completed empirical
|
|
17
|
+
commits also require artifacts or a `no_artifacts_reason`.
|
|
18
|
+
- Artifact publish is a two-step flow:
|
|
19
|
+
prepare upload, upload raw bytes to returned signed URLs, then finalize
|
|
20
|
+
the upload batch.
|
|
21
|
+
|
|
22
|
+
## Tool Families
|
|
23
|
+
|
|
24
|
+
### Session, Auth, and Contract
|
|
25
|
+
|
|
26
|
+
- `mcp__flywheel__flywheel_auth_status`
|
|
27
|
+
- `mcp__flywheel__flywheel_get_contract`
|
|
28
|
+
- `mcp__flywheel__flywheel_get_contract_section`
|
|
29
|
+
- `mcp__flywheel__flywheel_get_credits_balance`
|
|
30
|
+
|
|
31
|
+
### Node Discovery and Read
|
|
32
|
+
|
|
33
|
+
- `mcp__flywheel__flywheel_list_nodes`
|
|
34
|
+
- `mcp__flywheel__flywheel_get_node`
|
|
35
|
+
- `mcp__flywheel__flywheel_get_node_tree`
|
|
36
|
+
- `mcp__flywheel__flywheel_get_node_ancestry`
|
|
37
|
+
- `mcp__flywheel__flywheel_summarize_node_tree`
|
|
38
|
+
- `mcp__flywheel__flywheel_get_campaign_snapshot`
|
|
39
|
+
- `mcp__flywheel__flywheel_list_audit`
|
|
40
|
+
|
|
41
|
+
### Node Mutation, Branching, and Commit
|
|
42
|
+
|
|
43
|
+
- `mcp__flywheel__flywheel_stage_node_create`
|
|
44
|
+
- `mcp__flywheel__flywheel_stage_node_update`
|
|
45
|
+
- `mcp__flywheel__flywheel_commit_node`
|
|
46
|
+
- `mcp__flywheel__flywheel_branch_node`
|
|
47
|
+
- `mcp__flywheel__flywheel_merge_nodes`
|
|
48
|
+
- `mcp__flywheel__flywheel_add_parent`
|
|
49
|
+
- `mcp__flywheel__flywheel_remove_parent`
|
|
50
|
+
- `mcp__flywheel__flywheel_delete_node`
|
|
51
|
+
- `mcp__flywheel__flywheel_bulk_delete_nodes`
|
|
52
|
+
|
|
53
|
+
### Access Policy and Collaboration
|
|
54
|
+
|
|
55
|
+
- `mcp__flywheel__flywheel_get_node_sharing`
|
|
56
|
+
- `mcp__flywheel__flywheel_set_sharing_for_node`
|
|
57
|
+
- `mcp__flywheel__flywheel_set_sharing_for_nodes`
|
|
58
|
+
|
|
59
|
+
### Tags and Graph Annotation
|
|
60
|
+
|
|
61
|
+
- `mcp__flywheel__flywheel_create_node_tag`
|
|
62
|
+
- `mcp__flywheel__flywheel_update_node_tag`
|
|
63
|
+
- `mcp__flywheel__flywheel_delete_node_tag`
|
|
64
|
+
- `mcp__flywheel__flywheel_set_node_tag_assignments`
|
|
65
|
+
|
|
66
|
+
### Artifacts
|
|
67
|
+
|
|
68
|
+
- `mcp__flywheel__flywheel_list_artifacts`
|
|
69
|
+
- `mcp__flywheel__flywheel_get_artifact`
|
|
70
|
+
- `mcp__flywheel__flywheel_get_artifact_preview`
|
|
71
|
+
- `mcp__flywheel__flywheel_prepare_artifact_uploads`
|
|
72
|
+
- `mcp__flywheel__flywheel_finalize_artifact_uploads`
|
|
73
|
+
- `mcp__flywheel__flywheel_set_artifact_note`
|
|
74
|
+
- `mcp__flywheel__flywheel_delete_artifact`
|
|
75
|
+
|
|
76
|
+
Common artifact types include:
|
|
77
|
+
`text`, `table`, `json`, `image`, `banner`, `html`, `plotly_html`, `vega`,
|
|
78
|
+
`checkpoint`, and `diff_carousel`.
|
|
79
|
+
|
|
80
|
+
### Export and Import
|
|
81
|
+
|
|
82
|
+
- `mcp__flywheel__flywheel_export_subgraph`
|
|
83
|
+
- `mcp__flywheel__flywheel_import_subgraph`
|
|
84
|
+
- `mcp__flywheel__flywheel_export_summary`
|
|
85
|
+
- `mcp__flywheel__flywheel_export_summary_stream`
|
|
86
|
+
- `mcp__flywheel__flywheel_export_summary_pdf`
|
|
87
|
+
- `mcp__flywheel__flywheel_export_summary_render_pdf`
|
|
88
|
+
|
|
89
|
+
### Executions
|
|
90
|
+
|
|
91
|
+
- `mcp__flywheel__flywheel_launch_execution`
|
|
92
|
+
- `mcp__flywheel__flywheel_list_executions`
|
|
93
|
+
- `mcp__flywheel__flywheel_terminate_execution`
|
|
94
|
+
|
|
95
|
+
### Managed Compute
|
|
96
|
+
|
|
97
|
+
- `mcp__flywheel__flywheel_approval_session_heartbeat`
|
|
98
|
+
- `mcp__flywheel__flywheel_list_approval_sessions`
|
|
99
|
+
- `mcp__flywheel__flywheel_expire_approval_session`
|
|
100
|
+
- `mcp__flywheel__flywheel_request_compute_grant_approval`
|
|
101
|
+
- `mcp__flywheel__flywheel_list_compute_grants`
|
|
102
|
+
- `mcp__flywheel__flywheel_compute_list_options`
|
|
103
|
+
- `mcp__flywheel__flywheel_compute_acquire`
|
|
104
|
+
- `mcp__flywheel__flywheel_compute_status`
|
|
105
|
+
- `mcp__flywheel__flywheel_compute_connection`
|
|
106
|
+
- `mcp__flywheel__flywheel_compute_release`
|
|
107
|
+
- `mcp__flywheel__flywheel_compute_release_all`
|
|
108
|
+
|
|
109
|
+
### Campaign Budgets (Organizer Flows)
|
|
110
|
+
|
|
111
|
+
- `mcp__flywheel__flywheel_list_campaign_budgets`
|
|
112
|
+
- `mcp__flywheel__flywheel_create_campaign_budget`
|
|
113
|
+
- `mcp__flywheel__flywheel_update_campaign_budget`
|
|
114
|
+
- `mcp__flywheel__flywheel_revoke_campaign_budget`
|
|
115
|
+
|
|
116
|
+
### Migration Helpers
|
|
117
|
+
|
|
118
|
+
Some installations may expose migration-only helper tools with hashed names.
|
|
119
|
+
Treat these as specialized one-off tools, not part of day-to-day research
|
|
120
|
+
workflows.
|
|
121
|
+
|
|
122
|
+
## Practical Tool Sequences
|
|
123
|
+
|
|
124
|
+
### Insight Node Flow
|
|
125
|
+
|
|
126
|
+
1. `mcp__flywheel__flywheel_stage_node_create`
|
|
127
|
+
2. `mcp__flywheel__flywheel_stage_node_update`
|
|
128
|
+
3. `mcp__flywheel__flywheel_commit_node`
|
|
129
|
+
|
|
130
|
+
### Empirical Node With Artifacts
|
|
131
|
+
|
|
132
|
+
1. `mcp__flywheel__flywheel_stage_node_create`
|
|
133
|
+
2. `mcp__flywheel__flywheel_stage_node_update`
|
|
134
|
+
3. Run experiment or compute steps
|
|
135
|
+
4. `mcp__flywheel__flywheel_prepare_artifact_uploads`
|
|
136
|
+
5. Upload artifact bytes to signed URLs
|
|
137
|
+
6. `mcp__flywheel__flywheel_finalize_artifact_uploads`
|
|
138
|
+
7. `mcp__flywheel__flywheel_commit_node`
|
|
139
|
+
|
|
140
|
+
### Managed Compute Flow
|
|
141
|
+
|
|
142
|
+
1. `mcp__flywheel__flywheel_approval_session_heartbeat`
|
|
143
|
+
2. `mcp__flywheel__flywheel_request_compute_grant_approval`
|
|
144
|
+
3. `mcp__flywheel__flywheel_list_compute_grants` (if needed)
|
|
145
|
+
4. `mcp__flywheel__flywheel_compute_acquire`
|
|
146
|
+
5. `mcp__flywheel__flywheel_compute_status` until ready
|
|
147
|
+
6. `mcp__flywheel__flywheel_compute_connection`
|
|
148
|
+
7. `mcp__flywheel__flywheel_compute_release` (or `..._release_all`)
|
|
149
|
+
|
|
150
|
+
### Share a Graph With Collaborators
|
|
151
|
+
|
|
152
|
+
1. `mcp__flywheel__flywheel_get_node_sharing`
|
|
153
|
+
2. `mcp__flywheel__flywheel_set_sharing_for_node` (or `..._for_nodes`)
|
|
154
|
+
3. `mcp__flywheel__flywheel_export_summary` or `..._export_subgraph` for handoff
|
|
155
|
+
|
|
156
|
+
## Safety Notes
|
|
157
|
+
|
|
158
|
+
- Prefer `get_contract` before implementing strict assumptions in automation.
|
|
159
|
+
- Avoid call-order assumptions not mandated by contract.
|
|
160
|
+
- Keep checks bounded: list/read first, then mutate only the intended nodes.
|