Ballmac UI home

Agent Steering

New

Redirecting an agent while it works: say what to change and when (now, after this step or at the end), and watch each instruction go from queued to applied or dropped. Take back an instruction that has not applied yet.

v1.0.0Updated Oct 25, 2026Ships with a test
What changed

Steer the agent

Working on: Reading the pricing page (step 4 of 9)

  • Skip the competitor pages and focus on our own pricing.

    AppliedNow2:10 pm

  • Also check whether annual billing is cheaper.

    QueuedAfter this step2:12 pm

When should it apply?

Let it finish the step, then change course.

Installation

$ pnpm dlx shadcn@latest add @ballmac/agent-steering

Usage

import { AgentSteering } from "@/components/ballmac/agent-steering"

The full example is in the Code tab above.

Examples

The agent is not running

Steer the agent

Not running

  • Skip the competitor pages.

    AppliedNow2:10 pm

  • Write it as a table.

    DroppedAt the end2:14 pm

When should it apply?

Let it finish the step, then change course.

API reference

PropTypeDefault
notes*

What has been said to the agent so far, newest last.

SteeringNote[]—
running

Whether the agent is working. Instructions can only be sent while it is.

booleantrue
step

What it is doing right now, such as "Reading the pricing page (step 4 of 9)".

string—
defaultMode

The timing that is chosen to begin with.

SteeringMode"after-step"
onSend

Called with the instruction and when it should apply. Reject and the text stays with the reason.

(text: string, mode: SteeringMode) => void | Promise<void>—
onRemove

Called to take back an instruction that has not been applied yet. Reject and it stays with the reason.

(id: string) => void | Promise<void>—

Also accepts the standard attributes of its root element.

Accessibility

KeyAction
TimingA native radio group (Now, After this step, At the end); each has a title that says what it does
StatesQueued, Applied and Dropped are words with icons beside each instruction
ErrorsAn empty instruction, a failed send and a failed take-back are alerts; the text stays in the box
Take backA button named 'Take back: <text>', only on queued instructions
KeyboardCtrl or Command with Enter sends

Use with AI

notes is [{ id, text, mode: now | after-step | end, state: queued | applied | dropped, at? }] and the parent owns it (required). running (default true) and step say what it is doing; instructions can only be sent while it runs. onSend(text, mode) and onRemove(id) may be async: reject and the card keeps the text and says why. defaultMode (default after-step). Ctrl or Command with Enter sends. With the shadcn MCP server set up (guide), ask your agent:

Add the Ballmac UI Agent Steering (@ballmac/agent-steering) to this project with the shadcn MCP, then use it where it fits.

Use it for

  • Letting a person change an agent's course without stopping it
  • Showing the instructions that are queued, applied or dropped

Not for

  • A first prompt before a run starts; use ai-chat or a prompt box
  • Approving a risky action; use approval-card
  • Setting how much it may do alone; use autonomy-dial

Registry JSON: https://ui.ballmac.com/r/agent-steering.json

Credits

Free to use in personal and commercial projects.

Ballmac UI Pro

Need the whole screen, not one piece?

150 premium blocks (dashboards, settings, calendars, mail, shops, onboarding), a private shadcn registry and Figma tokens. Blocks that show data come with loading, empty and error states built in.

Not ready? Try three Pro blocks free

Leave your email and the blocks appear right here, ready to copy. Yours to use in any project.