CLI Reference

Command reference generated from the Flywheel Usage spec.

Inspect, organize, and operate Flywheel research graphs from the command line.

Command catalog

This reference is generated from flywheel --usage-spec and contains 201 command pages.

Setup Commands

CommandSummary
flywheel completionGenerate a shell completion script from the public Flywheel Usage spec
flywheel completion bashGenerate a bash shell completion script
flywheel completion fishGenerate a fish shell completion script
flywheel completion installInstall a generated shell completion script to a user-level location
flywheel completion nuGenerate a nu shell completion script
flywheel completion nushellGenerate a nushell shell completion script
flywheel completion powershellGenerate a powershell shell completion script
flywheel completion uninstallRemove Flywheel-managed shell completion files and profile blocks
flywheel completion zshGenerate a zsh shell completion script
flywheel helpShow Flywheel CLI help.
flywheel setupConfigure host skills or MCP; CLI mode also writes user TOML.
flywheel uninstallRemove Flywheel MCP entries and bundled skills from selected hosts
flywheel versionPrint the Flywheel CLI version.

Auth Commands

CommandSummary
flywheel auth:credentials:clearRemove a locally stored API key for a profile without revoking it.
flywheel auth:credentials:setStore an API key in the local credential file for a profile. Reads the key from stdin.
flywheel auth:loginBootstrap API key auth through RFC 8628 device authorization flow.
flywheel auth:statusShow authentication status for the current client context.

Profile Commands

CommandSummary
flywheel profile:listList built-in and custom profiles from the unified user TOML config.
flywheel profile:setCreate or update a custom profile in the unified user TOML config (never stores plaintext keys).
flywheel profile:showShow a built-in or custom profile without exposing its credential.
flywheel profile:unsetDelete a custom profile from the unified user TOML config.

Local Repository

