@paradigma-inc/flywheel 0.1.4 → 0.1.9
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/README.md +129 -24
- package/package.json +10 -8
- package/skills/flywheel/SKILL.md +52 -0
- package/skills/flywheel/agents/openai.yaml +15 -0
- package/skills/flywheel/campaigns/participating-in-a-campaign.md +18 -0
- package/skills/flywheel/compute/credits-and-billing.md +11 -0
- package/skills/flywheel/compute/managed-compute.md +44 -0
- package/skills/flywheel/example-workflows/organizing-exploring-and-iterating-on-a-research-topic.md +255 -0
- package/skills/flywheel/example-workflows/reproducing-papers-on-a-budget.md +151 -0
- package/skills/flywheel/getting-started/account-access.md +8 -0
- package/skills/flywheel/getting-started/flywheel-quickstart.md +23 -0
- package/skills/flywheel/getting-started/flywheel-tutorial-overview.md +30 -0
- package/skills/flywheel/reference/experiment-design-protocol.md +200 -0
- package/skills/flywheel/reference/flywheel-mcp-tool-map.md +160 -0
- package/skills/flywheel/setting-up-flywheel/claude-code-cli-installation.md +16 -0
- package/skills/flywheel/setting-up-flywheel/codex-cli-installation.md +16 -0
- package/skills/flywheel/setting-up-flywheel/how-can-i-get-an-authorized-client_id-for-the-oauth-flow.md +50 -0
- package/skills/flywheel/setting-up-flywheel/installation-overview.md +26 -0
- package/skills/flywheel/setting-up-flywheel/other-hosts-installation.md +40 -0
- package/skills/flywheel/setting-up-flywheel/updating-flywheel-mcp.md +21 -0
- package/skills/flywheel/usage-and-workflows/using-local-hardware-with-flywheel.md +57 -0
- package/skills/flywheel/usage-and-workflows/what-to-do-with-flywheel.md +34 -0
- package/skills/flywheel/web-ui/flywheel-webui-map.md +28 -0
- package/skills/flywheel/web-ui/the-flywheel-web-ui.md +17 -0
- package/src/cli.mjs +508 -54
- package/src/mcp-writer.mjs +128 -3
- package/src/setup-auth.mjs +231 -27
- package/src/skill-installer.mjs +542 -0
package/README.md
CHANGED
|
@@ -1,39 +1,144 @@
|
|
|
1
1
|
# flywheel setup CLI
|
|
2
2
|
|
|
3
|
-
This package
|
|
3
|
+
This package configures Flywheel MCP for supported AI coding hosts and can
|
|
4
|
+
install or refresh all bundled Flywheel skills during setup.
|
|
4
5
|
|
|
5
|
-
##
|
|
6
|
+
## Public Guided Install (Primary Human Flow)
|
|
6
7
|
|
|
7
8
|
```bash
|
|
8
|
-
npx @paradigma-inc/flywheel setup
|
|
9
|
-
npx @paradigma-inc/flywheel uninstall
|
|
9
|
+
npx --yes @paradigma-inc/flywheel setup
|
|
10
10
|
```
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
Guided flow:
|
|
13
|
+
|
|
14
|
+
1. Flywheel MCP setup runs first.
|
|
15
|
+
2. If at least one selected host supports bundled skill install, setup asks
|
|
16
|
+
one of these prompts:
|
|
17
|
+
- `Also install or refresh the bundled Flywheel skill?`
|
|
18
|
+
- `Also install or refresh the bundled Flywheel skills?`
|
|
19
|
+
3. The prompt default is yes.
|
|
20
|
+
|
|
21
|
+
If you accept the default, the run completes with MCP plus bundled skill setup
|
|
22
|
+
for supported hosts.
|
|
23
|
+
|
|
24
|
+
## Public Base URL Rules
|
|
25
|
+
|
|
26
|
+
`--base-url` must be a public Flywheel origin, not a backend URL and not a URL
|
|
27
|
+
with a path/query/fragment.
|
|
28
|
+
|
|
29
|
+
Use public origins such as:
|
|
30
|
+
|
|
31
|
+
- `https://flywheel.paradigma.inc`
|
|
32
|
+
|
|
33
|
+
Do not pass backend Fly machine hostnames (for example `*.fly.dev`) to
|
|
34
|
+
`--base-url`.
|
|
35
|
+
|
|
36
|
+
## Explicit Automation Flows
|
|
37
|
+
|
|
38
|
+
Prompt-free combined MCP plus skill setup:
|
|
14
39
|
|
|
15
40
|
```bash
|
|
16
|
-
npx @paradigma-inc/flywheel
|
|
17
|
-
--name flywheel-staging \
|
|
18
|
-
--base-url https://flywheel-staging.paradigma.inc
|
|
41
|
+
npx --yes @paradigma-inc/flywheel setup --install-skill
|
|
19
42
|
```
|
|
20
43
|
|
|
21
|
-
|
|
44
|
+
Prompt-free MCP-only setup:
|
|
22
45
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
46
|
+
```bash
|
|
47
|
+
npx --yes @paradigma-inc/flywheel setup --skip-skill
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
`--install-skill` and `--skip-skill` are mutually exclusive.
|
|
51
|
+
|
|
52
|
+
Non-interactive setup requires one of those flags.
|
|
53
|
+
|
|
54
|
+
## Auth Modes And Remote Shells
|
|
55
|
+
|
|
56
|
+
`setup --auth-mode auto|loopback|device` controls authentication behavior:
|
|
57
|
+
|
|
58
|
+
- `loopback`: opens `/auth/mcp/setup` and waits for a localhost callback.
|
|
59
|
+
- `device`: opens `/auth/mcp/setup/device`, confirms a setup code in browser,
|
|
60
|
+
and CLI polls for approval.
|
|
61
|
+
- `auto` (default): uses `device` on SSH shells and `loopback` otherwise.
|
|
62
|
+
|
|
63
|
+
Remote/headless example:
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
npx --yes @paradigma-inc/flywheel setup \
|
|
67
|
+
--auth-mode device \
|
|
68
|
+
--base-url https://flywheel.paradigma.inc
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## Scope Rules
|
|
72
|
+
|
|
73
|
+
- Default scope (no `--project`) is user-level/global:
|
|
74
|
+
MCP config is written to the host's global config path and bundled skill
|
|
75
|
+
install targets user-level skill directories.
|
|
76
|
+
- `--project` is the explicit repo-local override:
|
|
77
|
+
MCP config and bundled skill install both target project-local paths.
|
|
78
|
+
|
|
79
|
+
Examples:
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
# Global default
|
|
83
|
+
npx --yes @paradigma-inc/flywheel setup --install-skill --codex --api-key <token>
|
|
27
84
|
|
|
28
|
-
|
|
85
|
+
# Project-local override
|
|
86
|
+
npx --yes @paradigma-inc/flywheel setup --install-skill \
|
|
87
|
+
--project --codex --api-key <token>
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
## Public Update Flow
|
|
91
|
+
|
|
92
|
+
After a new release:
|
|
93
|
+
|
|
94
|
+
- Human-guided update:
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
npx --yes @paradigma-inc/flywheel@latest setup
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
- Automation update:
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
npx --yes @paradigma-inc/flywheel@latest setup --install-skill
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
Reruns refresh every already-installed bundled skill in place and install any
|
|
107
|
+
newly bundled skills from the updated package. They do not create side-by-side
|
|
108
|
+
copies for the same scope and agent location.
|
|
109
|
+
|
|
110
|
+
## Supported Hosts For Bundled Skill Install
|
|
29
111
|
|
|
30
|
-
-
|
|
31
|
-
-
|
|
32
|
-
- OpenCode
|
|
33
|
-
- Cursor
|
|
34
|
-
-
|
|
35
|
-
-
|
|
36
|
-
- Pi (pi-mono) (`~/.pi/agent/settings.json` or `.pi/settings.json`)
|
|
112
|
+
- Claude Code
|
|
113
|
+
- Codex
|
|
114
|
+
- OpenCode
|
|
115
|
+
- Cursor
|
|
116
|
+
- OpenClaw
|
|
117
|
+
- Pi (pi-mono)
|
|
37
118
|
|
|
38
|
-
|
|
39
|
-
|
|
119
|
+
Hermes Agent remains MCP-only in phase 1.
|
|
120
|
+
|
|
121
|
+
## Troubleshooting
|
|
122
|
+
|
|
123
|
+
Advanced troubleshooting (optional): inspect installed skill state directly.
|
|
124
|
+
Normal users do not need to run these commands for install/update.
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
npx --yes skills ls -a codex
|
|
128
|
+
npx --yes skills ls -a claude-code
|
|
129
|
+
npx --yes skills ls -a cursor
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
If any bundled skill is missing, rerun setup using either guided `setup` or
|
|
133
|
+
explicit `setup --install-skill`.
|
|
134
|
+
|
|
135
|
+
## Other Commands
|
|
136
|
+
|
|
137
|
+
- `setup`: guided setup-centric flow.
|
|
138
|
+
- `uninstall`: removes Flywheel MCP entries from host configs only.
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
npx --yes @paradigma-inc/flywheel uninstall
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
- `npx --yes` only auto-confirms `npx`; it does not imply `flywheel --yes`.
|
package/package.json
CHANGED
|
@@ -1,17 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@paradigma-inc/flywheel",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.9",
|
|
4
4
|
"description": "One-command setup for Flywheel MCP hosts",
|
|
5
|
-
"repository": {
|
|
6
|
-
"type": "git",
|
|
7
|
-
"url": "https://github.com/paradigma-inc/paradigma",
|
|
8
|
-
"directory": "project/flywheel-setup"
|
|
9
|
-
},
|
|
10
5
|
"type": "module",
|
|
11
6
|
"files": [
|
|
12
7
|
"bin/",
|
|
13
8
|
"src/",
|
|
14
|
-
"README.md"
|
|
9
|
+
"README.md",
|
|
10
|
+
"skills/"
|
|
15
11
|
],
|
|
16
12
|
"bin": {
|
|
17
13
|
"flywheel": "bin/flywheel.js"
|
|
@@ -24,7 +20,13 @@
|
|
|
24
20
|
"commander": "^14.0.1",
|
|
25
21
|
"js-yaml": "^4.1.0",
|
|
26
22
|
"ora": "^9.0.0",
|
|
27
|
-
"picocolors": "^1.1.1"
|
|
23
|
+
"picocolors": "^1.1.1",
|
|
24
|
+
"skills": "1.4.7"
|
|
25
|
+
},
|
|
26
|
+
"repository": {
|
|
27
|
+
"type": "git",
|
|
28
|
+
"url": "git+https://github.com/paradigma-inc/paradigma.git",
|
|
29
|
+
"directory": "project/flywheel-setup"
|
|
28
30
|
},
|
|
29
31
|
"engines": {
|
|
30
32
|
"node": ">=20"
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: flywheel
|
|
3
|
+
description: Use for Flywheel experiment design, MCP-assisted execution, and platform setup/troubleshooting across supported hosts.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Flywheel Skill
|
|
7
|
+
|
|
8
|
+
Use this skill to structure research work and to route setup/support questions to the smallest relevant Flywheel docs.
|
|
9
|
+
|
|
10
|
+
## When To Use
|
|
11
|
+
|
|
12
|
+
Use this skill when the conversation is about any of the following:
|
|
13
|
+
|
|
14
|
+
- planning experiments, hypotheses, comparisons, or next-branch decisions
|
|
15
|
+
- running or interpreting empirical work in Flywheel
|
|
16
|
+
- choosing between `insight` and `empirical` nodes
|
|
17
|
+
- setting up, updating, authenticating, or troubleshooting Flywheel MCP
|
|
18
|
+
- managed compute, local hardware, campaigns, or Flywheel Web UI navigation
|
|
19
|
+
|
|
20
|
+
If the request is ambiguous, default to experiment-design guidance before platform mechanics.
|
|
21
|
+
|
|
22
|
+
## Workflow
|
|
23
|
+
|
|
24
|
+
1. Classify the request as research guidance, platform support, or mixed.
|
|
25
|
+
2. Load only the minimum files needed for the current task.
|
|
26
|
+
3. For research requests, run a short design pass before execution:
|
|
27
|
+
ask 1-2 questions to clarify objective, assumptions, and decision criteria.
|
|
28
|
+
4. If design is solid and the user wants to proceed, shift to execution support.
|
|
29
|
+
5. Use Flywheel MCP tools for live behavior/contract checks when available.
|
|
30
|
+
6. Summarize evidence and propose the most likely next branch.
|
|
31
|
+
|
|
32
|
+
## Routing Map
|
|
33
|
+
|
|
34
|
+
Choose one primary file first, then add at most one supporting file only if needed:
|
|
35
|
+
|
|
36
|
+
- `reference/experiment-design-protocol.md` for structured experiment design and readiness checks
|
|
37
|
+
- `reference/flywheel-mcp-tool-map.md` for exact tool surface and contract behavior
|
|
38
|
+
- `getting-started/flywheel-tutorial-overview.md` for orientation and learning path
|
|
39
|
+
- `getting-started/flywheel-quickstart.md` for fastest first-use setup and auth recovery
|
|
40
|
+
- `setting-up-flywheel/` for host-specific installation and update procedures
|
|
41
|
+
- `usage-and-workflows/` for practical workflows and local hardware
|
|
42
|
+
- `compute/` for managed compute and billing/credits
|
|
43
|
+
- `campaigns/` for campaign participation
|
|
44
|
+
- `web-ui/` for web UI guides and maps
|
|
45
|
+
- `example-workflows/` for concrete, end-to-end examples
|
|
46
|
+
|
|
47
|
+
## Guardrails
|
|
48
|
+
|
|
49
|
+
- Keep guidance harness-agnostic unless the user explicitly asks for a specific host.
|
|
50
|
+
- Prefer concrete steps and decision points over long narrative explanations.
|
|
51
|
+
- Do not run broad document reads; load only what is required by the current request.
|
|
52
|
+
- Do not start compute-heavy execution before design intent is clear.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
interface:
|
|
2
|
+
display_name: "Flywheel"
|
|
3
|
+
short_description: "Guide Flywheel experiment design, setup, tools, and workflows"
|
|
4
|
+
default_prompt: "Use $flywheel to answer Flywheel experiment, setup, MCP tool, compute, campaign, or Web UI questions."
|
|
5
|
+
|
|
6
|
+
dependencies:
|
|
7
|
+
tools:
|
|
8
|
+
- type: "mcp"
|
|
9
|
+
value: "flywheel"
|
|
10
|
+
description: "Flywheel MCP server"
|
|
11
|
+
transport: "streamable_http"
|
|
12
|
+
url: "https://flywheel.paradigma.inc/mcp-server"
|
|
13
|
+
|
|
14
|
+
policy:
|
|
15
|
+
allow_implicit_invocation: true
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# [](https://flywheel.paradigma.inc//#participating-in-a-campaign)Participating in a Campaign
|
|
2
|
+
|
|
3
|
+
Campaigns are challenge-style Flywheel graphs where an organizer shares a root graph, defines the objective and submission contract, and may fund participant compute through campaign budgets.
|
|
4
|
+
|
|
5
|
+
To participate in a campaign:
|
|
6
|
+
|
|
7
|
+
1. Get access to the campaign root. Invite-only campaigns are shared directly with your Flywheel account. Open campaigns are made public by the organizer.
|
|
8
|
+
2. Open the campaign in the WebUI or ask your MCP host to inspect the root node.
|
|
9
|
+
3. Read the campaign root carefully before you start. Organizers can define the objective, submission format, graph hygiene, repo policy, GPU guidance, and any evaluation rules directly on the root.
|
|
10
|
+
4. Do your work in your own part of the graph. Use Flywheel nodes to record your progress, artifacts, summaries, and conclusions so your submission stays reviewable.
|
|
11
|
+
5. If the campaign provides compute funding, discover the available budget grants and acquire compute against the campaign grant your MCP host shows you.
|
|
12
|
+
|
|
13
|
+
The practical rule is simple: the campaign root tells you the contract, and your graph is how you show your work.
|
|
14
|
+
|
|
15
|
+
## [](https://flywheel.paradigma.inc//#coming-soon)Coming Soon
|
|
16
|
+
|
|
17
|
+
- A dedicated tutorial section for setting up a campaign as an organizer.
|
|
18
|
+
- A dedicated tutorial section for sponsoring or funding a campaign.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Credits and Billing
|
|
2
|
+
|
|
3
|
+
Compute is billed against your Flywheel credits balance, which is separate from your subscription.
|
|
4
|
+
|
|
5
|
+
- The **Pro subscription** ($20/month or $204/year) includes $10 in non-rollover credits each Pro cycle.
|
|
6
|
+
- Those credits refresh when the plan renews, while separately purchased credits do not expire.
|
|
7
|
+
- During beta, **Pro (Beta)** users receive the same Pro-cycle credit allowance without billing while beta access remains active.
|
|
8
|
+
- You can check your balance in **Settings > Credits**.
|
|
9
|
+
- Before any compute is provisioned, you approve a spending cap — no surprises.
|
|
10
|
+
- **User budgets** fund your own managed compute usage.
|
|
11
|
+
- Campaign organizers can also fund participant compute through root-backed campaign budgets.
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# [](https://flywheel.paradigma.inc//#managed-compute)Managed Compute
|
|
2
|
+
|
|
3
|
+
Flywheel can provision managed GPU instances for you from providers like Lambda Labs, Modal, Vast.ai, and Prime Intellect — directly from your agent conversation. You don't need to leave your workflow to spin up machines.
|
|
4
|
+
|
|
5
|
+
## [](https://flywheel.paradigma.inc//#how-it-works)How it works
|
|
6
|
+
|
|
7
|
+
1. **Ask your agent for compute.** When you need a GPU for an experiment, just say so:
|
|
8
|
+
|
|
9
|
+
```console
|
|
10
|
+
$ <your-mcp-host> "I need a GPU to train a small transformer on this dataset"
|
|
11
|
+
|
|
12
|
+
I'll provision a GPU for this node. First, I need you to approve a budget.
|
|
13
|
+
Opening the approval page now...
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
2. **Approve a budget.** Flywheel opens an approval page in your browser where you set a spending cap for managed compute acquisition.
|
|
17
|
+
3. **The agent handles the rest.** It acquires a machine, waits for it to become ready, and gets SSH access automatically. Provisioning typically takes a few minutes — the agent polls for readiness in the background.
|
|
18
|
+
4. **Release when done.** When you're finished, the agent releases the lease. You can also release leases from the WebUI at any time.
|
|
19
|
+
|
|
20
|
+
## [](https://flywheel.paradigma.inc//#managing-machines-in-the-webui)Managing machines in the WebUI
|
|
21
|
+
|
|
22
|
+
In **Settings > Machines**, you can see all GPU leases across your account — including the provider, state, hourly rate, total spend, and the acquire context that originally launched each lease. You can release individual leases or all at once.
|
|
23
|
+
|
|
24
|
+

