Commit Graph

  • aba9a823ba docs(research): document macOS agent VM isolation approach didericis 2026-05-11 16:31:40 -04:00
  • 8f5e07af7f test(pipelock): drive sidecar smoke through production prepare/start didericis 2026-05-11 16:23:43 -04:00
  • beb0c9d58f feat(cli): add --format=json to start --dry-run for machine-readable plan didericis 2026-05-11 16:23:24 -04:00
  • 30b4f12288 refactor(pipelock): expose structured config; assert on dict in tests didericis 2026-05-11 16:23:12 -04:00
  • 4462863d56 test: reorganize suite into unit/integration/canaries directories didericis 2026-05-11 16:23:02 -04:00
  • 83fe5741f5 chore(test): open refactor-tests branch didericis 2026-05-11 16:01:54 -04:00
  • 08159e1031 docs(research): survey AI-agent sandbox tools didericis 2026-05-11 15:56:23 -04:00
  • 26bebc1eec Merge pull request 'PRD 0003: Bottle Backend abstraction' (#5) from add-bottle-factory-abstraction into main didericis 2026-05-11 14:49:42 -04:00
  • f0b67a3e94 docs(prd): update PRD 0003 to reflect the shipped design didericis 2026-05-11 14:47:17 -04:00
  • 656dc88d76 refactor(env): make env resolution backend-agnostic didericis 2026-05-11 14:39:44 -04:00
  • 988c0bdad3 refactor(env): rename env_resolve.py -> env.py; env_resolve() -> resolve_env_into() didericis 2026-05-11 14:17:50 -04:00
  • a786ca3391 refactor(util): split private helpers off DockerBottleBackend didericis 2026-05-11 14:09:55 -04:00
  • 1269edf311 refactor(pipelock): PipelockProxy.prepare takes a Bottle, not (manifest, name) didericis 2026-05-11 14:05:48 -04:00
  • 1b3254bf37 refactor(pipelock): move PIPELOCK_IMAGE and PIPELOCK_PORT to docker/pipelock.py didericis 2026-05-11 13:59:43 -04:00
  • b49281800a refactor(pipelock): move Docker-specific naming helpers to docker/pipelock.py didericis 2026-05-11 13:57:18 -04:00
  • edd8b444a6 refactor(pipelock): split sidecar lifecycle into DockerPipelockProxy didericis 2026-05-11 13:53:45 -04:00
  • 25e67137f2 refactor(pipelock): allowlist-resolution helpers take a Bottle, not (manifest, name) didericis 2026-05-11 13:44:58 -04:00
  • c62b3204a8 refactor(util): move is_ipv4_literal out of pipelock.py into util.py didericis 2026-05-11 13:37:31 -04:00
  • ff962d2893 refactor(pipelock): start/stop become methods on PipelockProxy didericis 2026-05-11 10:57:07 -04:00
  • c2cdb7777d refactor(pipelock): prepare_proxy returns a ProxyPlan didericis 2026-05-11 01:26:38 -04:00
  • 1b8d3bbb94 refactor(docker): prepare_proxy takes stage_dir and owns the yaml path didericis 2026-05-11 01:22:26 -04:00
  • 30ead9102a refactor(pipelock): introduce PipelockProxy class housing the yaml body didericis 2026-05-11 01:18:53 -04:00
  • f344c8cd9d test(pipelock): cut low-value tests (naming + entrypoint/cmd inspection) didericis 2026-05-11 01:11:59 -04:00
  • 11f17d7927 refactor(docker): inline pipelock_write_yaml body into prepare_proxy didericis 2026-05-11 01:04:47 -04:00
  • 8457869dcd refactor(util): move expand_tilde to top-level claude_bottle/util.py didericis 2026-05-11 00:52:33 -04:00
  • 6298d33c31 refactor(docker): absorb claude_bottle/ssh.py into DockerBottleBackend didericis 2026-05-11 00:49:05 -04:00
  • c9fe23a043 refactor(docker): absorb claude_bottle/skills.py into DockerBottleBackend didericis 2026-05-11 00:44:34 -04:00
  • d45d4fec8a refactor(docker): inline skills_copy_into into provision_skills didericis 2026-05-11 00:38:25 -04:00
  • 054dc09b38 refactor(backend): make provision_* abstract; provision lives on the base didericis 2026-05-11 00:31:36 -04:00
  • 5d46d1bea4 refactor(docker): extract provision_skills to mirror the others didericis 2026-05-11 00:26:10 -04:00
  • 5a024259a6 refactor(docker): split provision into provision_prompt / _ssh / _git didericis 2026-05-11 00:20:22 -04:00
  • 133a7a39e7 refactor(backend): fold BottleProvisioner back into BottleBackend didericis 2026-05-11 00:13:36 -04:00
  • 7b5a798186 refactor(backend): introduce BottleProvisioner ABC + DockerBottleProvisioner didericis 2026-05-11 00:04:12 -04:00
  • 70a22fa210 refactor: rename platform abstraction to backend didericis 2026-05-10 23:59:38 -04:00
  • c79966731c refactor(docker): move network.py into platform/docker/ didericis 2026-05-10 23:40:58 -04:00
  • 1d2c18eaae refactor(platform): rename claude_bottle/bottles -> claude_bottle/platform didericis 2026-05-10 23:37:28 -04:00
  • aaed390953 refactor(bottles): Bottle becomes an ABC; DockerBottle inherits didericis 2026-05-10 23:32:33 -04:00
  • d28f0e6d9b refactor(docker): split bottles/docker/__init__.py into sibling modules didericis 2026-05-10 23:29:38 -04:00
  • e20f8af05a refactor(bottles): make docker a package; absorb top-level docker.py didericis 2026-05-10 23:25:42 -04:00
  • 47b882f634 refactor(bottles): move 'list active' onto DockerBottlePlatform didericis 2026-05-10 23:19:22 -04:00
  • 18d29fc23f refactor(bottles): two-phase cleanup parallel to prepare/launch didericis 2026-05-10 23:14:54 -04:00
  • 4a45c267f3 refactor(cli): remove redundant 'build' command didericis 2026-05-10 23:05:24 -04:00
  • 5f82044403 refactor(bottles): move _run_agent_container and _provision_container onto the platform class didericis 2026-05-10 23:02:21 -04:00
  • 7ab35a5e2a refactor(bottles): absorb prepare/launch fns into DockerBottlePlatform didericis 2026-05-10 23:00:07 -04:00
  • e22a96e511 refactor(bottles): BottlePlatform becomes ABC; DockerBottlePlatform in docker.py didericis 2026-05-10 22:56:47 -04:00
  • 2827d9b899 refactor(bottles): introduce BottlePlan base + move print onto plan didericis 2026-05-10 22:49:57 -04:00
  • 236c4fa50c refactor(bottles): rename DockerBottleSpec to BottleSpec didericis 2026-05-10 22:40:19 -04:00
  • 4f16b3a9e1 refactor(bottles): split factory into prepare + launch phases didericis 2026-05-10 22:36:26 -04:00
  • a284d85296 refactor(start): show_plan now takes DockerBottleSpec didericis 2026-05-10 22:23:40 -04:00
  • 7500ba230c refactor(start): extract show_plan from cmd_start didericis 2026-05-10 22:20:33 -04:00
  • d75cc9325f feat(bottles): implement bottle factory abstraction per PRD 0003 didericis 2026-05-10 22:15:05 -04:00
  • d5c056f36e docs(prd): add 0003 bottle factory abstraction didericis 2026-05-10 21:56:10 -04:00
  • a39c7b1b7b Merge pull request 'refactor(manifest): convert to frozen dataclasses' (#4) from convert-manifest-to-dataclass into main didericis 2026-05-10 21:42:34 -04:00
  • 9343f6f21d refactor(manifest): drop _json_type, use type(x).__name__ in error messages didericis 2026-05-10 21:36:38 -04:00
  • e9a3de49af fix(types): make manifest.py clean under pyright strict didericis 2026-05-10 21:34:03 -04:00
  • 1f36d53f7b refactor(manifest): convert TypedDict to frozen dataclasses didericis 2026-05-10 21:20:15 -04:00
  • 36cb0c53bf refactor(manifest): add TypedDict schema and eager validation didericis 2026-05-10 21:08:54 -04:00
  • 7e0e256370 docs: add research note on polish priorities to close the maturity gap didericis 2026-05-10 20:38:44 -04:00
  • 79604fded7 docs: reposition README around scoped-agent wedge and note DoH didericis 2026-05-10 03:00:19 -04:00
  • fe232744a6 docs: reframe security model around secret exposure and exfiltration didericis 2026-05-10 02:42:12 -04:00
  • e1efc64862 docs: add research note on Apple container as an alternative backend didericis 2026-05-10 02:36:11 -04:00
  • 1e6f254db5 docs: add research note comparing bash, Python, and Go for the CLI didericis 2026-05-10 02:34:40 -04:00
  • 65d2ab9d5f docs: fill in copyright in LICENSE appendix didericis 2026-05-10 02:03:50 -04:00
  • acbaffb98e docs: add Apache 2.0 LICENSE and link it from the README didericis 2026-05-10 02:02:42 -04:00
  • e7cfc91ca5 docs: consolidate egress + gVisor docs into a worked Manifest section didericis 2026-05-10 01:47:52 -04:00
  • c8a35beb12 docs: add project logo and trademark disclaimer to README didericis 2026-05-10 01:40:05 -04:00
  • ec6261cd77 docs: add Fly Machines case study to remote-docker-vm-isolation note didericis 2026-05-10 01:18:08 -04:00
  • 43453c66ea docs: add research note on remote Docker VM as an isolation upgrade didericis 2026-05-10 01:07:17 -04:00
  • e3f5a5907a feat(bottle): opt-in gVisor runtime per bottle didericis 2026-05-10 00:48:11 -04:00
  • 3eff1e0b6e docs: replace non-goals with a security model section in README didericis 2026-05-10 00:41:14 -04:00
  • 7986f2bd23 docs: add research note on stronger isolation alternatives didericis 2026-05-10 00:38:46 -04:00
  • cc5e772519 docs: replace stale .sh paths with claude_bottle/*.py equivalents didericis 2026-05-10 00:27:25 -04:00
  • 4ebfcec2f7 fix(cli): make 'build --help' actually print help didericis 2026-05-10 00:16:17 -04:00
  • f817847dff refactor(cli): split claude_bottle/cli.py into a package didericis 2026-05-10 00:15:16 -04:00
  • 0c1740ca99 chore: remove journal and project-local init-entry skill didericis 2026-05-09 23:55:39 -04:00
  • b88fbbaedd docs: add claude-bottle.example.json didericis 2026-05-09 23:53:28 -04:00
  • 91b1683306 docs: fix post-Python-refactor drift in README and Dockerfile didericis 2026-05-09 23:51:11 -04:00
  • 4694db1201 PRD 0002: Test pipeline on Gitea Actions (#3) didericis 2026-05-09 02:48:03 -04:00
  • 97aabd3d75 docs: trim CLAUDE.md to minimal orientation didericis 2026-05-08 14:58:46 -04:00
  • 3f03d65e73 chore: tidy gitignore, Dockerfile indent, unused import didericis 2026-05-08 11:39:30 -04:00
  • 399ed93dc8 refactor: convert project from bash to Python didericis 2026-05-08 15:26:58 +00:00
  • b94b6904ae feat(cli): make --remote-control on start opt-in didericis 2026-05-08 02:15:25 -04:00
  • 400e914f1f fix(cli): keep SLUG accessible to cleanup_all EXIT trap didericis 2026-05-08 02:06:17 -04:00
  • ba7616a4ae PRD 0001: Per-agent egress proxy via pipelock (#1) didericis 2026-05-08 01:56:43 -04:00
  • 08597ebcf8 docs: add redundancy analysis to pipelock assessment didericis 2026-05-08 00:25:01 -04:00
  • 5607dce611 docs(journal): 2026-05-08 00:15 didericis 2026-05-08 00:16:14 -04:00
  • b36e6da0b3 docs: add research note assessing pipelock for egress/exfil control didericis 2026-05-08 00:15:11 -04:00
  • c74bd5cf26 docs: add research note on multi-encoding secret exfil tripwires didericis 2026-05-08 00:00:51 -04:00
  • bc7f506311 docs: add research note on isolating tea token via proxy didericis 2026-05-07 23:30:06 -04:00
  • edf79b3880 docs: add research note on container network egress guards didericis 2026-05-07 23:27:18 -04:00
  • 7a38b8da23 docs: add research note on OAuth token exposure to claude didericis 2026-05-07 23:24:39 -04:00
  • adaaa2c0e8 chore: enforce Conventional Commits via .githooks/commit-msg didericis 2026-05-07 23:14:39 -04:00
  • 9b4ff29f49 docs: add research note on revoking Claude Code OAuth tokens didericis 2026-05-07 23:13:42 -04:00
  • 74a2c7a32a refactor: rename box/boxes to bottle/bottles in config schema and code didericis 2026-05-07 23:02:34 -04:00
  • c45f384fb8 Initial commit didericis 2026-05-07 22:45:36 -04:00