CommandSummary
flywheel repo:artifact:attachStage an artifact attachment from --metadata-file or the inline --name/--media-type/--notes/--tags flags.
flywheel repo:artifact:detachStage detaching an artifact from its node or edge.
flywheel repo:artifact:downloadDownload current-head artifact bytes, fetching and caching a remote-only object when needed; requires --out or --checkout-only.
flywheel repo:artifact:getRead one artifact and its references. Defaults to committed local state; use --staged to inspect saved pending work.
flywheel repo:artifact:set-metadataStage a replacement for exactly one artifact metadata field from --metadata-file or one inline flag.
flywheel repo:backupCreate and verify a local repository backup without contacting a service, then record its completion for this checkout. If recording fails, the verified archive remains restorable and the command reports its destination and digest.
flywheel repo:cloneClone a hosted projection v4 repository over the network, including boundary-parent and cross-repository tag-scope identities, into a new local directory.
flywheel repo:commitCommit the exact current staging digest with its immutable author principal.
flywheel repo:conflicts:listList rebase conflicts with each side's changes and values and the resolution choices that work for each, at most 256 per page.
flywheel repo:conflicts:resolveResolve one structured conflict.
flywheel repo:conflicts:showShow one rebase conflict: each side's changes and values, the base value when kept, and its usable choices.
flywheel repo:containment:assignStage placing a node inside a container node.
flywheel repo:containment:getRead active containment for one child. Defaults to committed local state; use --staged to inspect saved pending work.
flywheel repo:containment:listList active contained nodes. Defaults to committed local state; use --staged to inspect saved pending work.
flywheel repo:containment:removeStage the removal of a containment relation.
flywheel repo:diffCompare committed local history or the complete pending staged result without contacting a service.
flywheel repo:doctorReport local status (including last_backup), object availability disagreements and interrupted push, pull or purge operations. Confirmed availability repair changes records only and refuses pending work.
flywheel repo:edge-artifact:listList edge artifact references. Defaults to committed local state; use --staged to inspect saved pending work.
flywheel repo:edge:addStage an edge between distinct descendants of a graph in this repository.
flywheel repo:edge:getRead one semantic edge with its endpoints' lifecycle states. Defaults to committed local state; use --staged to inspect saved pending work.
flywheel repo:edge:listList semantic edges in one graph with each endpoint's lifecycle state. Defaults to committed local state; use --staged to inspect saved pending work.
flywheel repo:edge:removeStage the removal of a semantic edge.
flywheel repo:edge:set-contentStage new content for a semantic edge.
flywheel repo:gcDelete local artifact objects that no commit, staging entry, or backup still references.
flywheel repo:initInitialize or adopt the selected local repository at a directory; this command does not choose a hosted default workspace or fork.
flywheel repo:lineage:addStage a parent-child lineage relation.
flywheel repo:lineage:listList lineage relations with parent_repository_id and boundary status. Defaults to committed local state; use --staged to inspect saved pending work.
flywheel repo:lineage:removeStage the removal of a lineage relation.
flywheel repo:logList commits reachable from the local head, newest first.
flywheel repo:node-artifact:listList node artifact references. Defaults to committed local state; use --staged to inspect saved pending work.
flywheel repo:node-tag:assignStage assigning a tag to a node.
flywheel repo:node-tag:removeStage removing a tag from a node.
flywheel repo:node:branchStage one branched node in the selected local repository and one lineage relation copying the source's title.
flywheel repo:node:createStage a root node in the selected local repository from --title or the full six-field JSON values file; this command never creates or selects another repository.
flywheel repo:node:getRead one node and its comparison digests. Defaults to committed local state; use --staged to inspect saved pending work.
flywheel repo:node:listDiscover all local nodes and graph containers, including empty ones. Defaults to committed state; use --staged to inspect pending work.
flywheel repo:node:mergeStage one merged node in the selected local repository and one lineage relation from each supplied source, in argument order.
flywheel repo:node:restoreStage the restoration of a tombstoned node; retained semantic edges never block it.
flywheel repo:node:setStage one UTF-8 text value for a node field in the selected local repository.
flywheel repo:node:tombstoneStage the reversible removal of a node (a later restore undoes it); its history, semantic edges, containment, tags, and attachments stay in the repository. Lineage links must be removed first.
flywheel repo:pullFetch and atomically apply hosted history over the network, preserving boundary references and removing departed nodes while reporting each target_repository_id.
flywheel repo:purgePermanently remove one pushed, tombstoned node that nothing references from both the hosted repository and local history (irreversible; requires --confirm).
flywheel repo:pushSend committed local history to the hosted repository over the network (use --create-remote for the first publication).
flywheel repo:rebase:abortAbort one exact rebase, keeping every local commit and pending edit, including ones made while it was open.
flywheel repo:rebase:continueContinue one exact rebase: replay every local commit, including ones made while it was open, and keep pending edits that still apply. If later commits change or reopen conflicts, exit 0 with state open means replay is still paused; state continued means replay finished. open_conflict_count counts the conflicts still open; conflict_count counts every recorded conflict, including ones whose earlier choice was kept.
flywheel repo:recover-departedClone the repository that now holds a departed node and replay the selected source checkout's unpublished commits there. If interrupted, check the source checkout with repo:status: if its departure rebase is still paused, delete the destination checkout and run recovery again, and never reuse or push it; if the rebase is finished, keep the destination checkout, which holds the recovered work.
flywheel repo:restoreRestore a verified backup archive into an empty directory.
flywheel repo:revertCreate a new local inverse commit for a target's supported reversible changes; node/edge latest-value fields are skipped, while a target containing an edge removal cannot be reverted because its prior content bytes are unavailable.
flywheel repo:staging:discardDiscard all saved pending operations and associated values from only the selected local repository. Uncommitted work is not recoverable through graph history. Optional repo:backup preserves the batch, but restoring it does not repair invalid staging. No backup is required or created automatically; no export or network transfer occurs. Discard is never implicit in reads, edits, validation, failed commit, pull, push, revert, startup, migration, or upgrade.
flywheel repo:statusShow local repository status, including the last verified user-requested backup for this checkout (last_backup), interrupted push, pull or purge (interrupted_sync), and an unpublished hosted remote (stranded_remote). A null last_backup means none recorded here, not no remote backups. Push and pull refuse while a rebase is paused or work is staged; interrupted_sync_refused then names why. Before rerunning an interrupted push, pull or purge, continue or abort the paused rebase, then commit or discard the staged work. Rerun the interrupted repo:push with the same --idempotency-key. If the server already accepted that push, the rerun records it: with unchanged local history the server replays the recorded outcome for that key, or nothing is sent if a repo:pull already brought that push in; after later commits or a repo:pull's rebase, the rerun publishes nothing new and reports already_accepted, and the commits still unpublished need a plain repo:push. Otherwise the rerun is an ordinary push. Rerun an interrupted purge with its node_id, --confirm and the same --idempotency-key. For an interrupted pull, run repo:pull again with any key; stranded_remote names the existing repo:push recovery flow.
flywheel repo:tag:defineStage a new tag definition under a scope node.
flywheel repo:tag:listList tags with each holder's node_id and holder_digest. Defaults to committed local state; use --staged to inspect saved pending work.
flywheel repo:tag:retireStage the retirement of a tag definition.
flywheel repo:tag:updateStage a changed tag definition.
flywheel repo:unpublished:dropDrop operations from commits not yet pushed and replay the rest as new local commits. Published commits never change. Find operation IDs with repo:log. A never-published repository works offline; otherwise the hosted head must still match the remote-tracking head. Later removals of a dropped lineage add absent from the base are also dropped and reported; other dependent failures refuse without changing local state.
flywheel uiOpen the local web UI for this folder's repository in your browser. Serves it on 127.0.0.1:8484, or the next free port, until Ctrl-C; reuses one already running. No sign-in needed.

