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.
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.
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. Three steps from zero to a native macOS UI on the command line. No package manager required.
Grab the latest signed build for Apple silicon (arm64), served straight from this site.
Download Suitcase →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 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
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.
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 Pause and ask the user to approve a destructive action before it runs.
Stream status and logs in a native panel during a long-running task.
Ask the user to drop files straight into the UI for processing.
agent-ui create / update / wait / close — every command returns a JSON envelope.
Suitcase utility shows a persistent macOS form the user fills in directly.
No command execution, env exposure, or file access unless explicitly allowlisted; writes and commands need confirmation.
# 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}.
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.”
“A single command conjuring native UI — the kind of indie tool that gets passed around and starred.”
“Small, sharp, and genuinely useful — the sort of utility that quietly earns a permanent spot in your toolbox.”
“Now that agents can summon it on demand, that one clever command feels a decade ahead of its time.”
Praise above is paraphrased and generic — offered in the celebratory spirit of the community reception, not attributed to any specific outlet.