|
|
25
|
+
|
|
26
|
+
Inside a node, the node view focuses on compute policy and budget tracking (spent vs. hard cap). Active machines themselves are managed from the account level **Settings > Machines** view.
|
|
27
|
+
|
|
28
|
+
## [](https://flywheel.paradigma.inc//#credits-and-billing)Credits and billing
|
|
29
|
+
|
|
30
|
+
Compute is billed against your Flywheel credits balance, which is separate from your subscription.
|
|
31
|
+
|
|
32
|
+
- The **Pro subscription** ($20/month or $204/year) includes $10 in non-rollover credits each Pro cycle. Those credits refresh when the plan renews, while separately purchased credits do not expire.
|
|
33
|
+
- During beta, **Pro (Beta)** users receive the same Pro-cycle credit allowance without billing while beta access remains active.
|
|
34
|
+
- You can check your balance in **Settings > Credits**.
|
|
35
|
+
- Before any compute is provisioned, you approve a spending cap — no surprises.
|
|
36
|
+
- **User budgets** fund your own managed compute usage. Campaign organizers can also fund participant compute through root-backed campaign budgets (more on this in the next section).
|
|
37
|
+
|
|
38
|
+
For a focused reference, see `compute/credits-and-billing.md`.
|
|
39
|
+
|
|
40
|
+
## [](https://flywheel.paradigma.inc//#tips)Tips
|
|
41
|
+
|
|
42
|
+
- Provisioning takes a few minutes — the agent polls automatically, so you don't need to babysit it.
|
|
43
|
+
- You can walk away; Flywheel continues while the machine spins up.
|
|
44
|
+
- Release leases when you're done to save credits.
|
package/skills/flywheel/example-workflows/organizing-exploring-and-iterating-on-a-research-topic.md
ADDED
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
# Organizing, Exploring, and Iterating on a Research Topic
|
|
2
|
+
|
|
3
|
+
> The tool lists below are inferred from the current [Flywheel MCP tool map](../reference/flywheel-mcp-tool-map.md). They are likely tool sequences for each step, not verbatim execution logs.
|
|
4
|
+
|
|
5
|
+
## Image Description
|
|
6
|
+
|
|
7
|
+
```text
|
|
8
|
+
A square, dark fantasy avatar showing the head and upper chest of a shadowy armored figure. The armor is black-blue with sharp ridges and an ominous, icy sheen, and two bright cyan-blue eyes glow from beneath the helmet. The overall palette is cold and spectral, giving the image a lich-like, menacing look.
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## [tensorqt](https://x.com/tensorqt) · [@tensorqt](https://x.com/tensorqt) · [9:23 pm · 12 Mar 2026](https://x.com/tensorqt/status/2032190671281332280)
|
|
12
|
+
|
|
13
|
+
now, let's talk about how a lich uses Flywheel. let's start with an experiment i've tried last week
|
|
14
|
+
|
|
15
|
+
### Quote
|
|
16
|
+
|
|
17
|
+
### Image Description
|
|
18
|
+
|
|
19
|
+
```text
|
|
20
|
+
A tiny square black avatar with a centered white wireframe cube logo. The cube is drawn with thin clean lines and appears slightly tilted in perspective, like a minimalist 3D box icon floating on a solid black background.
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Paradigma · @paradigmainc · 12 Mar
|
|
24
|
+
|
|
25
|
+
Replying to @paradigmainc
|
|
26
|
+
|
|
27
|
+
Flywheel views Directed Acyclic Graphs as the underlying data structure for research: nodes can be observations or experiments. When they're experiments, they contain an hypothesis and the artifact of the experiments that may reject it. In Flywheel, researchers can focus on
|
|
28
|
+
|
|
29
|
+
### Image Description
|
|
30
|
+
|
|
31
|
+
```text
|
|
32
|
+
A clean Flywheel graph screenshot on a white canvas. Near the upper-right is a black root node labeled `scheduled muon`, connected to a branching network of pale beige and faint pink circular nodes linked by thin gray lines. Over the center sits a floating card labeled `Branch C1: fixed-alpha sw...` with an `EMPIRICAL` badge. The card text says it executed fixed-alpha sweeps on Shakespeare-char, including finer granularity below 0.5 and broad ranges crossing 0.5. Inside the card is a small plot preview titled `ALPHA_REFINE_BELOW_0.5`, showing a downward-sloping blue line with several marked points and a dashed reference line. More graph branches trail down the left side and into the lower-right corner, giving the impression of a research tree with many experiment offshoots.
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### Likely Flywheel MCP tools for this step
|
|
36
|
+
|
|
37
|
+
- `mcp__flywheel__flywheel_stage_node_create` to create the root `scheduled muon` graph.
|
|
38
|
+
- `mcp__flywheel__flywheel_stage_node_update` to describe the overall research question and first branch.
|
|
39
|
+
- `mcp__flywheel__flywheel_branch_node` to split the root into experiment branches.
|
|
40
|
+
- `mcp__flywheel__flywheel_get_node_tree` to inspect the DAG as it starts to fill out.
|
|
41
|
+
- `mcp__flywheel__flywheel_commit_node` to persist the initial structure.
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
### Image Description
|
|
46
|
+
|
|
47
|
+
```text
|
|
48
|
+
A square, dark fantasy avatar showing the head and upper chest of a shadowy armored figure. The armor is black-blue with sharp ridges and an ominous, icy sheen, and two bright cyan-blue eyes glow from beneath the helmet. The overall palette is cold and spectral, giving the image a lich-like, menacing look.
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## [tensorqt](https://x.com/tensorqt) · [@tensorqt](https://x.com/tensorqt) · [12 Mar](https://x.com/tensorqt/status/2032191049431499130)
|
|
52
|
+
|
|
53
|
+
as you all know, liches are known for obsessing over muon. i make no exception. one thing that always bothered me was how muon was performing this drastic (USV^T )^0 intervention, effectively flattening all singular values.
|
|
54
|
+
|
|
55
|
+
### Likely Flywheel MCP tools for this step
|
|
56
|
+
|
|
57
|
+
- `mcp__flywheel__flywheel_branch_node` to open an insight branch for the core muon observation.
|
|
58
|
+
- `mcp__flywheel__flywheel_stage_node_update` to record the singular-value flattening concern as an explicit insight or hypothesis.
|
|
59
|
+
- `mcp__flywheel__flywheel_commit_node` to preserve that observation as a traceable node.
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
### Image Description
|
|
64
|
+
|
|
65
|
+
```text
|
|
66
|
+
A square, dark fantasy avatar showing the head and upper chest of a shadowy armored figure. The armor is black-blue with sharp ridges and an ominous, icy sheen, and two bright cyan-blue eyes glow from beneath the helmet. The overall palette is cold and spectral, giving the image a lich-like, menacing look.
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## [tensorqt](https://x.com/tensorqt) · [@tensorqt](https://x.com/tensorqt) · [12 Mar](https://x.com/tensorqt/status/2032191420103110717)
|
|
70
|
+
|
|
71
|
+
in my mind, there must have been a "softer" way to interpolate between nesterov momentum sgd and muon, in a way that muon would be the "maximum entropy" version of preconditioning
|
|
72
|
+
|
|
73
|
+
### Likely Flywheel MCP tools for this step
|
|
74
|
+
|
|
75
|
+
- `mcp__flywheel__flywheel_branch_node` to fork a new hypothesis branch from the original muon observation.
|
|
76
|
+
- `mcp__flywheel__flywheel_stage_node_update` to capture the "softer interpolation" idea between SGD and muon.
|
|
77
|
+
- `mcp__flywheel__flywheel_commit_node` to save the refined hypothesis before experimenting.
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
### Image Description
|
|
82
|
+
|
|
83
|
+
```text
|
|
84
|
+
A square, dark fantasy avatar showing the head and upper chest of a shadowy armored figure. The armor is black-blue with sharp ridges and an ominous, icy sheen, and two bright cyan-blue eyes glow from beneath the helmet. The overall palette is cold and spectral, giving the image a lich-like, menacing look.
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## [tensorqt](https://x.com/tensorqt) · [@tensorqt](https://x.com/tensorqt) · [12 Mar](https://x.com/tensorqt/status/2032191844122075385)
|
|
88
|
+
|
|
89
|
+
so, i decided to spin up my MCP host and do a bunch of experiments. as usual, it quickly became a mess of a trillion wandb runs noone could trace anymore.
|
|
90
|
+
|
|
91
|
+
### Likely Flywheel MCP tools for this step
|
|
92
|
+
|
|
93
|
+
- `mcp__flywheel__flywheel_stage_node_create` or `mcp__flywheel__flywheel_branch_node` to turn scattered runs into explicit branches instead of an untracked run log.
|
|
94
|
+
- `mcp__flywheel__flywheel_list_nodes` to enumerate existing branches and runs.
|
|
95
|
+
- `mcp__flywheel__flywheel_get_node_tree` to inspect the structure of the experiment graph.
|
|
96
|
+
- `mcp__flywheel__flywheel_commit_node` to keep the graph auditable as new work is added.
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
### Image Description
|
|
101
|
+
|
|
102
|
+
```text
|
|
103
|
+
A square, dark fantasy avatar showing the head and upper chest of a shadowy armored figure. The armor is black-blue with sharp ridges and an ominous, icy sheen, and two bright cyan-blue eyes glow from beneath the helmet. The overall palette is cold and spectral, giving the image a lich-like, menacing look.
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
## [tensorqt](https://x.com/tensorqt) · [@tensorqt](https://x.com/tensorqt) · [12 Mar](https://x.com/tensorqt/status/2032192005883773428)
|
|
107
|
+
|
|
108
|
+
then, [@thelokasiffers](https://x.com/thelokasiffers) released an early version of our MCP integration for the first time. in a few minutes, this is what my experiments looked like:
|
|
109
|
+
|
|
110
|
+
### Likely Flywheel MCP tools for this step
|
|
111
|
+
|
|
112
|
+
- `mcp__flywheel__flywheel_stage_node_create` to create the root node if it did not already exist.
|
|
113
|
+
- `mcp__flywheel__flywheel_branch_node` to fan the work into separate experiment branches.
|
|
114
|
+
- `mcp__flywheel__flywheel_get_node_tree` to inspect the resulting DAG layout.
|
|
115
|
+
- `mcp__flywheel__flywheel_summarize_node_tree` to quickly understand branch progress and outcomes.
|
|
116
|
+
- `mcp__flywheel__flywheel_commit_node` to preserve the graph state.
|
|
117
|
+
|
|
118
|
+
### Image Description
|
|
119
|
+
|
|
120
|
+
```text
|
|
121
|
+
A tall, narrow node-link graph on a white background. At the upper-left is a solid black node labeled `scheduled muon`, from which a thin gray edge leads into a descending chain of pale beige and soft pink circular nodes. The graph branches intermittently as it moves downward, creating clusters of small leaves around intermediate nodes. The overall structure resembles a research tree or execution DAG, with the black root on the left and the rest of the experiment branches cascading diagonally downward toward the lower-left and middle portions of the image.
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
### Image Description
|
|
127
|
+
|
|
128
|
+
```text
|
|
129
|
+
A square, dark fantasy avatar showing the head and upper chest of a shadowy armored figure. The armor is black-blue with sharp ridges and an ominous, icy sheen, and two bright cyan-blue eyes glow from beneath the helmet. The overall palette is cold and spectral, giving the image a lich-like, menacing look.
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
## [tensorqt](https://x.com/tensorqt) · [@tensorqt](https://x.com/tensorqt) · [12 Mar](https://x.com/tensorqt/status/2032193065595584916)
|
|
133
|
+
|
|
134
|
+
what i did was pretty simple: i started discussing with the models my intuition: NS in muon is about approximating G(G^TG)^(-1/2). what if we could do it so that we could take a fraction power our matrices instead of just the zeroth? so something looking like US^pV^T
|
|
135
|
+
|
|
136
|
+
### Likely Flywheel MCP tools for this step
|
|
137
|
+
|
|
138
|
+
- `mcp__flywheel__flywheel_branch_node` to create an insight branch for the `US^pV^T` intuition.
|
|
139
|
+
- `mcp__flywheel__flywheel_stage_node_update` to store the proposed fractional-power formulation.
|
|
140
|
+
- `mcp__flywheel__flywheel_commit_node` to save the idea before turning it into experiments.
|
|
141
|
+
|
|
142
|
+
---
|
|
143
|
+
|
|
144
|
+
### Image Description
|
|
145
|
+
|
|
146
|
+
```text
|
|
147
|
+
A square, dark fantasy avatar showing the head and upper chest of a shadowy armored figure. The armor is black-blue with sharp ridges and an ominous, icy sheen, and two bright cyan-blue eyes glow from beneath the helmet. The overall palette is cold and spectral, giving the image a lich-like, menacing look.
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
## [tensorqt](https://x.com/tensorqt) · [@tensorqt](https://x.com/tensorqt) · [12 Mar](https://x.com/tensorqt/status/2032195027829477780)
|
|
151
|
+
|
|
152
|
+
then i realized: if we use NS to have an iteration that approximates powers of -1/2, we could design offline some polinomials that approximated the power of -p
|
|
153
|
+
|
|
154
|
+
### Likely Flywheel MCP tools for this step
|
|
155
|
+
|
|
156
|
+
- `mcp__flywheel__flywheel_branch_node` to open a follow-up hypothesis branch around polynomial approximations.
|
|
157
|
+
- `mcp__flywheel__flywheel_stage_node_update` to record the new approximation strategy.
|
|
158
|
+
- `mcp__flywheel__flywheel_commit_node` to preserve the new line of attack.
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
### Image Description
|
|
163
|
+
|
|
164
|
+
```text
|
|
165
|
+
A square, dark fantasy avatar showing the head and upper chest of a shadowy armored figure. The armor is black-blue with sharp ridges and an ominous, icy sheen, and two bright cyan-blue eyes glow from beneath the helmet. The overall palette is cold and spectral, giving the image a lich-like, menacing look.
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
## [tensorqt](https://x.com/tensorqt) · [@tensorqt](https://x.com/tensorqt) · [12 Mar](https://x.com/tensorqt/status/2032195494437347721)
|
|
169
|
+
|
|
170
|
+
at this point i started testing this out, would i get really the right spectra? that's when flywheel kicked in: i asked my MCP host to spin up some instances and train some models. in one of the nodes, we can see us sanity checking, and saving plots as artifacts, that we are indeed interpolating between regular SV distribution and zeroth power
|
|
171
|
+
|
|
172
|
+
### Likely Flywheel MCP tools for this step
|
|
173
|
+
|
|
174
|
+
- `mcp__flywheel__flywheel_branch_node` to create the empirical branch for the spectra sanity check.
|
|
175
|
+
- `mcp__flywheel__flywheel_stage_node_update` to record the hypothesis and evaluation criteria.
|
|
176
|
+
- `mcp__flywheel__flywheel_request_budget_approval`, `mcp__flywheel__flywheel_compute_acquire`, `mcp__flywheel__flywheel_compute_status`, and `mcp__flywheel__flywheel_compute_connection` to run the experiments on managed compute.
|
|
177
|
+
- `mcp__flywheel__flywheel_prepare_artifact_publish` to attach the singular-value plot as an artifact.
|
|
178
|
+
- `mcp__flywheel__flywheel_commit_node` to mark the empirical step as completed.
|
|
179
|
+
|
|
180
|
+
### Image Description
|
|
181
|
+
|
|
182
|
+
```text
|
|
183
|
+
A wide screenshot of a Flywheel branch details page titled `Branch A2: polynomial alpha sweeps`, with status pills such as `EMPIRICAL`, `COMMITTED`, `COMPLETED`, and `PRIVATE` across the top. In the main content area, a `SUMMARY` section says the run compared practical approximation behavior against exact-SVD references across the same alpha ranges, and notes `Hypothesis verdict: partially confirmed.` Below that is an `ARTIFACTS` panel containing a chart image. The chart title reads approximately `Singular values after polynomial approx (deg 3) of (G^T G)^(-alpha)`. The x-axis is an index over sorted singular values, the y-axis is logarithmic, and many slanted curves stack from dark blue at the top to yellow near the bottom, accompanied by a vertical color bar labeled `Alpha`. On the far right of the screenshot, a miniature map of the experiment tree appears as a vertical chain of diamond-like markers.
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
---
|
|
187
|
+
|
|
188
|
+
### Image Description
|
|
189
|
+
|
|
190
|
+
```text
|
|
191
|
+
A square, dark fantasy avatar showing the head and upper chest of a shadowy armored figure. The armor is black-blue with sharp ridges and an ominous, icy sheen, and two bright cyan-blue eyes glow from beneath the helmet. The overall palette is cold and spectral, giving the image a lich-like, menacing look.
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
## [tensorqt](https://x.com/tensorqt) · [@tensorqt](https://x.com/tensorqt) · [12 Mar](https://x.com/tensorqt/status/2032196071741395160)
|
|
195
|
+
|
|
196
|
+
at this point, quite a few things were in question, what would happen if i trained a model to interpolate between sgd and muon with this technique, as if "scheduling" muon?
|
|
197
|
+
|
|
198
|
+
### Likely Flywheel MCP tools for this step
|
|
199
|
+
|
|
200
|
+
- `mcp__flywheel__flywheel_branch_node` to fork a new investigation around schedule design.
|
|
201
|
+
- `mcp__flywheel__flywheel_stage_node_update` to record the competing schedule hypotheses.
|
|
202
|
+
- `mcp__flywheel__flywheel_commit_node` to preserve the question before launching more runs.
|
|
203
|
+
|
|
204
|
+
---
|
|
205
|
+
|
|
206
|
+
### Image Description
|
|
207
|
+
|
|
208
|
+
```text
|
|
209
|
+
A square, dark fantasy avatar showing the head and upper chest of a shadowy armored figure. The armor is black-blue with sharp ridges and an ominous, icy sheen, and two bright cyan-blue eyes glow from beneath the helmet. The overall palette is cold and spectral, giving the image a lich-like, menacing look.
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
## [tensorqt](https://x.com/tensorqt) · [@tensorqt](https://x.com/tensorqt) · [12 Mar](https://x.com/tensorqt/status/2032197957705994659)
|
|
213
|
+
|
|
214
|
+
but which way should we schedule? not clear. is it sgd first or muon first? how do we schedule? do we change the lr? this usually gets me quickly tangled in a mess of repos / untrackable experiments and lazy search for a gpu to run my stuff on. with flywheel, i simply desxcribe the experiments and my hypotheses as i wanted them, approved a budget, and then watched the model provision the compute, juggle the experiments, and update the graph in real time with the results, while i was thinking of the ideas
|
|
215
|
+
|
|
216
|
+
### Likely Flywheel MCP tools for this step
|
|
217
|
+
|
|
218
|
+
- `mcp__flywheel__flywheel_branch_node` to split the root into separate schedule and learning-rate branches.
|
|
219
|
+
- `mcp__flywheel__flywheel_stage_node_update` to encode the hypotheses and sweep definitions.
|
|
220
|
+
- `mcp__flywheel__flywheel_request_budget_approval` and `mcp__flywheel__flywheel_list_budget_grants` to secure spend before launch.
|
|
221
|
+
- `mcp__flywheel__flywheel_compute_acquire`, `mcp__flywheel__flywheel_compute_status`, and `mcp__flywheel__flywheel_compute_connection` to provision GPUs and keep them available to the agent.
|
|
222
|
+
- `mcp__flywheel__flywheel_prepare_artifact_publish` to attach result plots and cards as branches finish.
|
|
223
|
+
- `mcp__flywheel__flywheel_get_node_tree` or `mcp__flywheel__flywheel_list_executions` to monitor the graph as the runs progress.
|
|
224
|
+
- `mcp__flywheel__flywheel_commit_node` to finalize each completed empirical branch.
|
|
225
|
+
|
|
226
|
+
### Image Description
|
|
227
|
+
|
|
228
|
+
```text
|
|
229
|
+
A very wide Flywheel canvas view on a bright white background. In the top-left corner is the `Flywheel` wordmark, and just below it are pill-like controls labeled `Free 1` and `Timeline 2`. Near the upper-middle is a black node labeled `scheduled muon`, connected to a diagonal branching graph of pale beige and pink nodes. Floating over the graph is a card titled `Branch C3: entropy-thres...` with an `EMPIRICAL` badge and descriptive text about sweeping entropy-threshold schedule configurations on Shakespeare-char, including follow-up high-threshold variants. Inside the card is a preview bar chart with several vertical bars shaded from greenish teal to light blue. On the far right side of the canvas is another black node labeled `Attention Sink Hypothe...`, implying a separate connected branch or neighboring graph. The interface also includes small icons in the top-right and a large circular `+` button near the bottom-right corner.
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
### Image Description
|
|
233
|
+
|
|
234
|
+
```text
|
|
235
|
+
A dark-mode chat screenshot rather than a scientific plot. The interface shows previous conversation sections separated by thin horizontal dividers and labels like `4 previous messages` and `1 previous message`. The visible assistant text says budget approval is required before MCP can allocate compute, asks the user to approve a Flywheel compute budget with a suggested cap of `$5`, and includes a blue link labeled `Approve Flywheel compute budget`. To the right, a rounded dark chat bubble reads `go with a 10$`. Lower in the screenshot, another message asks the user to approve an updated `$10` budget request and shows another blue link labeled `Approve $10 Flywheel compute budget`. A second rounded user bubble near the bottom-right says `good`. The whole image uses a black background with white text and muted gray separators.
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
---
|
|
239
|
+
|
|
240
|
+
### Image Description
|
|
241
|
+
|
|
242
|
+
```text
|
|
243
|
+
A square, dark fantasy avatar showing the head and upper chest of a shadowy armored figure. The armor is black-blue with sharp ridges and an ominous, icy sheen, and two bright cyan-blue eyes glow from beneath the helmet. The overall palette is cold and spectral, giving the image a lich-like, menacing look.
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
## [tensorqt](https://x.com/tensorqt) · [@tensorqt](https://x.com/tensorqt) · [12 Mar](https://x.com/tensorqt/status/2032198847376630125)
|
|
247
|
+
|
|
248
|
+
i won't spoil for you how this ends. because this will soon be a public graph in Flywheel. In Flywheel, you can share your graphs with your co-authors and even the public, and anyone can contribute their idea, reproduce the experiment or show that it was all luck
|
|
249
|
+
|
|
250
|
+
### Likely Flywheel MCP tools for this step
|
|
251
|
+
|
|
252
|
+
- `mcp__flywheel__flywheel_set_node_access_policy` to share the graph with co-authors or make it public.
|
|
253
|
+
- `mcp__flywheel__flywheel_bulk_set_node_access_policy` to apply the same policy across many branches.
|
|
254
|
+
- `mcp__flywheel__flywheel_get_node_access_policy` to verify that the sharing settings are correct.
|
|
255
|
+
- `mcp__flywheel__flywheel_export_summary` or `mcp__flywheel__flywheel_export_subgraph` to package the graph for outside review or reuse.
|