Hosted Repository

CommandSummary
flywheel hosted:artifact:attachCommit an artifact attachment from --metadata-file or the inline --name/--media-type/--notes/--tags flags.
flywheel hosted:artifact:detachCommit detaching an artifact from its node or edge.
flywheel hosted:artifact:getFetch one artifact metadata record.
flywheel hosted:artifact:listList artifacts for a node.
flywheel hosted:artifact:set-metadataCommit a replacement for exactly one artifact metadata field from --metadata-file or one inline flag.
flywheel hosted:containment:assignCommit placing a node inside a container node.
flywheel hosted:containment:removeCommit the removal of a containment relation.
flywheel hosted:edge:addCommit an edge between distinct descendants of a graph in this repository.
flywheel hosted:edge:removeCommit the removal of a semantic edge.
flywheel hosted:edge:set-contentCommit new content for a semantic edge.
flywheel hosted:lineage:addCommit a parent-child lineage relation.
flywheel hosted:lineage:listPage direct visible parents or children for one node.
flywheel hosted:lineage:removeCommit the removal of a lineage relation.
flywheel hosted:node-tag:assignCommit assigning a tag to a node.
flywheel hosted:node-tag:removeCommit removing a tag from a node.
flywheel hosted:node:branchCreate one branched node and one lineage relation from the source, copying the source's title. Without --repository-id the server places it in the source's repository when you hold a write role there, otherwise in your fork of that repository, where the node starts private unless you have added members to that fork. With --repository-id, commit it in that hosted repository, which must hold the source.
flywheel hosted:node:createCreate a node from --title or the full six-field JSON values file. Without --repository-id the server places it: under --parent, in the parent's repository when you hold a write role there, otherwise in your fork of that repository, where the node starts private unless you have added members to that fork; with no --parent, as a root in your default workspace. With --repository-id, commit a root node in that hosted repository.
flywheel hosted:node:getFetch one node by identifier. Use relationship paging commands for complete direct-neighbor traversal.
flywheel hosted:node:listList nodes with optional filters.
flywheel hosted:node:mergeCommit one merged node in this hosted repository and one lineage relation from each supplied source, in argument order.
flywheel hosted:node:restoreCommit the restoration of a tombstoned node; retained semantic edges never block it.
flywheel hosted:node:setCommit one UTF-8 text value for a node field in this hosted repository.
flywheel hosted:node:tombstoneCommit the reversible removal of a node (a later restore undoes it); its history, semantic edges, containment, tags, and attachments stay in the repository. Lineage links must be removed first.
flywheel hosted:repository:headShow the published head of a hosted repository.
flywheel hosted:repository:listList hosted repositories with optional names, your role, owner, and kind (default workspace, fork, or other).
flywheel hosted:repository:member:removeRemove a collaborator from a hosted repository.
flywheel hosted:repository:member:setAdd a collaborator or change their role.
flywheel hosted:repository:membersList the collaborators of a hosted repository with their roles (owner or admin only).
flywheel hosted:repository:retirePermanently retire a hosted repository (irreversible; the ID can never be reused): all nodes of the repository stop being readable and cannot be restored. Local clones keep working offline but can no longer sync; publishing the graph again needs repo:init in a new directory plus a re-import under a new identity.
flywheel hosted:repository:transferTransfer ownership of a hosted repository to another member; you remain admin.
flywheel hosted:tag:defineCommit a new tag definition under a scope node.
flywheel hosted:tag:retireCommit the retirement of a tag definition.
flywheel hosted:tag:updateCommit a changed tag definition.

