agent-containers 0.1.0.dev0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. agent_containers/__init__.py +1 -0
  2. agent_containers/__main__.py +6 -0
  3. agent_containers/_assets/agent-images/adal/Dockerfile +103 -0
  4. agent_containers/_assets/agent-images/adal/examples/egress-allowlist.txt +10 -0
  5. agent_containers/_assets/agent-images/adal/packages-apt.txt +13 -0
  6. agent_containers/_assets/agent-images/adal/packages-npm.txt +2 -0
  7. agent_containers/_assets/agent-images/adal/packages-uv.txt +6 -0
  8. agent_containers/_assets/agent-images/adal/tools-uv.txt +4 -0
  9. agent_containers/_assets/agent-images/agent-gateway/Dockerfile +50 -0
  10. agent_containers/_assets/agent-images/agent-gateway/entrypoint.sh +28 -0
  11. agent_containers/_assets/agent-images/agent-gateway/sshd_config.agent-gateway +11 -0
  12. agent_containers/_assets/agent-images/aider/Dockerfile +114 -0
  13. agent_containers/_assets/agent-images/aider/examples/egress-allowlist.txt +16 -0
  14. agent_containers/_assets/agent-images/aider/packages-apt.txt +16 -0
  15. agent_containers/_assets/agent-images/aider/packages-npm.txt +7 -0
  16. agent_containers/_assets/agent-images/aider/packages-uv.txt +9 -0
  17. agent_containers/_assets/agent-images/aider/tools-uv.txt +9 -0
  18. agent_containers/_assets/agent-images/claude-code/Dockerfile +171 -0
  19. agent_containers/_assets/agent-images/claude-code/entrypoint.sh +22 -0
  20. agent_containers/_assets/agent-images/claude-code/examples/egress-allowlist.txt +14 -0
  21. agent_containers/_assets/agent-images/claude-code/examples/settings.local-model.json +7 -0
  22. agent_containers/_assets/agent-images/claude-code/packages-apt.txt +16 -0
  23. agent_containers/_assets/agent-images/claude-code/packages-npm.txt +7 -0
  24. agent_containers/_assets/agent-images/claude-code/packages-uv.txt +9 -0
  25. agent_containers/_assets/agent-images/claude-code/plugin-marketplaces.txt +23 -0
  26. agent_containers/_assets/agent-images/claude-code/plugins.txt +13 -0
  27. agent_containers/_assets/agent-images/claude-code/proxy-ca.d/.keep +1 -0
  28. agent_containers/_assets/agent-images/claude-code/tools-uv.txt +9 -0
  29. agent_containers/_assets/agent-images/codex/Dockerfile +147 -0
  30. agent_containers/_assets/agent-images/codex/codex-wrapper.sh +13 -0
  31. agent_containers/_assets/agent-images/codex/examples/egress-allowlist.txt +10 -0
  32. agent_containers/_assets/agent-images/codex/packages-apt.txt +13 -0
  33. agent_containers/_assets/agent-images/codex/packages-npm.txt +2 -0
  34. agent_containers/_assets/agent-images/codex/packages-uv.txt +6 -0
  35. agent_containers/_assets/agent-images/codex/plugin-marketplaces.txt +2 -0
  36. agent_containers/_assets/agent-images/codex/plugins.txt +2 -0
  37. agent_containers/_assets/agent-images/codex/proxy-ca.d/.keep +1 -0
  38. agent_containers/_assets/agent-images/codex/tools-uv.txt +4 -0
  39. agent_containers/_assets/agent-images/hermes/Dockerfile +122 -0
  40. agent_containers/_assets/agent-images/hermes/entrypoint.sh +49 -0
  41. agent_containers/_assets/agent-images/hermes/packages-apt.txt +16 -0
  42. agent_containers/_assets/agent-images/hermes/packages-npm.txt +7 -0
  43. agent_containers/_assets/agent-images/hermes/packages-uv.txt +9 -0
  44. agent_containers/_assets/agent-images/hermes/proxy-ca.d/.keep +1 -0
  45. agent_containers/_assets/agent-images/hermes/tools-uv.txt +9 -0
  46. agent_containers/_assets/agent-images/kilo-code/Dockerfile +101 -0
  47. agent_containers/_assets/agent-images/kilo-code/examples/egress-allowlist.txt +7 -0
  48. agent_containers/_assets/agent-images/kilo-code/packages-apt.txt +5 -0
  49. agent_containers/_assets/agent-images/kilo-code/packages-npm.txt +1 -0
  50. agent_containers/_assets/agent-images/kilo-code/packages-uv.txt +4 -0
  51. agent_containers/_assets/agent-images/kilo-code/tools-uv.txt +4 -0
  52. agent_containers/_assets/agent-images/opencode/Dockerfile +126 -0
  53. agent_containers/_assets/agent-images/opencode/examples/egress-allowlist.txt +6 -0
  54. agent_containers/_assets/agent-images/opencode/packages-apt.txt +13 -0
  55. agent_containers/_assets/agent-images/opencode/packages-npm.txt +2 -0
  56. agent_containers/_assets/agent-images/opencode/packages-uv.txt +6 -0
  57. agent_containers/_assets/agent-images/opencode/proxy-ca.d/.keep +1 -0
  58. agent_containers/_assets/agent-images/opencode/tools-uv.txt +4 -0
  59. agent_containers/_assets/agent-images/qwen-code/Dockerfile +104 -0
  60. agent_containers/_assets/agent-images/qwen-code/examples/egress-allowlist.txt +10 -0
  61. agent_containers/_assets/agent-images/qwen-code/packages-apt.txt +13 -0
  62. agent_containers/_assets/agent-images/qwen-code/packages-npm.txt +2 -0
  63. agent_containers/_assets/agent-images/qwen-code/packages-uv.txt +6 -0
  64. agent_containers/_assets/agent-images/qwen-code/tools-uv.txt +4 -0
  65. agent_containers/_assets/agent-images/shared/egress-allowlist.sh +138 -0
  66. agent_containers/_assets/agent-images/shared/install-additional-packages.sh +79 -0
  67. agent_containers/_assets/agent-images/shared/install-workload-base.sh +46 -0
  68. agent_containers/_assets/agent-images/shared/workload-entrypoint.sh +82 -0
  69. agent_containers/_assets/agent-images/volume-bridge/Dockerfile +37 -0
  70. agent_containers/_assets/agent-images/volume-bridge/entrypoint.sh +29 -0
  71. agent_containers/_assets/agent-images/volume-bridge/serve.sh +66 -0
  72. agent_containers/assets.py +38 -0
  73. agent_containers/build_context.py +116 -0
  74. agent_containers/cli.py +212 -0
  75. agent_containers/creation.py +177 -0
  76. agent_containers/docker.py +562 -0
  77. agent_containers/lifecycle.py +325 -0
  78. agent_containers/planner.py +99 -0
  79. agent_containers/profile.py +377 -0
  80. agent_containers/shortcuts.py +159 -0
  81. agent_containers/state.py +154 -0
  82. agent_containers-0.1.0.dev0.dist-info/METADATA +195 -0
  83. agent_containers-0.1.0.dev0.dist-info/RECORD +86 -0
  84. agent_containers-0.1.0.dev0.dist-info/WHEEL +4 -0
  85. agent_containers-0.1.0.dev0.dist-info/entry_points.txt +3 -0
  86. agent_containers-0.1.0.dev0.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,195 @@
