Skip to the page
Tactile UI

Kit parts

Tool call

A job ticket for each tool an agent runs: the tool’s name printed as a legend, a lamp on the stub, the state in words and the time on a small LCD. Its input and output sit on display glass behind a hinge, and when the tool needs your say, Deny and Approve stand at its foot.

On this page
  1. Anatomy
  2. Variants
  3. States
  4. Props and options
  5. Usage notes
  6. Accessibility
  7. Related parts

Seats open in 11 days. Want one email that morning?

Anatomy

The ticket is a face plate with the raised light. Glass is the kit’s display glass. In a pad, the tickets lose their own plates and share one, with a dashed rule where each tears off.

Variants

  • Open · input and output on glass
  • Needs approval · guarded
  • Failed · in words, then raw
  • A pad of three
  • Queued behind another

States

  • Queued
  • Running
  • Needs approval
  • Approved, running
  • Done
  • Failed
  • Denied
  • Stopped

Props and options

NameKindDescription
nameattributeThe tool, printed as it is spelled. Becomes the legend and the ticket’s name.
stateattributeWhere the call is. Lamp white, amber, amber blinking, green, red, or unlit; the words beside it.
guardattributeApprove lifts a hinged cover on the first press and runs on the second. For anything that spends, sends or deletes.
questionattributeThe line above Deny and Approve. Default: “Run issue_refund with these inputs?”.
duration · startedattributeFor a run rendered later: how long it took, or when a running call began.
ask-reasonattributeDeny asks why first. The words travel in the deny event and are printed on the ticket.
retryattributeA failed call gets a Retry key at its foot. No other state has one.
reasonattribute
demoattributeFor static pages.
input · output · errorpropertyPrinted on glass. An error shows its message in words, then the raw value.
EscapekeyboardCloses the line and puts focus back on Deny.
toolCallHTML(options)functionThe ticket as markup, every value escaped.
toolStateText(state, seconds) · stackSummary(states)function“Running · 00:04”, “Done · 2 done · 1 running”.

Usage notes

Open a ticket with its square key to read the input and output. Approve the refund: the cover lifts on the first press, the second runs it. Or Deny it. Reset puts the run back.

Accessibility

  • Each ticket is a group named by its tool and state, so moving through a list of calls reads “Tool call: issue_refund, needs approval”.
  • A change of state is said once through a hidden status line (“issue_refund needs approval”), never repeated while the clock counts.
  • Deny comes before Approve in the tab order, so the safe choice is reached first. Approve keeps focus while it is busy and cannot be pressed twice.
  • Glass that holds input or output is a labelled region you can Tab to and scroll with the arrow keys.
  • Under reduced motion the blink goes steady and the hinge opens at once; the words and the clock are unchanged.

Commit key

A key for work that takes time and must not run twice. It latches below the plate while the work runs, an LED matrix in its face scanning amber, and says how it ended.

Accordion

Printed sections that open in place. Each head ends in a small square key printed +; open, the key latches below the plate and reads −.

Chat

An AI chat as a teleprinter, with restraint: what you type sits in a recess; the answer prints on a perforated slip with an amber lamp at the print head; code comes up on display glass. Composer with attachments and a send key that becomes Stop.