Nodes & Graph Commands

CommandSummary
flywheel campaign:snapshotResolve campaign root snapshot for a node.
flywheel graph:getRead the graph projection for navigation and topology workflows.
flywheel nodes:filesList files attached to a node.
flywheel nodes:render:ancestryRender ancestry (roots-ward lineage) for a node.
flywheel nodes:render:summaryRender a compact summary of a node subtree.
flywheel nodes:render:treeRender a bounded tree projection for a node.
flywheel nodes:resolve-slugResolve a slug to a node ID.
flywheel nodes:sharing:getGet sharing (access policy) for a node.
flywheel nodes:sharing:setReplace sharing (access policy) for a node.
flywheel nodes:sharing:set-bulkApply one sharing policy to up to 1000 nodes, all or nothing.
flywheel nodes:sharing:summariesRead access summaries for multiple nodes in one batch.
flywheel nodes:stage:lease:acquireAcquire an edit lease for an existing node.
flywheel nodes:stage:lease:heartbeatHeartbeat an active node stage lease.
flywheel nodes:stage:lease:releaseRelease a node stage lease.
flywheel remote-artifacts:refreshForce refresh a public HTTPS JSON Remote Artifact for a node.
flywheel remote-artifacts:resolveResolve a public HTTPS JSON Remote Artifact for a node.

Artifacts & Files Commands

CommandSummary
flywheel files:listList all your files across nodes.

Hooks Commands

CommandSummary
flywheel hooks:createCreate a new hook on an owner node.
flywheel hooks:deleteDelete a hook from an owner node.
flywheel hooks:listList hooks configured for an owner node.
flywheel hooks:runs:listList hook runs for an owner node.
flywheel hooks:secrets:createCreate a hook secret.
flywheel hooks:secrets:deleteDelete one hook secret.
flywheel hooks:secrets:listList hook secret metadata for an owner node.
flywheel hooks:secrets:updateRotate one hook secret value.
flywheel hooks:set-enabledEnable or disable an existing hook.
flywheel hooks:updateUpdate mutable hook fields for an existing hook.

Compute & Executions Commands

CommandSummary
flywheel compute:acquireAcquire managed compute for a node; with --wait, wait for usable SSH connection material.
flywheel compute:budgetsList budget grants visible for a node context.
flywheel compute:connectionGet SSH connection material for a usable lease.
flywheel compute:fundingRead grant-scoped funding context before compute acquire.
flywheel compute:optionsList allowed compute catalog options for a node.
flywheel compute:releaseRelease one active compute lease (async; use --wait to block).
flywheel compute:release-allRelease all active leases in current scope (pass --force for account scope).
flywheel compute:statusReturn compute lease status.
flywheel executions:launchStart an execution for a node.
flywheel executions:listList executions for a node.
flywheel executions:terminateStop an execution for a node.

Approvals & Budgets Commands

CommandSummary
flywheel approval-sessions:expireExpire an approval session.
flywheel approval-sessions:heartbeatCreate or refresh a compute approval session.
flywheel approval-sessions:listList approval sessions.
flywheel campaign-budgets:createCreate a campaign compute budget grant.
flywheel campaign-budgets:listList campaign compute budgets for a root.
flywheel campaign-budgets:revokeRevoke a campaign budget grant.
flywheel campaign-budgets:updateUpdate a campaign budget.

