PRD 0026: Agent Provider Templates #91

Merged
didericis merged 19 commits from prd-0026-agent-provider-templates into main 2026-05-28 20:04:41 -04:00
5 changed files with 5 additions and 10 deletions
Showing only changes of commit 8875d8cc17 - Show all commits
View File
+1 -6
View File
@@ -48,11 +48,6 @@ development history, Docker and smolmachines backends, dashboard and
remediation flows, and unit/integration tests covering exfiltration and remediation flows, and unit/integration tests covering exfiltration and
sandbox escape scenarios. sandbox escape scenarios.
Current status: personal/small-team security tool, not yet enterprise
fleet infrastructure. Next work: central policy and audit, stronger
container hardening, SBOM/vulnerability scanning, and team/RBAC
support.
## Security model ## Security model
didericis marked this conversation as resolved Outdated
Outdated
Review

remove this paragraph

remove this paragraph
Each agent runs in its own bottle: its own container, its own internal Each agent runs in its own bottle: its own container, its own internal
@@ -143,7 +138,7 @@ and MCP endpoints resolve without an agent-side change.
``` ```
- **agent image** — built from the provider template Dockerfile - **agent image** — built from the provider template Dockerfile
(`Dockerfile` for Claude, `Dockerfile.codex` for Codex, or (`Dockerfile.claude` for Claude, `Dockerfile.codex` for Codex, or
`agent_provider.dockerfile`) on first run; runs the selected agent `agent_provider.dockerfile`) on first run; runs the selected agent
CLI with the manifest-granted skills, env vars, and `~/.gitconfig` CLI with the manifest-granted skills, env vars, and `~/.gitconfig`
(the latter for the git-gate's `insteadOf` rules when `bottle.git` (the latter for the git-gate's `insteadOf` rules when `bottle.git`
3
+1 -1
View File
@@ -38,7 +38,7 @@ _RUNTIMES = {
template=PROVIDER_CLAUDE, template=PROVIDER_CLAUDE,
command="claude", command="claude",
image="claude-bottle:latest", image="claude-bottle:latest",
didericis marked this conversation as resolved Outdated
Outdated
Review

Image should be changed to "bot-bottle-claude:latest"

Actually we should rename the entire project from "claude-bottle" to "bot-bottle". Try to do that in a single commit. Will follow up with gitea project renames after.

Image should be changed to "bot-bottle-claude:latest" Actually we should rename the entire project from "claude-bottle" to "bot-bottle". Try to do that in a single commit. Will follow up with gitea project renames after.
dockerfile="", dockerfile=str(_REPO_ROOT / "Dockerfile.claude"),
auth_role="claude_code_oauth", auth_role="claude_code_oauth",
placeholder_env="CLAUDE_CODE_OAUTH_TOKEN", placeholder_env="CLAUDE_CODE_OAUTH_TOKEN",
prompt_mode="claude_append_file", prompt_mode="claude_append_file",
@@ -128,11 +128,11 @@ def apply_capability_change(slug: str, new_dockerfile: str) -> tuple[str, str]:
def _repo_dockerfile_path() -> Path: def _repo_dockerfile_path() -> Path:
"""Path to the repo's Dockerfile (one dir above this module's """Path to the repo's Claude Dockerfile (one dir above this module's
package root). Resolved at call time so the path is correct package root). Resolved at call time so the path is correct
regardless of where this module is imported from.""" regardless of where this module is imported from."""
# claude_bottle/backend/docker/capability_apply.py -> repo root # claude_bottle/backend/docker/capability_apply.py -> repo root
return Path(__file__).resolve().parent.parent.parent.parent / "Dockerfile" return Path(__file__).resolve().parent.parent.parent.parent / "Dockerfile.claude"
def snapshot_transcript(slug: str) -> None: def snapshot_transcript(slug: str) -> None:
+1 -1
View File
@@ -183,7 +183,7 @@ def resolve_plan(
supervise_dockerfile_path = ( supervise_dockerfile_path = (
Path(dockerfile_path) Path(dockerfile_path)
if dockerfile_path if dockerfile_path
else Path(__file__).resolve().parent.parent.parent.parent / "Dockerfile" else Path(__file__).resolve().parent.parent.parent.parent / "Dockerfile.claude"
) )
dockerfile_content = ( dockerfile_content = (
supervise_dockerfile_path.read_text() supervise_dockerfile_path.read_text()