Repository navigation
Add acpbox to bobshell image, preconfigured to run bob acp - #56
Merged
Merged
Conversation
Install acpbox (OpenAI-compatible HTTP gateway to the Agent Client Protocol) from PyPI on UBI Python 3.12, and preconfigure it to spawn one 'bob acp --trust' process per gateway worker with sessions rooted at the pre-trusted /workspace. Expose TCP 8080 (acpbox's default OpenAI-compatible API port). pip is removed after install to keep the runtime image lean; ACPBOX_VERSION build arg pins the package. Notes: - ACPBOX_ACP_COMMAND uses single quotes because Docker's ENV parser strips inner double quotes, corrupting the JSON array. - 'bob acp' rejects untrusted workspaces and does not read trustedFolders.json, so --trust is required headless; acpbox pins the session cwd, so only /workspace is trusted in practice. Signed-off-by: Jonathan Springer <jps@s390x.com>
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
Adds the acpbox executable to the
infra/bobshellimage: an OpenAI-compatible HTTP gateway to the Agent Client Protocol, installed from PyPI on UBI 10's Python 3.12. The image is preconfigured so acpbox spawns onebob acp --trustprocess per gateway worker, exposing Bob Shell behind an OpenAI-style/v1API on TCP 8080.Changes
Containerfilemicrodnf install python3 python3-pip→pip3 install acpbox(system-wide,/usr/local/bin/acpbox) → pip removed + dnf cache cleaned to keep the runtime image leanARG ACPBOX_VERSIONpin, mirroring the existingBOB_VERSIONpatternENV ACPBOX_ACP_COMMAND='["bob","acp","--trust"]'andACPBOX_ACP_WORKSPACE=/workspace(acpbox's./workspacedefault would wrongly resolve to/workspace/workspacehere)EXPOSE 8080documenting the OpenAI-compatible API portREADME.md— acpbox bullet (incl.--trustrationale) andACPBOX_VERSIONpinning exampleGotchas found (documented in Containerfile comments)
ENV X=["bob","acp"]loses its inner double quotes to Docker's parser, producing invalid JSON that crashes acpbox at startup. Single quotes survive.bob acpignores~/.bob/trustedFolders.json(tested bothTRUST_PARENTandTRUST_FULL), so--trustis the only headless path. Blast radius stays/workspace: acpbox pins every session's cwd toACPBOX_ACP_WORKSPACE, and API clients cannot choose it.Verification (built and smoke-tested locally)
docker buildpasses, including in-buildcommand -v acpboxandpython3 -c "import acpbox.main"checksStarting ACP agent (one per worker): ['bob', 'acp', '--trust'], reachesApplication startup complete, serveshttp://0.0.0.0:8080GET /v1/modelscompletes the ACP handshake and session creation in/workspace(trust accepted), failing only onAuthentication required— expected withoutBOB_API_KEY, which the compose setup supplies via secretsbob chat/bob --versionpaths unchanged (2.0.6)