Repository navigation
tui: run onctl claude on a VM and switch providers - #1216
Merged
Merged
Conversation
onctl's credentials are its own. Dropped every fallback to what boxctl saved on this machine: - the boxes token in ~/.boxctl/config.json (onctl login's file is the only one read now) - the Claude token in the boxctl-claude-oauth-token Keychain entry and ~/.boxctl/claude/oauth-token (and logout no longer deletes them) - the ssh key in ~/.boxctl/claude/id_ed25519 (onctl makes its own) - BOXCTL_GITHUB_TOKEN for --github store (ONCTL_GITHUB_TOKEN only) Paths on the box itself (/root/.boxctl/..., BOXCTL_GH_SOCKET) stay: the box image's helpers read them. Claude-Session: https://claude.ai/code/session_01SB788HixFrKbYGCxDRi8fX
The tui runs `onctl claude --box <vm>` as a child process, like ssh and create: a on the VM under the cursor, or :claude [vm] (the project's own box without a name). :provider [name] switches the cloud the way k9s's :ctx switches clusters: without a name a providers view lists them and enter picks one. The switch quits the tui and starts it again on the other provider, since a provider's client exits the process when its credentials are missing; a config that fails to load brings the tui back on the provider it had, with the reason. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011AG9gwAvNhBSqhahfzk28R
cdalar
enabled auto-merge (squash)
October 22, 2026 04:56
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #1216 +/- ##
==========================================
+ Coverage 45.24% 45.57% +0.33%
==========================================
Files 75 75
Lines 8735 8778 +43
==========================================
+ Hits 3952 4001 +49
+ Misses 4782 4777 -5
+ Partials 1 0 -1 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
a/:claude [vm]runsonctl claude --box <vm>from the tui as a child process, likesrunsonctl ssh. With no VM named,:claudeuses the project's own box (claude-<dir>), as the CLI does. The project is the directory the tui was started in.:provider [name]switches the cloud like k9s's:ctx. Without a name, a providers view lists them with the current one marked, and enter picks one.ONCTL_CLOUD, config and client redone asonctl -p name tuiwould). It isn't done in place because several provider clients callos.Exitwhen credentials are missing, which would leave the terminal on a half-torn alt screen with the log output discarded. A config that fails to load brings the tui back on the provider it had, flashing the reason.Test plan
go test ./cmd/andgolangci-lint run ./cmd/are clean:providercommand (unknown / current / other), providers view and enter, start flash, restore ofcloudProviderandONCTL_CLOUDafter a failed switch, claude child's exit handlingonctl tui,aon a VM attaches Claude;:provider hetznerrestarts on Hetzner🤖 Generated with Claude Code
https://claude.ai/code/session_011AG9gwAvNhBSqhahfzk28R