Providers and hosts: what runs, and where, as independent choices
A session now names a provider (what: driver kind, command, models) and optionally a host (where: an ssh target). Keeping them independent is what the real setup needs -- the backend runs where the phone can reach it, which isn't where the CLI is installed -- and it means any provider can be sent to any host rather than a machine being baked into one. The first provider is claude-cli, named for the CLI rather than bare "claude", which would suggest the credit-billed API. A fresh config is seeded with it so a new install has something to spawn and a worked example to edit; echo stays a built-in provider needing no config. ssh.rs builds the child process either way: locally, or `ssh -T` with BatchMode and keepalives, every argument single-quoted for the remote shell (a working directory that tries to close the quote and start a command is covered by a test), and `exec` so dropping the connection takes the CLI down instead of orphaning it. App: the spawn screen reads /providers and /hosts instead of hardcoded lists, so config changes need no rebuild. Chip rows are FlowRow, fixing the reported bug where a row of models that didn't fit wrapped *inside* each chip -- one letter of "haiku" per line -- rather than onto a second line. Verified: 29 tests, clippy clean; the same claude-cli provider run once locally and once over ssh, with the remote one visibly in a different environment; an unknown host name refused with the configured list; and the spawn screen on the emulator showing server-driven providers, hosts, and models that wrap. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017xn8nHw1tw1R6PtiY1eEtw
This commit is contained in:
1 parent
91bbc73ae5
commit
fff1fb49e8
12 files changed
+833
-170
No files matched your search
@@ -101,6 +101,15 @@ Established 2026-08-25, and it decides more than it looks like:
|
||||
network namespaces inside one machine and drives the server through it
|
||||
— a genuine handshake against 10.66.0.1 with pinned TLS, no router or
|
||||
phone involved. That's the way to verify the wg0-only posture.
|
||||
- **The `claude` CLI is installed in this VM only, not on the host.** So
|
||||
the backend reaches it the same way it would any other machine: a
|
||||
configured host, and a session that names it. For the host to ssh in,
|
||||
the VM needs an inbound port forward in its launch configuration
|
||||
(qemu `hostfwd`) — usermode networking has none by default.
|
||||
- **`config.json` is shared with the host too**, so it is the *production*
|
||||
config: don't leave test tokens or throwaway hosts in it. Point
|
||||
development at a scratch one instead:
|
||||
`--config /tmp/…/config.json --data-dir /tmp/…/sessions --port 8444`.
|
||||
|
||||
## Things that have bitten
|
||||
|
||||
|
||||
Reference in new issue
Block a user