1
+ Metadata-Version: 2.4
2
+ Name: agent-containers
3
+ Version: 0.1.0.dev0
4
+ Summary: Deterministic onboarding and maintenance for hardened coding-agent containers
5
+ License-Expression: MIT
6
+ License-File: LICENSE
7
+ Classifier: Development Status :: 2 - Pre-Alpha
8
+ Classifier: Intended Audience :: Developers
9
+ Classifier: Programming Language :: Python :: 3
10
+ Classifier: Programming Language :: Python :: 3.12
11
+ Requires-Dist: pydantic>=2.11,<3
12
+ Requires-Dist: tomlkit>=0.13,<1
13
+ Requires-Dist: typer>=0.16,<1
14
+ Requires-Python: >=3.12
15
+ Project-URL: Repository, https://github.com/anirbanbasu/agent-containers
16
+ Project-URL: Issues, https://github.com/anirbanbasu/agent-containers/issues
17
+ Project-URL: Download, https://pypi.org/project/agent-containers/
18
+ Description-Content-Type: text/markdown
19
+
20
+ # agent-containers CLI
21
+
22
+ The Python package is tested on Python 3.14 (with Python 3.12+ support). It
23
+ validates profiles, produces offline plans, materializes bundled image recipes,
24
+ and applies a direct-Docker deployment without launching an agent session.
25
+
26
+ This directory will contain the standalone Python project for deterministic
27
+ onboarding and maintenance of this repository's hardened agent images. The
28
+ distribution and executable name is `agent-containers`; the Python import
29
+ package will be `agent_containers`.
30
+
31
+ ## Agreed scope
32
+
33
+ - Human-editable, versioned TOML profiles, with separate machine-managed
34
+ deployment state. Interactive prompts and noninteractive inputs use the same
35
+ validation model; unknown fields are errors.
36
+ - Claude Code, OpenCode, Codex, and Hermes adapters, targeting Linux Docker Engine
37
+ and macOS Docker Desktop. Support claims require actual integration tests.
38
+ - All four optional package categories: apt packages, npm packages, isolated uv
39
+ tools, and system Python libraries installed with uv.
40
+ - Explicit custom file/directory mounts and copy-once configuration seeds,
41
+ without duplicating each agent's settings schema. Relative input paths resolve
42
+ against the profile directory; the workspace defaults to the launch directory.
43
+ - Composable hosted/local/custom model endpoints, HTTP(S) proxies, CA trust,
44
+ egress gateways, and experimental observability integrations. Decant is
45
+ experimental and currently limited to Claude Code and Codex; it is disabled
46
+ unless a profile opts in. Opted-in Decant launches use user-scoped image,
47
+ container, and data-volume names and mount selected agent collection
48
+ subdirectories directly; the delegated volume bridge remains a separate
49
+ manual setup. Local inference engine installation and model
50
+ downloads are outside the agreed initial scope.
51
+ - Explicit application and updates, retained prior deployments, and rollback of
52
+ the selected image and managed launch configuration. Rollback does not restore
53
+ mutable home-volume data or terminate existing sessions automatically.
54
+ - Image recipes bundled from canonical `../agent-images/` sources in both wheel
55
+ and source distributions. No maintained duplicate or installed-package edits.
56
+
57
+ ## Safety and verification
58
+
59
+ Preserve the repository's containment contract. Package selection must not
60
+ silently expand runtime egress. Credentials must not appear in profiles, build
61
+ arguments, images, logs, or command output; profiles reference runtime inputs.
62
+
63
+ When a profile declares a proxy, its generated Docker launch exports both
64
+ uppercase and lowercase `HTTP_PROXY`, `HTTPS_PROXY`, and `NO_PROXY` variables,
65
+ and enables Node's environment proxy support. A profile `proxy.ca_file` or
66
+ `proxy.ca_dir` is copied into the isolated image build context and installed
67
+ into the image's system trust store. The generated launch points
68
+ `SSL_CERT_FILE`, `REQUESTS_CA_BUNDLE`, and `NODE_EXTRA_CA_CERTS` at the merged
69
+ system bundle. Certificate inputs are never placed in the shared canonical
70
+ image assets; they are deployment-specific and excluded from command output.
71
+
72
+ Gateway profiles require a host and port plus a read-only SSH key and pinned
73
+ known-hosts input. These can be supplied through the dedicated profile paths or
74
+ explicit mounts at `/etc/agent/gateway-key` and
75
+ `/etc/agent/gateway-known-hosts`; bootstrap rules are restricted to literal
76
+ IP addresses/CIDRs. Gateway user, Cloudflare Access hostname, and bootstrap
77
+ allow rules are emitted only when gateway mode is explicitly configured.
78
+
79
+ Langfuse support is experimental and opt-in for Claude Code, Codex, and
80
+ OpenCode. The CLI installs the vendor-supported integration for the selected
81
+ agent and emits only references to credential environment variables; it never
82
+ stores credential values. A Langfuse endpoint must be present in the profile's
83
+ egress allowlist (or be reached through a configured gateway). Langfuse is one
84
+ of many possible OpenTelemetry backends, not a default telemetry provider.
85
+
86
+ Unit and distribution tests must run without Docker. Integration tests require
87
+ Docker and disposable resources, without real account logins. Offline plans and
88
+ diagnostics must distinguish recorded state from inspected live state and mark
89
+ runtime checks unavailable when Docker cannot be reached.
90
+
91
+ Use direct Docker commands, not Compose, and package with `uv build` and the
92
+ native `uv_build` backend, not Hatchling, with Python 3.12 or newer. Use `ty`
93
+ for type checking and Ruff for linting/formatting. Both live in the `dev`
94
+ dependency group; pytest and coverage live in `test`.
95
+
96
+ From this directory, install contributor dependencies with
97
+ `uv sync --group test --python 3.12`. Root `just test-cli` runs unit and packaging
98
+ tests under coverage; `just check-cli` runs Ruff and ty. Coverage must reach 100%.
99
+ Do not suppress type or coverage errors without a demonstrated, documented need.
100
+ The packaging test builds a standalone source distribution and installs its
101
+ rebuilt wheel in a fresh temporary environment; dependency downloads may be needed.
102
+
103
+ The CLI prints its required ASCII banner before every invocation. Deployment
104
+ state defaults to `$XDG_STATE_HOME/agent-containers/` (or
105
+ `~/.local/state/agent-containers/`). On macOS Docker Desktop, `apply` keeps the
106
+ host UID but uses image GID `1000`: the conventional macOS GID 20 collides with
107
+ an existing Linux image group, and the project deliberately retains its
108
+ Dockerfile collision rejection rather than silently joining that group.
109
+
110
+ If the host mounts `/tmp` with `noexec`, use a dedicated executable temporary
111
+ directory for pytest's `--basetemp` option. Pytest owns and clears that directory:
112
+ never point it at an existing directory containing your files. No mount flags
113
+ need changing. Tests still install outside the repository and use a fresh venv.
114
+
115
+ The test suite covers CLI behavior, profile/state validation, generated build
116
+ contexts, Docker argv construction, lifecycle transitions, and standalone
117
+ sdist-to-wheel installation at 100% source coverage. It does not establish all
118
+ runtime containment or agent compatibility claims; broader Docker integration
119
+ tests remain to be implemented.
120
+
121
+ Profile-managed npm and uv tools are installed into image-owned locations
122
+ outside the persistent home during image creation only. Runtime root filesystems
123
+ stay read-only, with the existing explicit writable mounts preserved. Manual
124
+ home installations take PATH precedence; diagnostics must warn when they shadow
125
+ image-managed executables. Do not delete existing home tools.
126
+
127
+ The private implementation handoff is maintained in
128
+ `../tmp-onboarding-codex.log`; the original discussion is in
129
+ `../tmp-onboarding.md`. Both are intentionally ignored by Git.
130
+
131
+ ## Current commands
132
+
133
+ `agent-containers create PROFILE.toml` interactively prompts for every profile
134
+ section, validates the resulting model, and writes a new TOML file atomically.
135
+ It refuses to replace an existing file and never contacts Docker. Secrets are
136
+ never prompted for; provider authentication is represented only by an
137
+ environment-variable name.
138
+
139
+ `agent-containers validate PROFILE.toml` parses and validates a profile without
140
+ contacting Docker or changing files.
141
+
142
+ `agent-containers plan PROFILE.toml` compares the desired profile with optional
143
+ recorded deployment JSON (`--state STATE.json`). It reports image versus launch
144
+ changes and always discloses that live Docker state was not inspected.
145
+
146
+ `agent-containers apply PROFILE.toml` materializes an isolated profile-owned
147
+ build context, builds or verifies its retained image, copies any new seed only
148
+ when its target is absent, and atomically selects deployment state. State is
149
+ written to the standard per-user location unless `--state STATE.json` overrides
150
+ it. `apply` does not launch an agent or terminate an existing session. After a
151
+ successful apply it also refreshes the CLI-managed
152
+ `$XDG_CONFIG_HOME/agent-containers/profiles.sh` (or
153
+ `~/.config/agent-containers/profiles.sh`) with a namespaced shortcut for the
154
+ profile. Source that file once from your shell startup file:
155
+
156
+ ```sh
157
+ source "$HOME/.config/agent-containers/profiles.sh"
158
+ ```
159
+
160
+ For example, a profile named `work-codex` becomes
161
+ `agent_containers_work_codex`. The generated function evaluates the current
162
+ directory when invoked, selects the profile's retained image and home volume,
163
+ and forwards arguments to the agent. It does not accept arbitrary Docker
164
+ options; use the documented generic shortcuts when an intentional one-off
165
+ override is needed.
166
+
167
+ By default, profile resources are namespaced with the host username and UID:
168
+ an image tag and home volume created for `work` by one user cannot collide with
169
+ the corresponding `work` resources created by another user on the same Docker
170
+ host. Set `home_volume = "an-existing-volume"` in the profile when an existing
171
+ named volume should be reused; that explicit name is an intentional sharing
172
+ choice and is never silently renamed.
173
+
174
+ Provider launch mappings are agent-specific: Claude Code uses its endpoint and
175
+ model environment variables, Codex uses per-run configuration overrides, and
176
+ Hermes uses per-run `--provider`/`--model` flags plus the documented base-URL
177
+ environment for supported `custom`, `openai`, and `anthropic` routes. OpenCode
178
+ endpoint/model fields are rendered into a secret-free JSON provider
179
+ configuration for that invocation. The shared entrypoint writes it under
180
+ `/tmp` and sets `OPENCODE_CONFIG`, so the profile does not modify the
181
+ persistent OpenCode home.
182
+
183
+ `agent-containers rollback PROFILE.toml` verifies and selects the immediately
184
+ previous retained image and launch record. It previews restored egress,
185
+ proxy/CA, and endpoint choices. It never restores persistent-home data or stops
186
+ an existing agent session, and refreshes that profile's generated shortcut.
187
+
188
+ `agent-containers doctor PROFILE.toml` is read-only. It reports Docker-daemon
189
+ availability, the expected deployment-state file, and whether the selected
190
+ image can be inspected; it creates, starts, and changes nothing.
191
+
192
+ Before building a distribution, run `uv run --project cli python cli/scripts/bundle_image_assets.py`;
193
+ `just build-cli` does this automatically.
194
+ The generated package-data directory is ignored, derived only from canonical
195
+ `agent-images/`, and included in the wheel and source distribution.
@@ -0,0 +1,86 @@
1
+ agent_containers/__init__.py,sha256=mhEzDEGivQV33Q1vV4yeyP2QjiY9jM05d3fmsZtEpkc,78
2
+ agent_containers/__main__.py,sha256=dVoppUuvaw5qixXnijXpDpfTfbjPkiQiSi_0-JUlj9A,118
3
+ agent_containers/_assets/agent-images/adal/Dockerfile,sha256=BKEsEs0-gHzi1m3R_HNiB6ULIrcFDEFj0YeXjaHesps,5102
4
+ agent_containers/_assets/agent-images/adal/examples/egress-allowlist.txt,sha256=fySvttnqOBzLnxWx7ag1WnSNDxMiCL_-xsdVugmTy3s,594
5
+ agent_containers/_assets/agent-images/adal/packages-apt.txt,sha256=NbbeSXHPWnguwWIN-14N1Gap8aOIJd5wgjKjh7vjza8,176
6
+ agent_containers/_assets/agent-images/adal/packages-npm.txt,sha256=KOtXZpKFE_QTBvKrROP7D2N0OlOLolM3_7S9gDV_2OQ,125
7
+ agent_containers/_assets/agent-images/adal/packages-uv.txt,sha256=TvzLHZLdGW8AWlS3_G30q1ODhfB1Tqs2_w6CJOu0Tec,426
8
+ agent_containers/_assets/agent-images/adal/tools-uv.txt,sha256=SQmWKawSJFeqSKl4LwpVxb0VDxmSYOQkkBwyYdI8fA4,287
9
+ agent_containers/_assets/agent-images/agent-gateway/Dockerfile,sha256=20DpK3AWDlPuq0hNKmNYO8g6bPjB9NUBIbh2drplJLw,2198
10
+ agent_containers/_assets/agent-images/agent-gateway/entrypoint.sh,sha256=7X7vKEUvFWV2MuUcWwg9RaQhtek7JOLYtSLfuil3Jps,969
11
+ agent_containers/_assets/agent-images/agent-gateway/sshd_config.agent-gateway,sha256=8N5Iff_YEsKxAG1KZd7HclNxZmFDaIL1Qy5JpDJZrOU,279
12
+ agent_containers/_assets/agent-images/aider/Dockerfile,sha256=5MMfo_A54mNSHuFQBc7aC_ZWjl227vkuJ0o_n1wXuEI,5740
13
+ agent_containers/_assets/agent-images/aider/examples/egress-allowlist.txt,sha256=7m6KHfEQrzAm06FYRGxImekJL6tlteX95MU2S5YKWaA,745
14
+ agent_containers/_assets/agent-images/aider/packages-apt.txt,sha256=8hOfXgPh_uLZX7dtYJJyRNIMVTAvzC4NBsgeXTgO8ho,369
15
+ agent_containers/_assets/agent-images/aider/packages-npm.txt,sha256=BMPbLi0-K_U1YkGkrgtVFx9ZfjZEX4g-7Bnpi9vBack,293
16
+ agent_containers/_assets/agent-images/aider/packages-uv.txt,sha256=65wxj7P6DN1ESgAimIRySY68jY67UKAIbty8dfo94RI,470
17
+ agent_containers/_assets/agent-images/aider/tools-uv.txt,sha256=ain10lJWAQTtZA08HRvexUBe9YOHPbU9xzOhl_2c40Q,420
18
+ agent_containers/_assets/agent-images/claude-code/Dockerfile,sha256=m4yuR_pBWYutph0BwHH58h6Szrm01NdNSdd7qleAypQ,8972
19
+ agent_containers/_assets/agent-images/claude-code/entrypoint.sh,sha256=ax1EwBwNC8oBb5OA5oKYyFB86e65aju7Flk4lvH_HPI,1309
20
+ agent_containers/_assets/agent-images/claude-code/examples/egress-allowlist.txt,sha256=I2SwxiBjIcFvFlgs-O0M4O2bsmhqIRLAk-oSheWurYE,590
21
+ agent_containers/_assets/agent-images/claude-code/examples/settings.local-model.json,sha256=3rtOl_wbkYaoHkBilwWP6hn8Adh3mveQEW8EifJXeC0,187
22
+ agent_containers/_assets/agent-images/claude-code/packages-apt.txt,sha256=8hOfXgPh_uLZX7dtYJJyRNIMVTAvzC4NBsgeXTgO8ho,369
23
+ agent_containers/_assets/agent-images/claude-code/packages-npm.txt,sha256=BMPbLi0-K_U1YkGkrgtVFx9ZfjZEX4g-7Bnpi9vBack,293
24
+ agent_containers/_assets/agent-images/claude-code/packages-uv.txt,sha256=65wxj7P6DN1ESgAimIRySY68jY67UKAIbty8dfo94RI,470
25
+ agent_containers/_assets/agent-images/claude-code/plugin-marketplaces.txt,sha256=QLwzhzdSPMSiwFmxLdwJlKOOaPynlmRXJS6x3ZdT5x4,1134
26
+ agent_containers/_assets/agent-images/claude-code/plugins.txt,sha256=Dx66a97VmOba97ZcDOnaWpJwC5iBjT0UrBOAq7lDIKg,486
27
+ agent_containers/_assets/agent-images/claude-code/proxy-ca.d/.keep,sha256=AgE508R0TcOwrLoKBu-FgeqcZILRLq50Pg5SZkiLnu8,91
28
+ agent_containers/_assets/agent-images/claude-code/tools-uv.txt,sha256=ain10lJWAQTtZA08HRvexUBe9YOHPbU9xzOhl_2c40Q,420
29
+ agent_containers/_assets/agent-images/codex/Dockerfile,sha256=Xm0SPb0-uzx3AI1FXD20EaUfmotdzZMd29LhXuXydfo,7114
30
+ agent_containers/_assets/agent-images/codex/codex-wrapper.sh,sha256=5J5HXVNir0Xs64LEdowq9-ZK4XZzucw_tJmktnRySL0,473
31
+ agent_containers/_assets/agent-images/codex/examples/egress-allowlist.txt,sha256=_VD__EoDbFr_FrwwZ6qfA7ApRy6HGnFRfuDO4qYpLBE,462
32
+ agent_containers/_assets/agent-images/codex/packages-apt.txt,sha256=NbbeSXHPWnguwWIN-14N1Gap8aOIJd5wgjKjh7vjza8,176
33
+ agent_containers/_assets/agent-images/codex/packages-npm.txt,sha256=KOtXZpKFE_QTBvKrROP7D2N0OlOLolM3_7S9gDV_2OQ,125
34
+ agent_containers/_assets/agent-images/codex/packages-uv.txt,sha256=TvzLHZLdGW8AWlS3_G30q1ODhfB1Tqs2_w6CJOu0Tec,426
35
+ agent_containers/_assets/agent-images/codex/plugin-marketplaces.txt,sha256=NGuQ-oaKa9Dmx11X0aXPlXAZkY_7xAd1sGKSRDpWW8I,135
36
+ agent_containers/_assets/agent-images/codex/plugins.txt,sha256=8v_OPeJqf9hjz6xW20yuY0O6R7afAOXTQnN3dPWMZqI,126
37
+ agent_containers/_assets/agent-images/codex/proxy-ca.d/.keep,sha256=AgE508R0TcOwrLoKBu-FgeqcZILRLq50Pg5SZkiLnu8,91
38
+ agent_containers/_assets/agent-images/codex/tools-uv.txt,sha256=SQmWKawSJFeqSKl4LwpVxb0VDxmSYOQkkBwyYdI8fA4,287
39
+ agent_containers/_assets/agent-images/hermes/Dockerfile,sha256=FkyBeSR1d-rKgWX2A59QlbePJqJ2LkW5IutmxeoeJ6s,6086
40
+ agent_containers/_assets/agent-images/hermes/entrypoint.sh,sha256=6ds9r6CQ0c0gYi9kb3TKVhzfH1Prn8Hh9EnaAHThc1o,2747
41
+ agent_containers/_assets/agent-images/hermes/packages-apt.txt,sha256=oSgLxp73BrJ3xkrfKrEbbX0I74zzsW8e4kSn0rrqwZk,377
42
+ agent_containers/_assets/agent-images/hermes/packages-npm.txt,sha256=BMPbLi0-K_U1YkGkrgtVFx9ZfjZEX4g-7Bnpi9vBack,293
43
+ agent_containers/_assets/agent-images/hermes/packages-uv.txt,sha256=65wxj7P6DN1ESgAimIRySY68jY67UKAIbty8dfo94RI,470
44
+ agent_containers/_assets/agent-images/hermes/proxy-ca.d/.keep,sha256=AgE508R0TcOwrLoKBu-FgeqcZILRLq50Pg5SZkiLnu8,91
45
+ agent_containers/_assets/agent-images/hermes/tools-uv.txt,sha256=ain10lJWAQTtZA08HRvexUBe9YOHPbU9xzOhl_2c40Q,420
46
+ agent_containers/_assets/agent-images/kilo-code/Dockerfile,sha256=UI3Qo6IthE7DTKk5ReDFiUrsVUgG2Y3GzPLbteovApg,4946
47
+ agent_containers/_assets/agent-images/kilo-code/examples/egress-allowlist.txt,sha256=MTP7Qf3bSxNfC-4ViPhhHsfTDWRPXK9Hr1ggVOyiZds,358
48
+ agent_containers/_assets/agent-images/kilo-code/packages-apt.txt,sha256=1IdzrlskS86orM5_NzmYR0tNYqoMbJ9ki9Qg63x9kJA,96
49
+ agent_containers/_assets/agent-images/kilo-code/packages-npm.txt,sha256=G9CcaLd0n33KSR406-JgNHOXh1cxNiCYFeZrEXEO93E,85
50
+ agent_containers/_assets/agent-images/kilo-code/packages-uv.txt,sha256=YM9V_YuTxA0KZfrCh6trATz38Q6rL9SRUXQV7e-tb94,300
51
+ agent_containers/_assets/agent-images/kilo-code/tools-uv.txt,sha256=hF6i01AXRFmhO33SvglkS8NVQWaLskaWX2urwPUxmdA,249
52
+ agent_containers/_assets/agent-images/opencode/Dockerfile,sha256=1vHv1F7hZpb0Ua8ZAnlE1GC4dpSYO3EmDGH1DrAdgbo,6292
53
+ agent_containers/_assets/agent-images/opencode/examples/egress-allowlist.txt,sha256=pYRRRTteQzlCeCw6LxvMKfi-oLniN3cxxfQGaOE7C7o,299
54
+ agent_containers/_assets/agent-images/opencode/packages-apt.txt,sha256=NbbeSXHPWnguwWIN-14N1Gap8aOIJd5wgjKjh7vjza8,176
55
+ agent_containers/_assets/agent-images/opencode/packages-npm.txt,sha256=KOtXZpKFE_QTBvKrROP7D2N0OlOLolM3_7S9gDV_2OQ,125
56
+ agent_containers/_assets/agent-images/opencode/packages-uv.txt,sha256=TvzLHZLdGW8AWlS3_G30q1ODhfB1Tqs2_w6CJOu0Tec,426
57
+ agent_containers/_assets/agent-images/opencode/proxy-ca.d/.keep,sha256=AgE508R0TcOwrLoKBu-FgeqcZILRLq50Pg5SZkiLnu8,91
58
+ agent_containers/_assets/agent-images/opencode/tools-uv.txt,sha256=SQmWKawSJFeqSKl4LwpVxb0VDxmSYOQkkBwyYdI8fA4,287
59
+ agent_containers/_assets/agent-images/qwen-code/Dockerfile,sha256=DnMivYBZ_OdD-C-1Q-hiFmrK_9O80a798FXB61gL_Ng,5118
60
+ agent_containers/_assets/agent-images/qwen-code/examples/egress-allowlist.txt,sha256=ihV8SKoCK9XM6iNVBAIpeeucFfvznPrEwy-Xk-veFEw,557
61
+ agent_containers/_assets/agent-images/qwen-code/packages-apt.txt,sha256=NbbeSXHPWnguwWIN-14N1Gap8aOIJd5wgjKjh7vjza8,176
62
+ agent_containers/_assets/agent-images/qwen-code/packages-npm.txt,sha256=KOtXZpKFE_QTBvKrROP7D2N0OlOLolM3_7S9gDV_2OQ,125
63
+ agent_containers/_assets/agent-images/qwen-code/packages-uv.txt,sha256=TvzLHZLdGW8AWlS3_G30q1ODhfB1Tqs2_w6CJOu0Tec,426
64
+ agent_containers/_assets/agent-images/qwen-code/tools-uv.txt,sha256=SQmWKawSJFeqSKl4LwpVxb0VDxmSYOQkkBwyYdI8fA4,287
65
+ agent_containers/_assets/agent-images/shared/egress-allowlist.sh,sha256=DRGiMp_n3Bvu74reXL8FNqZCGaVxS5jG8UGzt0_yUds,7015
66
+ agent_containers/_assets/agent-images/shared/install-additional-packages.sh,sha256=0HcTRdcVlM-91XSjmCVTAOSylinBnUHC3LB2Y46OYXI,3485
67
+ agent_containers/_assets/agent-images/shared/install-workload-base.sh,sha256=DuIXM8bBz2udh4-LwNBZcGA-nEeADQv-apyswpIkATI,1932
68
+ agent_containers/_assets/agent-images/shared/workload-entrypoint.sh,sha256=FpF9mvnlupgcoz7DRYyuyf38EcliC98aoN-8Q4NqniQ,3882
69
+ agent_containers/_assets/agent-images/volume-bridge/Dockerfile,sha256=16kOEpIqwHOEYqX9-qF1f6GTWaM1a00Z0QxPk6aoIxM,1451
70
+ agent_containers/_assets/agent-images/volume-bridge/entrypoint.sh,sha256=rL5kU89js-UNCMNkJyp_JgQLfWFUb2ad1QXhIzdZYBc,1334
71
+ agent_containers/_assets/agent-images/volume-bridge/serve.sh,sha256=UpPCeDyVLvRRjc0mUDlqUe5O_JVYEzUShJ1LsPuhBYQ,2562
72
+ agent_containers/assets.py,sha256=w4827XHnc5f8BVcs3GmSK0fHYljXYG7xb4Hc2bOtIl8,1430
73
+ agent_containers/build_context.py,sha256=kXLz9hiLzctrwQcK1D54Dssd1rGM2-mVGO2XFHl9Ln8,5220
74
+ agent_containers/cli.py,sha256=SfvPdh5ebIXYmH9ARf7mgif60pyfXP-gFw3MZpQPi2M,7669
75
+ agent_containers/creation.py,sha256=evfr4Zk_8LuhDueZgHPxWBp2p2ab8SZ3rZaNsTkDgJM,6745
76
+ agent_containers/docker.py,sha256=jBZgLgL1reDeNvqHjRFtMeTrVTqBj3ZNB-DfBX-_xBs,22318
77
+ agent_containers/lifecycle.py,sha256=bITO2Cx_o1J6hhEUV3l-BoIS5HQHpIyxyMLx_mVNRYU,13919
78
+ agent_containers/planner.py,sha256=HPnYXinFgNBd3MPbldZLYa6f3oCFvOi6Cjq5V08ivpM,3747
79
+ agent_containers/profile.py,sha256=JQhk6Z6xK-I1yOMUoWLVTEn8gxxFgHxpX7GHaY96CDw,15285
80
+ agent_containers/shortcuts.py,sha256=-eQy2gm5tHTd_3rEpBplZMbYyu2TtxNTLjFtVtmontI,6439
81
+ agent_containers/state.py,sha256=5P3L7ihl14TbbRHgkRIAcM4BAfqtfXsRj5PDeUsL5z8,6138
82
+ agent_containers-0.1.0.dev0.dist-info/licenses/LICENSE,sha256=oP_hEh0DpPPafnzm73K931eY9eE_BqST4qWZGFs08wI,1069
83
+ agent_containers-0.1.0.dev0.dist-info/WHEEL,sha256=Kot-FOXwz2no6rGIg4et79Z7m6vcKPAXr2Y6fTFpZuI,81
84
+ agent_containers-0.1.0.dev0.dist-info/entry_points.txt,sha256=J4mxZj349bQbjdjkTrgoI4291orsoGID6m_9h6s4bAo,63
85
+ agent_containers-0.1.0.dev0.dist-info/METADATA,sha256=2D27JaWooakHVbEvxYX7RfEknGX7ZmU4F2TXEXObWmA,11016
86
+ agent_containers-0.1.0.dev0.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: uv 0.12.10
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
@@ -0,0 +1,3 @@
1
+ [console_scripts]
2
+ agent-containers = agent_containers.cli:app
3
+
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Anirban Basu
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.