Files
bot-bottle/scripts/demo/bottle.md
T
didericis 8774e94f91 fix: repair the demo harness for the current manifest format
The demo has been unrunnable since eafd1c1f deleted bot-bottle.demo.json
as a pre-YAML-migration artifact. demo-setup.sh still copied that file
under `set -euo pipefail`, so demo.sh and demo-record.sh both exited
non-zero before launching anything.

Rebuild the fixtures in the current per-file Markdown format. Bottles
are only read from $HOME/.bot-bottle/bottles/ — manifest/index.py
ignores a bottles/ dir in CWD by design (PRD 0011) — so setup now
installs into real config and pairs every write with a .demo-backup
that teardown restores. Teardown compares content before removing, so
a second run cannot delete the user's restored original.

Point the DLP probe at the bottle's own example.org route rather than
api.anthropic.com/dlp-probe. The provider-injected anthropic route
defaults to `redact`, which would forward a scrubbed request instead of
refusing; the declared route sets outbound_on_match: block so probe 3
stays the hard 403 the demo is showing off. Left at the default
`supervise` it would instead hold the request open for up to 300s
awaiting operator approval and stall the recording.

Also drop the stale pipelock naming from the tape (egress is the
gateway's own scanner now), fix demo.sh's ./cli.py invocation, and
pre-warm Dockerfile.gateway instead of the removed Dockerfile.git-gate.

Refs #540

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-27 22:03:48 -04:00

2.6 KiB

agent_provider, env, egress, git-gate
agent_provider env egress git-gate
template auth_token
claude BOT_BOTTLE_CLAUDE_OAUTH_TOKEN
FAKE_TOKEN
ghp_aB3cD4eF5gH6iJ7kL8mN9oP0qR1sT2uV3wX4yZ
routes
host inspect
example.org
outbound_on_match
block
user repos
name email
demo demo@example.invalid
demo-upstream
url key host_key
ssh://git@upstream.invalid/path.git
provider path
static ~/.cache/bot-bottle-demo/fake-key
ssh-ed25519 AAAAEXAMPLE

The demo bottle — the sandbox boundary behind docs/demo.gif.

Declares exactly enough to make all four recorded probes meaningful: one allowlisted host, one synthetic credential in the environment, and one git upstream wired through the git-gate. Everything an agent could use to reach the network here is either denied by the host filter, caught by the egress DLP scan, or rejected by gitleaks at push time.

Not an example to copy for real work — the fake token and the upstream.invalid remote only make sense for a scripted recording. See examples/bottles/ for bottles meant to be adapted.