Export & Import Commands

CommandSummary
flywheel export:subgraphExport a subgraph snapshot.
flywheel export:summaryGenerate a markdown summary export.
flywheel export:summary:pdfRender summary as PDF; requires --out.
flywheel export:summary:render-pdfRender caller-provided markdown as PDF; requires --out.
flywheel export:summary:streamStream summary generation as NDJSON events.
flywheel import:subgraphImport graph JSON as new nodes in one commit, reporting the repository and its visibility.

Updates & Resources Commands

CommandSummary
flywheel blobs:getDownload a raw blob by storage key.
flywheel machines:listList your managed compute leases.
flywheel updates:hideHide a specific announcement.
flywheel updates:hide-all-activeHide all currently active announcements.
flywheel updates:listList in-app announcements relevant to your account.
flywheel updates:unhideRestore a previously hidden announcement.

Account & Credits Commands

CommandSummary
flywheel account:detachDetach a linked alias account (requires confirm="DETACH"). Requires a browser session; API-key callers receive session_auth_required with /app?settings=user.
flywheel account:emails:addAdd an email alias to your account. Requires a browser session; API-key callers receive session_auth_required with /app?settings=user.
flywheel account:emails:removeRemove an email alias from your account. Requires a browser session; API-key callers receive session_auth_required with /app?settings=user.
flywheel account:emails:set-primarySet your primary email address. Requires a browser session; API-key callers receive session_auth_required with /app?settings=user.
flywheel account:getView account snapshot and linked identities.
flywheel account:mergeExecute an account merge (requires confirm="MERGE"). Requires a browser session; API-key callers receive session_auth_required with /app?settings=user.
flywheel account:merge:previewPreview what an account merge will do. Requires a browser session; API-key callers receive session_auth_required with /app?settings=user.
flywheel account:merge:proofMint a merge proof token from a source session token. Requires a browser session; API-key callers receive session_auth_required with /app?settings=user.
flywheel credits:balanceView credit balance and totals.
flywheel credits:billing-portalOpen the Stripe billing portal for the current user and return browser_flow_required JSON with url, opened, and next_action.
flywheel credits:purchaseCreate a Stripe checkout session for a one-time purchase and return browser_flow_required JSON with url, opened, and next_action.
flywheel credits:referralView your referral code and status.
flywheel credits:referral:claimClaim referral rewards using a code.
flywheel credits:subscribeCreate a Stripe checkout session for a subscription and return browser_flow_required JSON with url, opened, and next_action.
flywheel credits:subscriptionView your subscription status.
flywheel credits:transactionsView paginated credit transactions.
flywheel credits:usageFeature-based usage breakdown over a window.

Integrations Commands

CommandSummary
flywheel github:disconnectDisconnect GitHub from your account.
flywheel github:linkStart the GitHub App install/link browser flow.
flywheel github:refresh-reposRefresh the list of accessible repositories.
flywheel github:statusCheck GitHub connection status.
flywheel integrations:huggingface:removeRemove your Hugging Face credential.
flywheel integrations:huggingface:setStore a Hugging Face access token.
flywheel integrations:statusCheck integration connection status (W&B, Hugging Face).
flywheel integrations:wandb:removeRemove your W&B credential.
flywheel integrations:wandb:setStore a Weights & Biases API key.

API Keys Commands

CommandSummary
flywheel api-keys:createCreate a new API key and return the raw material once.
flywheel api-keys:deleteDelete an API key (refuses to delete the active one unless --allow-self).
flywheel api-keys:listList your API keys.
flywheel api-keys:rotateRotate an API key (refuses to rotate the active one unless --allow-self).

Other Commands

CommandSummary
flywheel compute-grants:listList compute grants available to the user.
flywheel compute-grants:request-approvalRequest compute-grant approval. POSTs to the consolidated server endpoint which owns the heartbeat/grants/credits/campaign-budgets/status fan-out.
flywheel feedback:createSubmit bounded feedback to the Flywheel team.
flywheel updateUpdate the local Flywheel CLI package and setup artifacts