Replies: 1 comment
Update: CDE Is the Primary Workflow, Not a Deployment OptionAfter further design work (issue #95), the framing of this discussion needs correcting. The original proposal presented three deployment models as equals:
This is wrong. CDE is not "Model C" — it is the primary production workflow for the iterative demo loop. Why CDE Is CriticalThe core human judgment workflow is the demo loop: The human exercises judgment not in code review (the Divisor council handles that) but in seeing the working result and deciding if it meets their intent. In the local Podman workflow, this loop is painful:
Every iteration requires extract → compile → demo → feedback → re-enter. Context is lost between iterations. In the CDE workflow (Eclipse Che / Dev Spaces), the loop is tight:
No extraction. No recompilation. No context loss. The workspace persists across Updated ArchitectureTwo access paths to the same workspace:
Updated CLI LifecycleThe current Updated Deployment Model Priority
Design Decisions Since Original Discussion
Tracking
|
Uh oh!
There was an error while loading. Please reload this page.
Overview
Run OpenCode and the full Unbound Force toolchain (Dewey, Replicator, Gaze, uf) inside a Podman container for security through isolation. If an agent goes off the rails, the blast radius is contained to the container — the host repo stays untouched until changes are explicitly extracted.
Supports:
Problem
Today, AI agents run with full access to the host filesystem. A destructive command, a corrupted git history, or a runaway process affects the real project. There is no isolation boundary between the agent's workspace and the engineer's files.
Proposed Solution
1. Container Image (
quay.io/unbound-force/opencode-dev)Multi-arch OCI image (arm64 + amd64) containing the full toolchain:
ufOllama runs on the host — container connects via
DEWEY_EMBEDDING_ENDPOINT=http://host.containers.internal:11434. Keeps the image light and embeddings fast.Base image options:
quay.io/fedora/fedora:latestfor local Podman usequay.io/devfile/universal-developer-image:latestfor CDE/Dev Spaces (UDI already has Go, Node.js, Git)go install(no Homebrew/Linuxbrew in container)2.
uf sandboxCLI CommandOrchestrate the multi-step container workflow in a single command:
What
uf sandbox startdoes:opencode servehealth check (/global/health)opencode attach(or return URL if--detach)What
uf sandbox extractdoes:git format-patchinside containergit am)3. CDE / Eclipse Che / Dev Spaces Integration
Devfile 2.2.0 workspace definition:
Option A: UDI + postStart (no custom image needed)
postStartcommand installs UF tools viago install+curlOption B: Custom image in devfile (fast startup)
quay.io/unbound-force/opencode-devin devfile4. Deployment Models
Model A: Interactive Development
Engineer gets a shell with the full toolchain. Changes write to mounted volume.
Model B: Headless Server (Maximum Isolation)
Read-only source mount. Agent works on a copy. Changes extracted via git format-patch.
Model C: CDE / Dev Spaces
Eclipse Che workspace with devfile.yaml.
opencode serveas an endpoint. Connect via browser oropencode attachfrom host.5. Security Model
--memory 8g --cpus 4prevent runaway:Zrelabeling for MAC enforcement--network=nonefor workers6. Change Extraction (Configurable)
Git-based (default, maximum safety):
Agent commits inside container. Host extracts via
git format-patch. Human reviews before applying.Direct volume mount (convenience):
Read-write mount. Agent writes directly. Host reviews via
git diff.Configurable via
UF_SANDBOX_MODE=isolated|directoruf sandbox start --mode isolated.New Repo:
unbound-force/containerfileuf sandboxin the Meta RepoNew
internal/sandbox/package + Cobra command incmd/unbound-force/:Dependencies
uf initin containerOpen Questions
go test?uf sandboxsupport running multiple concurrent containers (different branches/tasks)?ufreleases,latest, ornightly?postStartcommands (using UDI, no custom image) or via a pre-built custom image extending UDI?Related
All reactions