Suitcase

Give your agent a face.

A lightweight Swift command that spins up native macOS UI on demand — confirmation forms, progress panels, file drops — with full JSON control over every session.

One Prompt, Done

Hand This Prompt to Your Agent

The fastest way to install. Copy the prompt below and paste it into your agent. It downloads the Suitcase command, installs the skill, verifies both — and when everything checks out, pops up a native Suitcase window with a Quit button to confirm.

Agent prompt
Download, install, and verify the Suitcase command and its agent UI skill.

1. Download the binary
   - Download and unpack https://suitcase.richardstelling.com/download/current
       curl -fsSL https://suitcase.richardstelling.com/download/current | tar -xz
   - Put it on your PATH:
       sudo mv ./Suitcase /usr/local/bin/Suitcase
       sudo chmod +x /usr/local/bin/Suitcase

2. Install the skill
   - Install the embedded suitcase-agent-ui skill into known skill locations:
       Suitcase install-ui-skill

3. Verify the command and the skill
   - Confirm the command and version (expect 2.2.0):
       Suitcase --version
   - Confirm the skill is installed and up to date:
       Suitcase check-ui-skill
   - Smoke-test the runtime:
       Suitcase diagnostic --json

4. Show the result in a native Suitcase window
   - Only if `Suitcase --version` printed 2.2.0 AND `Suitcase check-ui-skill`
     reported the skill is installed and up to date, open a confirmation
     window that has a Quit button:
       /usr/local/bin/Suitcase utility \
         --application-identifier "$(uuidgen)" \
         --name "Suitcase Install Check" \
         --window-title "Suitcase Install Check" \
         --window-width 520 --window-height 280 --window-floating \
         --control-type label \
           --control-title "suitcase successfully installed" \
         --control-type text \
           --control-title "Suitcase --version prints 2.2.0 and Suitcase check-ui-skill reports the skill is installed and up to date." \
         --control-type button --control-title "Quit" --control-action ":quit"
   - If either check fails, do NOT open the window — report what failed instead.

Get Suitcase v2.2.0

How to Install

Three steps from zero to a native macOS UI on the command line. No package manager required.

  1. Download the Binary

    Grab the latest signed build for Apple silicon (arm64), served straight from this site.

    Download Suitcase →
  2. Unpack & Drop It in Place

    Extract the archive, then move the binary to /usr/local/bin so it's on your PATH everywhere.

    tar -xzf Suitcase-macos-arm64.tar.gz
    sudo mv ./Suitcase /usr/local/bin/Suitcase
    sudo chmod +x /usr/local/bin/Suitcase
  3. Verify the Install

    Confirm it's live and on the right version.

    Suitcase --version

    Expected output: 2.2.0

Ready for agents? Install the embedded skill next with Suitcase install-ui-skill.

Built for Agentic Workflows

Install the Skill, Then Let Your Agent Build the UI

Suitcase v2 ships with an embedded skill called suitcase-agent-ui (v1.2.0). Once it is installed, an agent in an agentic workflow can spin up task-specific macOS interfaces on demand — confirmation forms, live progress panels, file drops — while keeping full structured JSON control over every session. The skill lives inside the binary, so rebuilding or reinstalling keeps it in sync.

Install & Verify

Suitcase install-ui-skill   # installs the embedded suitcase-agent-ui skill into known skill locations
Suitcase check-ui-skill     # reports whether your installed copies are up to date

What Your Agent Can Do Once the Skill Is Installed

Confirmation Forms

Pause and ask the user to approve a destructive action before it runs.

Live Progress + Log Panels

Stream status and logs in a native panel during a long-running task.

File-Drop Intake

Ask the user to drop files straight into the UI for processing.

Structured JSON Sessions

agent-ui create / update / wait / close — every command returns a JSON envelope.

Visible Utility Forms

Suitcase utility shows a persistent macOS form the user fills in directly.

Deny-by-Default Security

No command execution, env exposure, or file access unless explicitly allowlisted; writes and commands need confirmation.

Concrete Agent Examples

  1. Before deleting a directory, the agent opens a confirmation form and waits for a yes before proceeding.
  2. During a long migration, the agent streams a live progress + log panel so the user can watch it work.
  3. The agent collects form input — name, date of birth — and writes the answers out to Markdown.

Drive a Session Over JSON

# open a structured session from a request file
Suitcase agent-ui create --input request.json

# push a new control value into the open session
echo '{"status":"running"}' | Suitcase agent-ui update sess_8f21

# poll / fetch the result, then finalize
Suitcase agent-ui wait sess_8f21
Suitcase agent-ui close sess_8f21

Every command prints a JSON envelope: {ok, payload, error}.

Press & Attention

Conjuring Native UI From a Single Command Turned Heads

When Suitcase first shipped on 17 April 2020, the idea that a script could summon a real macOS interface with one command struck a chord. The original release drew substantial attention and genuine buzz across the macOS developer and indie-tooling community — and version two carries that history forward.

“Hailed across the macOS dev community as a delightfully clever way to give scripts a face.”
— the macOS dev community, 2020
“A single command conjuring native UI — the kind of indie tool that gets passed around and starred.”
— indie-tooling enthusiasts
“Small, sharp, and genuinely useful — the sort of utility that quietly earns a permanent spot in your toolbox.”
— longtime Suitcase users
“Now that agents can summon it on demand, that one clever command feels a decade ahead of its time.”
— the agentic-tooling crowd

Praise above is paraphrased and generic — offered in the celebratory spirit of the community reception, not attributed to any specific outlet.