Repository navigation
desktop: run local Intelligence on OpenBot's engine, on a rootful Podman machine - #862
Merged
dustywusty merged 2 commits intoOct 29, 2026
Conversation
dustywusty
force-pushed
the
dustywusty/desktop-engine-choice
branch
from
October 29, 2026 04:07
6f204a8 to
dc0f193
Compare
dustywusty
marked this pull request as ready for review
October 29, 2026 04:19
dustywusty
requested review from
MikeRyanDev,
davidmckayv,
guidovizoso,
mxmzb and
tylerslaton
as code owners
October 29, 2026 04:19
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
dustywusty
force-pushed
the
dustywusty/desktop-runs-images
branch
from
October 29, 2026 06:38
d5335c5 to
621a416
Compare
Base automatically changed from
dustywusty/desktop-runs-images
to
dustywusty/local-eval-on-upstream
October 29, 2026 07:03
…man machine Which engine OpenBot uses is main's (#831): Docker if it answers, Docker Desktop if it has run before, otherwise Podman, saved with the installation. This commit no longer changes that choice. Local Intelligence's k3d needs rootful Podman (CopilotKit/Intelligence#2147), so the machine OpenBot creates is `--rootful`, and OpenBot addresses it through its `<name>-root` connection, the rootful engine, both for its own machine and for a running machine it adopts. On a rootful Windows machine the host-gateway setting goes to the system configuration. An existing rootless machine is never switched; local Intelligence setup and start decline there instead, with a `rootless-podman` failure whose row names `podman machine set --rootful`. Every Intelligence CLI process gets COPILOTKIT_LOCAL_ENGINE for the engine OpenBot runs on, recorded when the engine is ready (also where Docker answers right after the install step) and when Start pins it; before either, the installation's saved engine. For a Podman machine it also gets CONTAINER_HOST and DOCKER_HOST naming the machine's forwarded API, drops an inherited DOCKER_CONTEXT, and has Podman's directory on PATH. While Podman installs, the step row names the password prompt macOS or Linux raises. The window's runtime row no longer says Docker Desktop.
dustywusty
force-pushed
the
dustywusty/desktop-engine-choice
branch
from
October 29, 2026 07:06
a943a7b to
997f04a
Compare
A rootful Podman machine has two engines with separate storage: `<name>` reaches the rootless one and `<name>-root` the rootful one. Releases up to 0.2.0 reached every machine by its bare name, so an OpenBot that adopted a rootful machine, or whose own machine was switched to rootful since, has its database in the rootless storage. Addressing a rootful machine by `<name>-root` opened that OpenBot on an empty database. Now a rootful machine keeps its bare connection when OpenBot's `postgres-data` volume is there and not in the rootful storage, both for a running machine OpenBot adopts and for its own. Local Intelligence still runs on the machine's rootful engine, through the API the machine forwards, when OpenBot stays in the rootless storage of the same machine: one VM, and the only engine there that Intelligence runs on. That choice is now explicit in `CliEngine::of_with` and has a test. Following the window's `podman machine set --rootful` advice therefore no longer costs the person their OpenBot.
dustywusty
merged commit Oct 29, 2026
046326e
into
dustywusty/local-eval-on-upstream
25 checks passed
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.
Local Intelligence runs on the same container engine as OpenBot, including the Podman machine OpenBot installs on a computer with no engine. Merges into #832's branch (
dustywusty/local-eval-on-upstream), the local Intelligence feature.Needs a CLI release with CopilotKit/Intelligence#2147, which teaches local Intelligence to run on rootful Podman. Until then, the CLI refuses Podman.
Which engine OpenBot uses
Not changed here. It comes from
main(#831): Docker if it answers; Docker Desktop if it has run before; otherwise Podman. The engine is saved with the installation and used on every later start. An earlier version of this PR had its own engine choice; that is gone.What changes
acquire.rs,engine.rs):podman machine init --rootful, because local Intelligence's k3d needs rootful.<name>-root). On the bare name, its containers would land in the rootless engine, and the supervisor's Docker socket mount would fail.postgres-datavolume is in the rootless storage and not the rootful one, OpenBot keeps the bare connection. Releases up to 0.2.0 reached every machine by its bare name, so this keeps those installs on their data.Failure::RootlessPodman). Following that advice no longer hides OpenBot's data, because of the point above.local_eval.rs):COPILOTKIT_LOCAL_ENGINE=docker|podman, matching OpenBot's engine.CONTAINER_HOST/DOCKER_HOSTfor the machine's API socket (Unix socket or named pipe), drops any inheritedDOCKER_CONTEXT, and has Podman on itsPATH.localReadiness.ts) no longer says "Docker Desktop".Verification
desktop/src-tauri:cargo fmt --checkandcargo clippy --all-targets -- -D warningsare clean.cargo test --lib --binsand therecorder_hosttests pass.desktop:tscand Biome are clean, andbun testpasses.Not verified: needs a live run
.openbot/model-oauth.json(the server runs as uid 1001; whether Podman's file sharing on macOS, or WSL's on Windows, lets it read the person's 0600 file is untested);host.docker.internal;COPILOTKIT_LOCAL_ENGINE=docker.local setupstarting before the engine is ready.