Context. Constraint. Contracts.

Clamp your Claws

Bands are skills with function-like closures and contracts, executed in locked-down microvms.

Agents see only simple CLI commands, with input and output types defined by JSON schemas.

allow: Bash(git *)Anything not allowed is denied. deny: Bash(git push --force *)Deny punches holes in allow. insist: Read(CHANGELOG.md)Forces the skill to use a capability. max_turns: 10Limit turns, tokens, cost, bytes, and more. env: DEPLOY_TOKENOnly expose the minimal necessary environment. contract: deploy_result.schema.jsonAgent sends and receives typed objects.
Banded
01 Why Bands

Prompts are programs.
Skills are functions.

There's a reason we don't code by mutating global state variables anymore. Your agent shouldn't work that way, either.

Most skills pollute agent context with implementation details and execution artifacts. They waste tokens, demand excess reasoning, and increase attack surface.

Bands refactor skills as simple CLI commands, each performing a single strongly-typed function.

Constraint is freedom

Deny > Insist > Allow

Bands Principles
  • Insist on what must be used
  • Allow sparingly
  • Deny everything else
  • Enforce contracts
  • Limit context
02

The Bands System

SKILL.md succinctly tells the agent what CLI commands commands are available and what function they perform. This is compatible with Agent Skills.

BAND.md exhaustively defines the capabilities of the container within which the banded skill will execute. The agent doesn't read this; it's enforced programatically by the band command.

bandcommands wraps every CLI command in a lightweight microvm that enforces all constrains and contracts defined in BAND.md.

agent invocation $ ./scripts/voice-list [{"voice_id":"pNInz6obpgDQGcFmaJgB","name":"Adam"}, ...] $ ./scripts/tts --voice_id pNInz6obpgDQGcFmaJgB --text "You clamped my claws."
skill.md --- name: elevenlabs description: ElevenLabs text-to-speech allowed-tools: Bash(./scripts/*) --- # ElevenLabs Generate speech from text using the ElevenLabs REST API. Run any command with --help to see arguments and schemas. ### Text-to-Speech - tts — Generate speech from text Input: voice_id, text, model_id, output_path, stability ### Voices - voice-list — List available voices - voice-get — Get voice details Input: voice_id ### Sound Effects - sfx — Generate sound effect from text Input: text, duration_seconds, output_path ### Account - user-info — Get user info and subscription
band.md --- band: elevenlabs icon: 🔊 description: Text-to-speech via ElevenLabs API allow: cli: - curl -s * - jq * net: - api.elevenlabs.io deny: cli: - curl * -X DELETE * - curl * --upload-file * env: secrets: - ELEVENLABS_API_KEY limit: maxCostDollars: 0.25 contract: input: ./schemas/tts-input.json output: ./schemas/tts-output.json execution: target: local-lima ---
03

Execution targets

Available

Lima

Lightweight Linux VMs on macOS

Coming soon

Cloudflare

Dynamic Workers for on-demand V8 isolates

Open source

Pre-alpha concept code

View on GitHub