From cef8dab2724605e87ef277a1515b99b16c7acc08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gabor=20K=C3=B6rber?= Date: Sun, 24 May 2026 02:05:04 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=A5=87=20export=20from=20upstream=20(cb24?= =?UTF-8?q?06c)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 1 + config-layers.svg | 55 +++++++++++++++++++++++++---------------------- 2 files changed, 30 insertions(+), 26 deletions(-) diff --git a/README.md b/README.md index 29d0bfb..6f3278e 100644 --- a/README.md +++ b/README.md @@ -22,6 +22,7 @@ ### Planned Features +- **Support for custom harnesses** — bring your own agent runtime, not just Claude Code and Codex - **Full encapsulation hardening** — for worker and CI environments, ensuring complete sandboxing of file system, network, and credentials - **ACP integration** via [`dirigate`](https://github.com/dirigence/dirigate) — Agent Communication Protocol support for structured agent orchestration diff --git a/config-layers.svg b/config-layers.svg index bca6c06..0a31510 100644 --- a/config-layers.svg +++ b/config-layers.svg @@ -2,28 +2,28 @@ - - + + - - + + - - + + - - + + @@ -34,48 +34,51 @@ + + + - Configuration Layering + Configuration Layering Higher priority overrides - + Compiled Defaults Built into the sandcage binary Base values always present - - Global Config - ~/.sandcage/config.toml + + Global Config + ~/.sandcage/config.toml User-wide SSH, shell, mounts - - Project Config - .sandcage.yml — checked into version control + + Project Config + .sandcage.yml — checked into version control Per-project packages, toolchains, env - - - Local Config - .sandcage.local.yml — gitignored, personal overrides + + + Local Config + .sandcage.local.yml — gitignored, personal overrides Per-developer SSH keys, secrets, mounts - - CLI Flags - sandcage claude -p ~/project -- --resume + + CLI Flags + sandcage claude -p ~/project -- --resume Per-invocation highest priority - Each layer overrides the one below it. Only set what you need — sensible defaults handle the rest. + Each layer overrides the one below it. Only set what you need — sensible defaults handle the rest.