> ## Documentation Index
> Fetch the complete documentation index at: https://docs.buttons.sh/llms.txt
> Use this file to discover all available pages before exploring further.

# Introduction

> Buttons is a CLI workflow engine where AI agents are the primary users.

Buttons gives agents deterministic escape hatches. Instead of hoping an LLM follows a multi-step procedure correctly, agents press buttons — self-contained, composable actions with clear inputs, outputs, and status.

Each button wraps a single action: a shell script, an HTTP API call, a Python/Node snippet, or an agent instruction. Create it once with typed arguments and a timeout, press it whenever you need it, get structured JSON output every time.

## Get started

<Columns cols={2}>
  <Card title="Install" icon="download" href="/installation">
    curl, Docker, Go, or Homebrew.
  </Card>

  <Card title="Quick start" icon="rocket" href="/quickstart">
    Create and press your first button in 30 seconds.
  </Card>
</Columns>

## Core Concepts

<Columns cols={2}>
  <Card title="Buttons" icon="square" href="/concepts/buttons">
    The core unit of reusable work.
  </Card>

  <Card title="Drawers" icon="workflow" href="/concepts/drawers">
    Typed workflows that compose buttons.
  </Card>

  <Card title="Registry" icon="boxes" href="/concepts/registry">
    Install and publish shared buttons, pinned per-button by version and content hash.
  </Card>

  <Card title="History" icon="history" href="/concepts/history">
    Local audit history for creates, edits, installs, and updates.
  </Card>
</Columns>

## Button guides

<Columns cols={2}>
  <Card title="Code" icon="code" href="/buttons/code">
    Inline shell, Python, or Node scripts.
  </Card>

  <Card title="HTTP API" icon="globe" href="/buttons/http-api">
    GET/POST with URL templates and typed args.
  </Card>

  <Card title="File import" icon="file" href="/buttons/code">
    Import an existing script file.
  </Card>

  <Card title="Prompt" icon="robot" href="/buttons/prompt">
    Attach an instruction for the consuming agent.
  </Card>
</Columns>

## Workflows

Drawers chain buttons into typed workflows with refs, loops, sub-drawers, waits, and run history.

<Card title="Workflows" icon="workflow" href="/buttons/workflows" horizontal>
  Build multi-step automations from reusable buttons.
</Card>

## Triggers

Triggers run buttons and drawers automatically — on a schedule (cron), on local file changes (watch), or from an inbound webhook. Button triggers fire under `buttons serve`; drawer webhook triggers fire under `buttons webhook listen`.

<Columns cols={2}>
  <Card title="Trigger concept" icon="zap" href="/concepts/triggers">
    How buttons and drawers fire automatically.
  </Card>

  <Card title="Trigger guide" icon="list-checks" href="/buttons/triggers">
    Commands and management model.
  </Card>

  <Card title="Hook" icon="git-branch" href="/buttons/hook">
    Run on local events — design proposal.
  </Card>
</Columns>

## Operations

<Columns cols={2}>
  <Card title="REST API server" icon="server" href="/deployment/rest-api">
    Expose local buttons over HTTP with the same press contract.
  </Card>
</Columns>

## CLI reference

Every command is auto-generated from the Cobra command tree. Flags, examples, and descriptions stay in sync with the binary.

<Card title="CLI reference" icon="terminal" href="/cli/buttons" horizontal>
  Full command reference: create, press, list, history, delete, version, and more.
</Card>

## For deployed agents

Buttons ships as a static binary and a multi-arch Docker image. Bake it into your agent container with one line:

```dockerfile theme={null}
COPY --from=ghcr.io/autonoco/buttons:v0.128.0 /usr/local/bin/buttons /usr/local/bin/buttons
```

Your agent calls `buttons press <name> --json` as a subprocess and gets structured output. No SDK, no library import, no runtime dependency.
