I have a rough idea for an OSX desktop application...
# proj-agent-canvas
w
I have a rough idea for an OSX desktop application • Packaged as an electron app • Sandboxing ◦ We can't use docker--that'd be a really heavy requirement, and we can't package it into the app ◦ Instead we can use an OSX-native sandbox: Seatbelt ◦ I have a draft PR to support this here: https://github.com/OpenHands/software-agent-sdk/pull/3186
q
If I recall sandbox exec was deprecated a while back, not sure if that poses an issue and the electron app wouldn't be available for windows?
w
we'd have to figure out a windows sandboxing strategy
q
https://developers.openai.com/codex/concepts/sandboxing codex seems to use a native windows sandbox as well
w
would be great to investigate what other local agent apps are doing for sandboxes
👍 1
doing some research w/ claude now
acknowledged 1
Screenshot 2026-05-11 at 10.51.47 AM.png
👀 1
q
If I recall OpenAI also has a desktop app in addition to the CLI, does that use the same stuff as its CLI?
c
I was hoping that we can switch back to run all conversations locally by default (instead of docker). We can by default have confirmation mode - similar to our CLI (default would be approve every action, you can switch it to "llm-approve" to vibe approve things). Then implement something similar to https://github.com/OpenHands/agent-canvas/issues/233, that allow the user to click a few button in the UI to configure a sandboxed backend (either locally with docker, or remotely on VM) with the help of the local agent That way, you don't really need to bundle docker to have a good enough experience 🙂 WDYT?
w
You can't run automations with confirmation mode
We need some kind of sandboxing mechanism, but I agree we should do better than docker
c
> You can't run automations with confirmation mode hmm, maybe having the user confirms it would be good? I'd personally actually want to run automation locally w/ always-approve, since it'd have access to my local environments & credentials, and i'm fine leaving agent working that way..
In another occasion, i could have agent-canvas running on a already sandboxed VM, so doing this is actually ok
I do hope the default path is dockerless, otherwise we are just walking through the OpenHands GUI again lolsob
w
I'm willing to be wrong on this one but having an agent running unsandboxed people's laptops seems....dangerous 😅
c
i mean, that's a lot of folks are doing this claude-code/codex/openclaw today (I know i do that lolsob ) We can certainly put a lot of warnings like
--dangerously-skip-permission
, but i do hope it is by default sandboxless just to reduce the initial friction
^and that's true for our CLI too
one main gap i'd like agent-canvas to fill is for it to replace all my CLIs usages.. and by default sandboxing everything, it won't really do that for me
Hermes web UI looks like a serious competitor for agent-canvas, they are sandboxed & you can launch them with one line
docker run
https://github.com/nesquena/hermes-webui/tree/master So how do you feel about: 1. having the
npm run dev
by default run everything locally w/ confirmations & show explicit warnings that people have to acknolwedge before they run automation 2. and a parallel
docker run
command that will run
npm run dev
inside the container so everything is sandboxed, similar to this hermes web ui?
and the claim that you can run "claude code / codex" with agent-canvas typically comes w/ the cost of configuring these in the sandbox, if we by default run everything locally - it would simplify the setup of all these ACP agent as well and provide quicker time to value
hmm or actually, we can let the user select this in the onboarding, what do you feel about this: Select the agent servers you want to launch 1. Locally unsandboxed - can seemlessly connect to your local environment, programs, etc - BUT very risky, especially if you are running automation, use with case 2. Locally sandboxed - requires you to get docker running first, but more secure. And you can select ONE, or BOTH - since we do support flexible amount of backends
q
If we use OS native sandboxing, would we have isolation + access to local credentials? imho secure by default + fewer setup steps would be ideal for ICP funneling through local installs
c
If we use OS native sandboxing, would we have isolation + access to local credentials?
I do think we will need to spend more time to get that working (claude code & codex does that), but it should be doable
👍 1
nevertheless, even with sandboxing, agents like CC/Codex still requires you to confirm stuff, which i think might be a good initial design we could follow as long as we make the option to: 1. auto-approve 2. sandbox agents very explicit
👍 1
q
Out of curiosity, are we still having a bunch of issues with auto approve where the llm fails to provide security risk? IIRC there were instances of this with claude opus lately
w
FWIW we do have
npm run dev:dangerously-dockerless
! this is how I run on my VM
I think
npm run dev
should be sandboxed though. I'd be open to making it a "confirmation mode" launch but everyone hates confirmation mode
c
> FWIW we do have
npm run dev:dangerously-dockerless
! this is how I run on my VM Yeah, but that isn't super obvious to first-time user -- typical way ppl discover
dangrously-skip-permission
in claude code is that they first try it out without it, then get annoyed by the confirmation mode, then trying to figure ways to disable that If we do require
docker
for
npm run dev
, then a possible user scenario would be: 1. run
npm run dev
2. ok docker is not working, i give up, not gonna try this any more i believe this is what is happening a lot in our OpenHands GUI today, and i think we should avoid letting it happen again If we make it configurable AFTER you launched
npm run dev
(by default bring up a local agent-server w/ comnfirmation mode): 1. run
npm run dev
2. it is already working - cool! 3. huh it asks me for confirmation, i'll a. dangrously-skip-permission by click a button / configure my settings - but i accepted the risk b. OR if i'm feeling adventuroulsy, i'd spend some time setup docker so it runs in sandbox
w
I do really like the idea of deciding after startup! That would also let us ask the user to pick PROJECT_DIR via the UI instead of making them do it on the command line
but I'd want it to start docker for me, not make me reinstall
which I don't think is particularly possible without a backend running
we could make `npm run dev`: • check for docker ◦ if installed, prompt for PROJECTS_DIR ◦ if not installed, prompt for DANGEROUSLY_DOCKERLESS
c
hmm, would it make it possible to do the selection on
npm run dev
? eg let user select in CLI if they want to launch docker vs. local vs BOTH: Run
npm run dev
• check for docker ◦ if installed, give two choices (you can select both) ▪︎ local docker ▪︎ local unsandboxed ◦ if not installed, prompt for DANGEROUSLY_DOCKERLESS But i guess that's not too much different from letting the user pick directly in the UI right? I think it comes down to this question: "is it possible for UI to show up a settings before any server is running" 🤔
w
I think we can easily let them choose during the setup script!
we could probably do something funky, where the script doesn't exit right away, it just says "go to localhost:8000 to complete your setup"
and maybe it's....running a tiny backend? not sure how the frontend would call back out to setup script to start a backend
c
yeah, i bet there are ways to support this. @nutritious-balloon-65098 let's first summarize this dicussion thread and write an issue in OpenHands/agent-canvas first
n
I'm on it! Xingyao Wang can track my progress here.
Summary The user asked me to summarize a Slack discussion thread about an OSX desktop application idea and write it up as a GitHub issue in
OpenHands/agent-canvas
. Here's what was done: ✅ Request fully addressed 1. ✅ Summarized the discussion thread — Distilled the multi-person Slack conversation into a structured issue covering the core proposal, motivation, UX flow, sandboxing strategy, and open questions. 2. ✅ Created a GitHub issue in OpenHands/agent-canvas — Issue #348: "Desktop app experience: zero-friction startup with configurable sandboxing" Changes made • No code changes — this was purely an issue-creation task. A single GitHub API call was made to create the issue. Nothing to commit or push. Issue content highlights The issue captures all key discussion points: • Core UX insight: let users decide sandboxing/permissions after startup, not before (mirrors Claude Code / Codex pattern) • Sandboxing: Docker is too heavy for desktop → use OSX-native Seatbelt (linked SDK PR #3186) • Proposed startup flow:
npm run dev
works immediately, defaults to confirmation mode, users configure via UI • Security modes table: four tiers from auto-approve to Docker sandbox • Open questions: UI before backend, frontend↔️script communication, LLM security_risk reliability, Electron shell requirements